【问题标题】:Image animate like图像动画
【发布时间】:2017-08-28 08:14:38
【问题描述】:

如何设置双击来点赞 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 秒后隐藏。 各位大神能给个方法吗?

【问题讨论】:

标签: android instagram


【解决方案1】:

声明全局变量:

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

【讨论】:

  • handler = new Handler(Looper.getMainLooper())
  • 从上面答案的评论中,我想你也想在 x 时间后隐藏。为此,您必须创建一个新的可运行对象并在 x 隐藏时间之后运行它。在like 方法中创建它
  • 只写上面的语句,即Handler handler = new Handler(Looper.getMainLooper())下面boolean isDoubleTap = false;
  • 编辑了我的答案,希望能解决你的问题。
【解决方案2】:

为了检测双击,您应该使用GestureDetector。请参阅this SO question,这与您的情况类似。

关于隐藏,可以添加第二个动画,开始延迟两秒。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
  • 2014-02-22
  • 2013-04-30
  • 2014-08-31
  • 2013-05-26
  • 2013-12-16
  • 1970-01-01
相关资源
最近更新 更多