繁体   English   中英

当应用处于发布模式时,Android OnTouch侦听器不起作用

[英]Android OnTouch Listener Doesn't work when App is on Release mode

在我的一项活动中,我有一个ImageView,将其设置为onTouchListener,以便在屏幕上移动它,问题是,当我在调试模式下对其进行测试时,一切正常,并且我看到ImageView正在移动。屏幕上,我也可以单击它。 但是,当我为发布模式创建签名的APK并在同一设备上对其进行测试时,它没有响应!

图像视图位于RelativeLayout内部,并配置为:

 <ImageView
    android:id="@+id/imageView"
    android:layout_width="90dp"
    android:layout_height="90dp"
    android:layout_centerInParent="true"
    android:src="@drawable/app_launcher"
    android:clickable="true"
 />

的代码是:(此代码位于onCreate方法中)

imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (gestureDetector.onTouchEvent(event))
            {
                Toast.makeTest(MainActivity.this, 
                                  "imageView clicked!",Toast.LENGTH_LONG).show();
                return true;
            } else {
                switch (event.getActionMasked()) {
                    case MotionEvent.ACTION_DOWN:
                        initPosX= v.getX();
                        initPosY= v.getY();

                        initTouchX= event.getRawX();
                        initTouchY= event.getRawY();

                        lastAction= event.getAction();

                        return true;

                    case MotionEvent.ACTION_MOVE:
                        v.setX(initPosX+ (int)(event.getRawX() - initTouchX));
                        v.setY(initPosY+ (int)(event.getRawY() - initTouchY));

                        lastAction= event.getAction();
                        return true;

                    case MotionEvent.ACTION_UP:
                        v.setVisibility(View.VISIBLE);
                        lastAction= event.getAction();
                        return true;
                }
            }
            return true;

        }
    });

我也有一个GestureDetectorListener来检测singleTap:

private class GestureListener extends GestureDetector.SimpleOnGestureListener{
    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        return true;
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        return true;
    }
}

在创建时声明手势类:

final GestureDetector mGesDetect = new GestureDetector(this, new GestureListener());

之后,将图像触摸列表器如下图所示:

 imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            mGesDetect.onTouchEvent(event);
            return true;
        }
    });


   private class GestureListener extends GestureDetector.SimpleOnGestureListener{
       @Override
        public boolean onSingleTapUp(MotionEvent e) {
           return true;
        }

       @Override
       public boolean onSingleTapConfirmed(MotionEvent e) {
         return true;
       } 
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM