2014-03-27 21 views
0

以及我有很多圖像作爲我的佈局中的按鈕,我希望使用setOnTouchListener和Switch Case來減少編碼。 但我看到了。如果我使用帶圖像ID的開關盒圖像需要雙擊或多次點擊才能觸發事件。SetOnTouchListener需要雙擊,如果我在圖像Id中使用Switch Switch

這是工作,但很長的編碼: 它使每個圖像很長的編碼。

ImageView imageView1 = (ImageView) findViewById(R.id.image1); 

       // set the ontouch listener 
       imageView1.setOnTouchListener(new OnTouchListener() { 
          //events 
          } 

這就是我想要的,但不能正常工作:

所以,我決定用開關箱stament。

      public void btnClicker(View v) { 
          switch (v.getId()) { 
          case R.id.image1: 
          imagetouch(image1); 
          break; 

這是一個XML

<ImageView 
        android:id="@+id/image1" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:clickable="true" 
        android:onClick="btnClicker" 
        android:src="@drawable/kupa2" /> 

這是我imagetouch方法:

public void imagetouch(ImageView image) { 
     image.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 

       case MotionEvent.ACTION_DOWN: { 

        ImageView view = (ImageView) v; 
        // overlay is black with transparency of 0x77 (119) 
        view.getDrawable().setColorFilter(0x77000000, 
          PorterDuff.Mode.SRC_ATOP); 
        view.invalidate(); 

        break; 
       } 
       case MotionEvent.ACTION_UP: { 

        //my events 

       } 
       case MotionEvent.ACTION_CANCEL: { 
        ImageView view = (ImageView) v; 
        // clear the overlay 
        view.getDrawable().clearColorFilter(); 
        view.invalidate(); 

        break; 
       } 
       } 

       return true; 
      } 
     }); 
    } 
+1

您正在使用2觸摸監聽針對1圖片ID 1觸發第二個和第二個執行你的功能 –

回答

0

其實我有implements OnTouchListener

例如,

修復210
public class myclass extends Activity implements OnTouchListener{ 

,然後實現觸摸監聽器:

@Override 
    public boolean onTouch(View v, MotionEvent event) { 
      switch(e.getAction){ 
      case (MotionEvent.TOUCH_DOWN) 
       // TO DO smthg. 
       break; 
      } 

     } 

,比活動上創建方法編寫代碼:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
. 
. 
. 
    ImageView iv1 = (ImageView) findViewById(R.id.ImageView); 
    iv1.setOnTouchListener(this);