1. 程式人生 > >Android滑動螢幕使螢幕上的圖形移動

Android滑動螢幕使螢幕上的圖形移動

Android瘋狂講義第三章第一個示例是控制飛機移動,裡面的監聽器是用鍵盤的,但是我沒見過有鍵盤的手機,所以自己改成了滑動螢幕控制飛機移動。

1首先,要準備兩張圖片,一個背景,一個飛機。

我直接用window自帶的畫圖,畫了兩個圖片

恩,,,這就是俺家的飛機

這就是背景,,顏色有點汙。

2直接把這兩個圖片複製貼上到drawable資料夾下。


public class PlaneView extends View {
    public float currentX;
    public float currentY;
    Bitmap plane;

    public PlaneView(Context context) {
        super(context);
        plane= BitmapFactory.decodeResource(context.getResources(),R.drawable.a);
        setFocusable(true);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint p=new Paint();
        canvas.drawBitmap(plane,currentX,currentY,p);
    }
}

自己建立一個view類,就是飛機的檢視,的確和書上的一樣

MainActivity是這個樣子的:

public class FourButton extends AppCompatActivity {
    private int speed=12;
    private float x1,x2,y1,y2;
    PlaneView planeView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        planeView = new PlaneView(this);
        setContentView(planeView);
        planeView.setBackgroundResource(R.drawable.b);
        WindowManager windowManager=getWindowManager();
        final Display display=windowManager.getDefaultDisplay();
        int screenWidth=display.getWidth();
        int screenHeight=display.getHeight();
        planeView.currentX=screenWidth/2;
        planeView.currentY=screenHeight/2;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if(event.getAction()==MotionEvent.ACTION_DOWN){
            x1=event.getX();
            y1=event.getY();
        }
        if(event.getAction()==MotionEvent.ACTION_UP){
            x2=event.getX();
            y2=event.getY();
            if(y1-y2>50){
                //up
                planeView.currentY-=speed;
            }
            if(y2-y1>50){
                //down
                planeView.currentY+=speed;
            }
            if(x1-x2>50){
                //left
                planeView.currentX-=speed;
            }
            if(x2-x1>50){
                //right
                planeView.currentX+=speed;
            }
        }
        planeView.invalidate();
        return true;
    }
}

等結束了,就可以除錯了,方塊可以按照我們滑動的方向移動。