2017-08-28 128 views
-1

我怎樣才能設置雙擊喜歡在Android上的圖像(如Instagram的照片)圖像動畫像

我有以下代碼在這裏:

final ImageView photo_show = (ImageView) findViewById(R.id.imgv_photo);// this is main image 
    final ImageView imgv_like_photo = (ImageView) findViewById(R.id.imgv__like_photo);// this is heart image 
    imgv_musics_activity_like_photo.setVisibility(View.GONE); 

    photo_show.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      photo_show.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        like(imgv_musics_activity_like_photo); 
       } 
      }); 
     } 
    }); 

public void like(View view) { 
    TranslateAnimation animate = new TranslateAnimation(0, view.getWidth(), 0, 0); 
    animate.setDuration(500); 
    animate.setFillAfter(true); 
    view.startAnimation(animate); 
    view.setVisibility(View.VISIBLE); 
} 

和xml:

  <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center"> 

      <ImageView 
       android:id="@+id/imgv_photo" 
       android:layout_width="250dp" 
       android:layout_height="250dp" 
       android:layout_centerHorizontal="true" 
       android:contentDescription="@string/image_photo" 
       tools:src="@drawable/no_photo" /> 


      <ImageView 
       android:id="@+id/imgv_like_photo" 
       android:layout_width="250dp" 
       android:layout_height="250dp" 
       android:layout_centerHorizontal="true" 
       android:contentDescription="@string/image_photo" 
       android:src="@drawable/ic_like" /> 


     </RelativeLayout> 

此代碼僅在雙擊時在圖像上顯示心臟。例如,我想在2秒後隱藏。 你們可以給我一個方法嗎?

+1

此鏈接可能會幫助你https://stackoverflow.com/questions/5191456/how-can-i-place-double-click-event-on-imageview-in-android –

回答

2

對於雙擊的檢測,您應該使用GestureDetector。請參見this SO question,與您的情況類似。

關於隱藏,您可以添加第二個動畫,啓動延遲時間爲兩秒。

+0

如何設置一個延遲like_show( imgv_musics_activity_like_photo);和like_hide(imgv_musics_activity_like_photo); – emen

+0

使用https://developer.android.com/reference/android/view/animation/Animation.html#setStartOffset(long)。 –

2

聲明全局變量:

boolean isDoubleTap = false; 
Handler mHandler = new Handler(Looper.getMainLooper()); 

onClick你可以創建一個Runnable,如:

@Override 
public void onClick(View v) { 
    photo_show.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Runnable doubleTapRunnable = new Runnable() { 
       @Override 
       public void run() { 
        isDoubleTap = false; 
       } 
      }; 
      if (isDoubleTap) { 
       //your logic for double click action 
       like(imgv_musics_activity_like_photo); 
       isDoubleTap = false; 
      } else { 
       isDoubleTap=true; 
       mHandler.postDelayed(doubleTapRunnable, 500); // you can adjust delay in oder to check double tap 
      } 
     } 
    }); 
} 

注意:您還可以使用OnDoubleTapListener

+0

如何設置處理程序?error -__- – emen

+0

handler = new Handler(Looper.getMainLooper()) –

+0

從上面的回答中,我想你也想在x時間後隱藏。爲此,您必須創建一個新的runnable並在'x'時間後隱藏運行它。在'like'方法中創建這個 –