2012-01-26 84 views
2

嗨,我最近開始嘗試使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); 
    } 
} 

回答

13

MotionEvent類有一個getAction方法,指定什麼樣的事件做你的onTouchEvent方法剛剛收到。有三種動作,你會更頻繁地使用:

  • ACTION_DOWN,它告訴你,用戶剛剛把他的手指放在屏幕上;
  • ACTION_MOVE,它告訴用戶仍然握着他的手指在屏幕上;
  • ACTION_UP,它告訴用戶他的手指離開了屏幕。

根據您的偵聽器剛剛獲得什麼樣的事件,您可以更改代碼的行爲。欲瞭解更多信息,請查看documentation。希望這可以幫助。

+0

謝謝男人:)我得到它的工作 – user1068310