Android触控和触控发布时

时间:2012-01-26 12:20:35

标签: java android touch

嗨,我最近开始尝试制作Android应用程序 并且目前已经制作了一些简单的,但是,我仍然对触摸方法感到困惑。

我要做的是:当您的手指按住屏幕时,x会递增,但是当您松开手指时它会停止。问题是我找不到任何方法或任何方法。

这是我的代码:

import java.util.Timer;
import java.util.TimerTask;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class zombView extends SurfaceView{
    private Bitmap bmp, grass, joystick;
    private SurfaceHolder holder;
    Timer t = new Timer();
    float x = 0, y = 0;
    boolean forward;
    public zombView(Context context) {
          super(context);
          holder = getHolder();
          holder.addCallback(new SurfaceHolder.Callback() {

                 @Override
                 public void surfaceDestroyed(SurfaceHolder holder) {
                 }

                 @Override
                 public void surfaceCreated(final SurfaceHolder holder) {


                     t.scheduleAtFixedRate(new TimerTask(){
                         public void run(){
                        Canvas c = holder.lockCanvas(null);
                        onDraw(c);
                        holder.unlockCanvasAndPost(c);
                        if(forward == true){
                            x++;
                        }
                     }
                 },200,200);
                 }
                 @Override
                 public void surfaceChanged(SurfaceHolder holder, int format,
                               int width, int height) {
                 }
          });
          bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
          grass = BitmapFactory.decodeResource(getResources(), R.drawable.grassland);
          joystick = BitmapFactory.decodeResource(getResources(), R.drawable.joystic);
    }

    @Override
    protected void onDraw(Canvas canvas) {
          canvas.drawColor(Color.BLACK);
          canvas.drawBitmap(grass, getWidth() - getWidth(), getHeight() - getHeight(), null);
          canvas.drawBitmap(joystick, getWidth() - getWidth(),joystick.getHeight(), null);
          canvas.drawBitmap(bmp, x, y, null);
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
          if(event.getX() > 10 && event.getX() < 1000){
              if(event.getY() > 10 && event.getY() < 1000){
                  x++;
              }
          }
          return super.onTouchEvent(event);
    }
}

1 个答案:

答案 0 :(得分:14)

MotionEvent类有一个getAction方法,用于指定您的onTouchEvent方法刚收到的事件类型。您将更频繁地使用三种操作:

  • ACTION_DOWN,告诉您用户刚刚将手指放在屏幕上;
  • ACTION_MOVE,告诉用户仍然将手指放在屏幕上;
  • ACTION_UP,表示用户已将手指从屏幕上移开。

根据您的听众刚刚获得的事件类型,您可以更改代码的行为。有关更多信息,请查看documentation。希望这会有所帮助。