Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓同时触摸和触摸释放_Java_Android_Touch - Fatal编程技术网

Java 安卓同时触摸和触摸释放

Java 安卓同时触摸和触摸释放,java,android,touch,Java,Android,Touch,嗨,我最近开始尝试制作android应用程序 现在我已经做了一些简单的,但是,我仍然对触摸法感到困惑 我想做的是:当你的手指放在屏幕上时,x会增加,但当你松开手指时,它就会停止。问题是我找不到任何方法或任何方法来做这件事 这是我的密码: import java.util.Timer; import java.util.TimerTask; import android.content.Context; import android.graphics.Bitmap; import android.

嗨,我最近开始尝试制作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);
    }
}
import java.util.Timer;
导入java.util.TimerTask;
导入android.content.Context;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.graphics.Canvas;
导入android.graphics.Color;
导入android.view.MotionEvent;
导入android.view.SurfaceHolder;
导入android.view.SurfaceView;
公共类zombView扩展了SurfaceView{
私人位图,草,操纵杆;
私人土地持有人;
定时器t=新定时器();
浮动x=0,y=0;
布尔向前;
公共zombView(上下文){
超级(上下文);
holder=getHolder();
holder.addCallback(新的SurfaceHolder.Callback(){
@凌驾
公共空间表面覆盖(表面覆盖物持有人){
}
@凌驾
已处理的公共空隙表面(最终表面层持有人){
t、 scheduleAtFixedRate(新TimerTask(){
公开募捐{
Canvas c=holder.lockCanvas(空);
昂德劳(c);
支架。解锁帆布吊杆(c);
如果(正向==真){
x++;
}
}
},200,200);
}
@凌驾
公共无效表面更改(表面文件夹持有者,整数格式,
整数宽度,整数高度){
}
});
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.ic_启动器);
grass=BitmapFactory.decodeResource(getResources(),R.drawable.grades);
操纵杆=位图工厂.decodeResource(getResources(),R.drawable.joystic);
}
@凌驾
受保护的void onDraw(画布){
画布。drawColor(颜色。黑色);
drawBitmap(grass,getWidth()-getWidth(),getHeight()-getHeight(),null);
drawBitmap(操纵杆,getWidth()-getWidth(),操纵杆,getHeight(),null);
drawBitmap(bmp,x,y,null);
}
@凌驾
公共布尔onTouchEvent(运动事件){
if(event.getX()>10&&event.getX()<1000){
if(event.getY()>10&&event.getY()<1000){
x++;
}
}
返回super.onTouchEvent(事件);
}
}

MotionEvent类有一个
getAction
方法,该方法指定您的
onTouchEvent
方法刚刚收到的事件类型。您将更经常地使用以下三种操作:

  • ACTION\u DOWN
    ,它告诉您用户刚刚将手指放在屏幕上
  • ACTION\u MOVE
    ,表示用户仍将手指放在屏幕上
  • ACTION\u UP
    ,表示用户已将手指从屏幕上取下
根据侦听器刚刚获取的事件类型,您可以更改代码的行为。有关更多信息,请查看。希望这有帮助