綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 想問一下關於ontouchevent事件的程式碼

[複製連結] 查看: 1189|回覆: 4|好評: 0
跳轉到指定樓層
樓主
qqfish450901 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2012-3-12 23:05

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
以下是我參考網路上的文章寫出來的觸碰移動物件的程式碼

public class MoveTest1Activity extends Activity {
private MyCanvasDraw cDraw;
private LinearLayout layout;
private TextView tv;
private int x=200;
private int y=200;
Rect rect = new Rect();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        cDraw=new MyCanvasDraw(this);
        layout=(LinearLayout)findViewById(R.id.tableLayout1);
        tv=(TextView)findViewById(R.id.textView1);
        layout.addView(cDraw);
      
        
                                
    }
   
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    int X=(int)event.getX();
    int Y=(int)event.getY();
    float dx;
        float dy;
    switch(event.getAction())
    {
      case MotionEvent.ACTION_DOWN:
        tv.setText(X+":"+Y);
        if(this.x==event.getX()&& this.y==event.getY())
        {
                this.x=X;
                this.y=Y;
                cDraw.invalidate();
                break;
        }
      case MotionEvent.ACTION_MOVE:
        tv.setText(X+":"+Y);
        dx=event.getX()-this.x;
        dy=event.getY()-this.y;
        this.x+=dx;
        this.y+=dy;
        cDraw.invalidate();
        break;
      case MotionEvent.ACTION_UP:
        tv.setText(X+":"+Y);

        break;
    }
        
    return super.onTouchEvent(event);
   
  }
  public class MyCanvasDraw extends View
  {
   
    public MyCanvasDraw(Context context) {
      super(context);
      
    }

    @Override
    protected void onDraw(Canvas canvas) {
      super.onDraw(canvas);
      Paint mPaint=new Paint();
      mPaint.setAntiAlias(true);
      mPaint.setColor(Color.RED);
      
      canvas.drawCircle(x, y, 50, mPaint);
         
    }
  }
}

但是執行後圖片按我點下去的xy軸座標有點誤差(就滑鼠可能點在(20,20)但圖片在(40,40)處)
還有我現在是點螢幕上的任何地方,圖片都會跟著移過去
該怎麼設定說要我點再圖騙上的時候 圖片才會跟著點擊的地方移動?
麻煩各位前輩了!
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
george310909 | 收聽TA | 只看該作者
發表於 2012-3-14 09:48
canvas畫矩形或點陣圖的話
都以左上角為基準點
另外照你的程式碼來看
你沒有把點擊位置改成中心位置
至於怎麼改...
你可以試著把x和y再減掉r/2

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
guoty + 1 + 1 讚一個!

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| qqfish450901 | 收聽TA | 只看該作者
發表於 2012-3-16 01:41

大概了解了!
另外請問一下
如果是使用IMAGEVIEW的話
程式寫法也是這樣寫就行了嗎?
謝謝解答!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
george310909 | 收聽TA | 只看該作者
發表於 2012-3-16 10:31
是阿
只不過要喬位置  我比較喜歡用畫布
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
 樓主| qqfish450901 | 收聽TA | 只看該作者
發表於 2012-3-16 22:57
george310909 發表於 2012-3-16 10:31
是阿
只不過要喬位置  我比較喜歡用畫布

OK了解了 謝謝你哦!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則