2012-11-09 31 views
1

編程方式執行另一個觸摸事件我正在使ImageView拖放與創建重複的實例通過觸摸原來的一個。當一個觸摸事件發生在android

我有一個水平佈局包含許多小圖像。當我觸摸它時,它會創建它的重複實例,並將它放在屏幕上的那個位置略有不同。

現在,我想繼續觸摸事件,但想完成在原始ImageView上完成的第一個觸摸事件,並且想要啓動它的重複實例的觸摸事件。但沒有消除fingure。

我做了以下內容:

img22.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     ImageView img2 = null; 

     switch (event.getActionMasked()) { 
     case MotionEvent.ACTION_DOWN : 
... ... 
... ... 
      Bitmap bmp2 = BitmapFactory.decodeResource(ImageListActivity.this.getResources(), 
       R.drawable.img2); 
      //ImageView 
      img2 = new ImageView(ImageListActivity.this); 
      img2.setImageBitmap(bmp2); 
      img2Param.setMargins((rx-10-x), (ry-10-y-50), 0, 0); 
      img2.setLayoutParams(img2Param); 

      img2.setOnTouchListener(new OnTouchListener() { 
        @Override 
        public boolean onTouch(View v, MotionEvent event) { 


        System.out.println(" --- img2 On Touch Called ---"); 

        RelativeLayout.LayoutParams img2Param = 
        (RelativeLayout.LayoutParams) v.getLayoutParams(); 
        img2Param.setMargins((int)event.getRawX()-10, (int)event.getRawY()-60, 0, 0); 
        v.setLayoutParams(img2Param); 
        v.invalidate(); 
         return true; 
        } 
       }); 
      long downTime2 = SystemClock.currentThreadTimeMillis(), 
        eventTime2 = SystemClock.currentThreadTimeMillis() + 10; 
      float x2 = 0.0f, y2 = 0.0f; 
      int metaState2 = 0; 
      MotionEvent motionEvent2 = MotionEvent.obtain(
        downTime2, eventTime2, MotionEvent.ACTION_POINTER_1_UP, x2, y2, 1); 
      v.dispatchTouchEvent(motionEvent2); 

      long downTime = SystemClock.currentThreadTimeMillis(), 
        eventTime = SystemClock.currentThreadTimeMillis();// + 5000; 
      float x1 = 0.0f, y1 = 0.0f; 
       int metaState = 0; 
      MotionEvent motionEvent = MotionEvent.obtain(
        downTime, eventTime, MotionEvent.ACTION_MOVE, x1, y1, 1); 
      img2.onTouchEvent(motionEvent); 
... ... 
... ... 

任何一個可以給我關於繼續觸摸事件,並改變ImageView的實例理念。

+0

此問題已經在以下[在從其他視圖拖動時檢測到視圖上的觸摸事件] [1]中得到解答。 問候 [1]:http://stackoverflow.com/questions/12980156/detect-touch-event-on-a-view-when-dragged-over-from-other-view/13505174#13505174 – Luis

+0

是的,路易斯,我爲這個問題設置了賞金,你知道了,但我知道..但它與此不一樣。 –

回答

3

這聽起來像你想要做的是點擊「Image1」,讓這個動作創建一個「Image2」,並繼續觸摸手勢,就好像它被點擊「Image2」?

而不是這樣做,它可能是一個更好的主意,有一個觸摸表面 - 一個不可見的視圖分層上方這些視圖捕獲觸摸事件,然後根據需要執行操作 - 這將意味着你可以繼續你的手勢「關閉「圖像沒有創建一個新的手勢。

0

如果我理解這個問題的權利,你需要回報在img2onTouch方法錯誤以觸摸返回調度(img22)。