java - Android同时触摸和触摸释放

标签 java android touch

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

我想做的是:当您的手指按住屏幕时,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);
    }
}

最佳答案

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

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

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

关于java - Android同时触摸和触摸释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9018022/

相关文章:

java - ANT - 如何使用 exclude,excludesfile 与 javac?

java - JSP Struts 到 Velocity Struts 的转换

java - 在 JBoss MQ 中创建队列

java - fragment 自行重新实例化并添加到 Activity 中

javascript - iOS 通过 Javascript 触摸设备的视口(viewport) x/y 坐标

Java Swing GUI 应用程序完全空白,没有任何内容,而按钮添加到面板中

android - AutoCompleteTextView 不适用于自定义 ArrayAdapter

java - 在 Eclipse 中添加编辑文本时出错

Qt 5.11 : Touch input inverted in my application

c# - 向上、向下、向左或向右滑动时,如何调用另一个类中的方法? Unity2D