나는 장치의 화면을 만질 때 볼이 나오고 움직이는 프로그램을 만들려고합니다. 나중에 MyImage 클래스의 인스턴스가 여러 개 필요할 것이므로 별도의 클래스에 이미지를 넣습니다. 화면을 터치 할 때마다 다른 볼이 나올 수 있습니다.다른 클래스의 캔버스에 객체를 그리는 방법은 무엇입니까?
이미지가 포함 된 MyImage 클래스가 있습니다. 이 클래스는 View 클래스로 확장되었습니다. override 메서드 onDraw는 이미지가 움직이는 곳입니다 (화면에서 튀는).
public class MyImage extends View {
Bitmap g;
float posY = 0;
float posX = 0;
boolean ud = true, lr = true;
public MyImage(Context context) {
super(context);
g = BitmapFactory.decodeResource(getResources(), R.drawable.ba);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(g, posX, posY, null);
...... //code for animating
invalidate();
}
}
이 클래스의 객체를 만들어 MainActivity 클래스의 다른 캔버스에 애니메이션으로 적용하려고합니다.
public class MainActivity extends Activity implements OnTouchListener{
..... //declarations
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mySurfaceView = new MySurfaceView(this);
mySurfaceView.setOnTouchListener(this);
setContentView(mySurfaceView);
}
@Override
protected void onPause() {
....
}
@Override
protected void onResume() {
....
}
Thread myThread;
Canvas canvas;
public class MySurfaceView extends SurfaceView implements Runnable{
SurfaceHolder myHolder;
boolean isRunnable = false;
public MySurfaceView(Context context) {
super(context);
myHolder = getHolder();
}
public void pause(){
....
}
public void resume(){
isRunnable = true;
myThread = new Thread(this);
myThread.start();
}
@Override
public void run() {
while(isRunnable){
if(!myHolder.getSurface().isValid()){
continue;
}
canvas = myHolder.lockCanvas();
canvas.drawRGB(100, 0, 0);
myHolder.unlockCanvasAndPost(canvas);
}
}
}
@Override
public boolean onTouch(View v, MotionEvent me) {
.....
switch(me.getAction()){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
mi = new MyImage(this);
canvas.drawBitmap(..) ;//Is it possible to convert object to Bitmap?
break;
}
return true;
}
}
문제
내가 내가 캔버스로 그릴 수 있도록 myimage을의 객체가 비트 맵으로 만들어 줘야 잘 모릅니다이다. 또한 MyImage 클래스에서 이미 캔버스를 가지고 있기 때문에 내가 한 일이 옳은지 확실하지 않습니다. 캔버스는 주요 활동의 캔버스를 덮을 것입니다. 누구든지 도움이 될 수 있습니까?