【问题标题】:How to add gesture to preference screen如何将手势添加到偏好屏幕
【发布时间】:2013-02-23 10:55:43
【问题描述】:

我正在尝试在我的偏好屏幕中添加手势,但我没有得到任何积极的结果,我的问题是我们可以在偏好屏幕中添加手势吗?如果是,那么如何 我正在使用下面的代码优先添加手势(不适用于偏好,但它可以在两个 Activity 之间切换)

@Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub

        return gestureDetector.onTouchEvent(event);
    }

    SimpleOnGestureListener simpleOnGestureListener
    = new SimpleOnGestureListener(){


        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) {
            String swipe = "";
            float sensitvity = 50;

            // TODO Auto-generated method stub
            if((e1.getX() - e2.getX()) > sensitvity){
                // for left
            Intent i=new Intent(getApplicationContext(),MyActivity.class);
                startActivity(i);
                finish();


            }else if((e2.getX() - e1.getX()) > sensitvity){
                //for right
            }else{
                swipe += "\n";
            }

            if((e1.getY() - e2.getY()) > sensitvity){
                //Swipe Up
            }else if((e2.getY() - e1.getY()) > sensitvity){
                //Swipe Down
            }



            return super.onFling(e1, e2, velocityX, velocityY);
        }
    };

    GestureDetector gestureDetector
    = new GestureDetector(simpleOnGestureListener);

【问题讨论】:

    标签: android android-activity gesture preference swipe-gesture


    【解决方案1】:

    首先让你的 MainActivity implements OnGestureListener 然后定义手势

        private GestureDetector gestureScanner;
    

    将手势添加到您的 onCreate gestureScanner = new GestureDetector(this); 这是手势的方法

    @Override
    public boolean onTouchEvent(final MotionEvent event)
    {
        return gestureScanner.onTouchEvent(event);
    }
    public boolean onDown(final MotionEvent e)
    {
    
        return true;
    }
    public boolean onFling(final MotionEvent e1, final MotionEvent e2,
            final float velocityX, final float velocityY)
    {
        return true;
    }
    public void onLongPress(final MotionEvent e) {
    
    }
    public boolean onScroll(final MotionEvent e1, final MotionEvent e2,
            final float distanceX, final float distanceY)
    {
        return true;
    }
    public void onShowPress(final MotionEvent e)
    {
    
    }
    public boolean onSingleTapUp(final MotionEvent e)
    {
        showHide(); // show hide the statusBar On Small Phones prefer to
        // keep it on Single Tab Cuz On Swipe Down is Kind laggy!!!
        // WTF !! :D
        return true;
    }
    

    现在你可以在我的onSingleTapUp(final MotionEvent e) 上看到我用来显示隐藏状态栏。

    您有六种不同的触摸事件“手势事件”方式,选择其中一种并将您的意图放在上面,当用户“让我们说”滚动时,另一个活动将启动。

    public boolean onScroll(final MotionEvent e1, final MotionEvent e2,
            final float distanceX, final float distanceY)
    {
            Intent i=new Intent(getApplicationContext(),MyActivity.class);
                startActivity(i);
                finish();
    
        return true;
    }
    

    试一试,希望对您有所帮助。

    【讨论】:

    • 这不是问题的正确答案。此算法不适用于 PreferenceScreen。如: 1. OnTouch 被ListView 拦截。所以手势唯一起作用的地方是活动的标题。 2.对于嵌套的Screen,根本不可能。
    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多