2012-01-26 3 views
2

안녕하세요, 최근에 안드로이드 앱을 만들려고 시작했습니다. 몇 가지 간단한 것들을 만들었지 만, 여전히 터치 메서드와 혼동 스럽습니다.터치 및 터치 릴리즈 중 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 클래스는 이벤트의 종류가 onTouchEvent 방법 그냥받은 짓을 지정하는 getAction 방법을 가지고 :

여기 내 코드입니다. 더 자주 사용하는 세 가지 조치가 있습니다.

  • ACTION_DOWN 이는 사용자가 방금 손가락을 화면에 대었다는 것을 알려줍니다.
  • ACTION_MOVE 이는 사용자가 여전히 화면에 손가락을 들고 있음을 나타냅니다.
  • ACTION_UP. 사용자가 화면에서 손가락을 떼어 냈다는 것을 알립니다.

청취자가 방금 얻은 이벤트의 유형에 따라 코드 동작을 변경할 수 있습니다. 자세한 내용은 documentation을 확인하십시오. 희망이 도움이됩니다.

+0

감사합니다 :) 나는 그것을 작동 시켰어. – user1068310