0
我正在嘗試創建一個程序,其中當我觸摸設備的屏幕時,一個球就會彈出並且會生成動畫。我把圖像放在一個單獨的類中,因爲後來我將需要MyImage類的多個實例,所以無論何時我觸摸屏幕,都會出現另一個球。如何繪製一個對象來自另一個類的畫布?
我有MyImage類,其中它包含一個圖像。這個類被擴展到View類。覆蓋方法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類中,我已經有了一個畫布,我認爲它將覆蓋主要活動的畫布。 任何人都可以幫忙嗎?