Я пытаюсь создать приложение для схем. Основной экран в основном там, где схемы будут разработаны с использованием нескольких компонентов. Чтобы выбрать компоненты, есть кнопка, которая приведет пользователя к следующему действию. В этом упражнении отображаются все компоненты, которые вы можете выбрать. Поэтому у меня есть два класса активности и один класс Surface View. Основной класс активности называется CircuitDesigner, и он установлен в contentview для класса viewview, называемого GameView. Второй класс активности называется Гейтс.Android: добавление нескольких экземпляров одного и того же изображения
Так, например, из класса gates, если я выбираю компонент «А», я вернусь к основному действию, и я смогу разместить туда ворота. Хотя это работает с использованием следующего кода. Я хочу, как добавить несколько и ворота. Поэтому каждый раз, когда я нажимаю кнопку «и», я могу добавить один и затвора. Также как игра обороны башни, где вы можете добавить несколько башен на экран.
Также, чтобы сообщить вам, если это глупый вопрос, хорошо несите меня, поскольку я просто изучаю все это в данный момент.
Их код выглядит следующим образом
public class CircuitDesigner extends Activity implements OnTouchListener, OnClickListener{
GameView Gameview;
float x, y;
boolean and = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Gameview = new GameView (this);
FrameLayout Game = new FrameLayout(this);
Gameview.setOnTouchListener(this);
x=0;
y=0;
LinearLayout GameWidgets = new LinearLayout (this);
Button AndGate = new Button(this);
TextView MyText = new TextView(this);
AndGate.setWidth(300);
AndGate.setText("AndGate");
MyText.setText("rIZ..i");
GameWidgets.addView(MyText);
GameWidgets.addView(AndGate);
Game.addView(Gameview);
Game.addView(GameWidgets);
setContentView(Game);
AndGate.setOnClickListener(this);
}
public void onClick(View v) {
Intent i = new Intent(this, Gates.class);
i.putExtra("circuit", "and");
startActivityForResult(i, 1);
// re-starts this activity from game-view. add this.finish(); to remove from stack
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(data.getExtras().containsKey("andInfo")){
and = true;
}
}
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
x = event.getX();
y = event.getY();
return true;
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Gameview.pause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Gameview.resume();
}
public class GameView extends SurfaceView implements Runnable {
SurfaceHolder ourHolder;
Thread ourThread = null;
boolean isRunning = false;
public GameView(Context context) {
super(context);
// TODO Auto-generated constructor stub
ourHolder = getHolder();
}
public void pause(){
isRunning = false;
while(true){
try {
ourThread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
ourThread = null;
}
public void resume(){
isRunning = true;
ourThread = new Thread(this);
ourThread.start();
}
public void run() {
// TODO Auto-generated method stub
while (isRunning) {
if (!ourHolder.getSurface().isValid())
continue;
Canvas canvas = ourHolder.lockCanvas();
canvas.drawRGB(0, 0, 0);
if(x != 0 && y != 0 && and == true){
Bitmap test = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
canvas.drawBitmap(test, x-(test.getWidth()/2), y-(test.getHeight()/2), null);
}
ourHolder.unlockCanvasAndPost(canvas);
}
}
}
}
И Gates Класс
public class Gates extends Activity implements OnClickListener{
Button bAnd;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.gates);
bAnd = (Button) findViewById(R.id.bAnd);
bAnd.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = getIntent();
String msg = i.getStringExtra("circuit");
switch (v.getId()) {
case R.id.bAnd:
i.putExtra("andInfo", "and");
setResult(RESULT_OK, i);
finish();
break;
default:
break;
}
}
}