java - ImageView MotionEvent如果有两个指针,则停止ACTION_UP

标签 java android motionevent

在我的 Activity 中,我有一个ImageView。它具有捏缩放功能。

当我触摸 ImageView 时,我会显示缩略图布局。

但是当我捏住 ImageView 时,缩略图布局就会显示。我想阻止它吗?

我该怎么做?

这是我显示缩略图布局的代码:

image.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Boolean openThumbnails=true;
        if(event.getAction() == MotionEvent.ACTION_UP && openThumbnails){
            Log.e("event.getAction()", "MotionEvent.ACTION_UP");
            if(thumbnailsLayout.getVisibility()==View.GONE && header.getVisibility()==View.GONE && openThumbnails){
                thumbnailsLayout.setVisibility(View.VISIBLE);
                header.setVisibility(View.VISIBLE);
                header.bringToFront();
            }
            else{
                thumbnailsLayout.setVisibility(View.GONE);
                header.setVisibility(View.GONE);
            }
        }
        else if(event.getAction() == MotionEvent.ACTION_DOWN){
            Log.e("event.getAction()", "MotionEvent.ACTION_DOWN");
            return true;
        }
        else if(event.getAction()==MotionEvent.ACTION_MOVE){
            Log.e("openThumbnails before", openThumbnails.toString());
            openThumbnails=false;        
            Log.e("openThumbnails and after", openThumbnails.toString());
        }
        return false;
    }
});

最佳答案

您的 openThumbnails 始终为 true。您可以在方法开始时设置它。每个触摸事件(例如 Action_up、action_move)都将 openThumbnail 设置为 true。这就是为什么你总是表现出来。

image.setOnTouchListener(new OnTouchListener() {
Boolean openThumbnails=true;
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {

                        if(event.getAction() == MotionEvent.ACTION_UP && openThumbnails){
                            Log.e("event.getAction()", "MotionEvent.ACTION_UP");
                            if(thumbnailsLayout.getVisibility()==View.GONE && header.getVisibility()==View.GONE && openThumbnails){
                                thumbnailsLayout.setVisibility(View.VISIBLE);
                                header.setVisibility(View.VISIBLE);
                                header.bringToFront();
                            }
                            else{
                                thumbnailsLayout.setVisibility(View.GONE);
                                header.setVisibility(View.GONE);
                            }
                        }
                        else if(event.getAction() == MotionEvent.ACTION_DOWN){
                            Log.e("event.getAction()", "MotionEvent.ACTION_DOWN");
                            return true;
                        }
                        else if(event.getAction()==MotionEvent.ACTION_MOVE){
                            Log.e("openThumbnails before", openThumbnails.toString());
                            openThumbnails=false;       
                            Log.e("openThumbnails and after", openThumbnails.toString());
                        }
                        return false;
                    }
                });

关于java - ImageView MotionEvent如果有两个指针,则停止ACTION_UP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19814170/

相关文章:

java - ListView 更新单行

android - 如何在 Android 中从 4 边更改 View 的大小?

android - 如何设置点击计时器?

java - 使用 ByteBuddy : "class redefinition failed: attempted to add a method" 重新定义方法时出错

java - 如何获取 super 接口(interface)的参数化类型的实际类型?

java - JNI 段错误

java - 处理长时间运行的 EDT 任务(f.i. TreeModel 搜索)

android - 如何解决 flutter 中的 build.gradle 错误。如何解决此错误 "A problem occurred evaluating project ' :app'. > Malformed\uxxxx 编码。”

android - 如何使用 FusedLocationProvider Api 和 Google 客户端检查位置是否可用?

java - 如何仅在特定时间调用函数