2017-08-28 132 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'方法中创建这个 –