如何设置双击以在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秒后隐藏,例如。 你们能帮我个忙吗?
答案 0 :(得分:2)
要检测双击,您应该使用GestureDetector
。请参阅this SO question,这与您的情况类似。
关于隐藏,您可以添加第二个动画,启动延迟为两秒。
答案 1 :(得分: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。