在平板电脑3.0轻扫手势 [英] Swipe gesture in tablet 3.0

查看:135
本文介绍了在平板电脑3.0轻扫手势的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经提出申请,其中刷卡手势检测用于左到右放;从右到左。
我得到2.2 AVD模拟器成功,但是当我尝试使用相同的code片剂3.0它不能正常工作

请告诉我,什么是错。

 私有静态最终诠释SWIPE_MIN_DISTANCE = 120;
    私有静态最终诠释SWIPE_THRESHOLD_VELOCITY = 200;
   私有类GestureListener扩展SimpleOnGestureListener {
        @覆盖
        公共布尔onFling(MotionEvent E1,E2 MotionEvent,浮velocityX,
                浮动velocityY){
            如果(e1.getX() -  e2.getX()> SWIPE_MIN_DISTANCE
                    &功放;&安培; Math.abs(velocityX)> SWIPE_THRESHOLD_VELOCITY){

                Toast.makeText(RssActivity.this,从右至左,
                        Toast.LENGTH_LONG).show();
                SetNewRightclickActivity();
                Log.i(TAG,从右至左);
                返回true; //从右到左

            }否则,如果(e2.getX() -  e1.getX()> SWIPE_MIN_DISTANCE
                    &功放;&安培; Math.abs(velocityX)> SWIPE_THRESHOLD_VELOCITY){

                Toast.makeText(RssActivity.this,从左至右,
                        Toast.LENGTH_LONG).show();
                Log.i(TAG,左到右);
                SetNewLeftclickActivity();
                返回true; // 从左到右

            }
            如果(e1.getY() -  e2.getY()> SWIPE_MIN_DISTANCE
                    &功放;&安培; Math.abs(velocityY)> SWIPE_THRESHOLD_VELOCITY){

                返回true; //从下到上
            }否则,如果(e2.getY() -  e1.getY()> SWIPE_MIN_DISTANCE
                    &功放;&安培; Math.abs(velocityY)> SWIPE_THRESHOLD_VELOCITY){

                返回true; // 从上到下
            }
            返回false;
        }
    }
 

主要::

  @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.rssheader);

        gestureDetector =新GestureDetector(新GestureListener());
        gestureListener =新View.OnTouchListener(){
            公共布尔onTouch(视图V,MotionEvent事件){
                返回gestureDetector.onTouchEvent(事件);
            }
        };
 

解决方案

您需要设置 gestureListener (在的onCreate 法)到一个视图您要检测挥笔。


设置ID到一个视图/的ViewGroup在布局中的 rssheader.xml ,例如:

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT

    机器人:ID =@ + ID / myLayout
    机器人:可点击=真正的>

< / LinearLayout中>
 

现在获取该ID的活动类,并设置监听器,它

  @覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.rssheader);

    的LinearLayout LL =(的LinearLayout)findViewById(R.id.myLayout);

    GestureDetector gestureDetector =新GestureDetector(新GestureListener());
    OnTouchListener gestureListener =新View.OnTouchListener(){
        公共布尔onTouch(视图V,MotionEvent事件){
            返回gestureDetector.onTouchEvent(事件);
        }
    };

    ll.setOnTouchListener(gestureListener);

}
 

I have make application in which swipe Gesture detection is used for left to right & right to left.
I got success with 2.2 AVD emulator, but when I try to use same code in tablet 3.0 it not working

Please tell me whats wrong.

private static final int SWIPE_MIN_DISTANCE = 120;
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;
   private class GestureListener extends SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) {
            if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                    && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

                Toast.makeText(RssActivity.this, "Right to left",
                        Toast.LENGTH_LONG).show();
                SetNewRightclickActivity();
                Log.i(TAG, "Right to left");
                return true; // Right to left

            } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                    && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

                Toast.makeText(RssActivity.this, "Left to right",
                        Toast.LENGTH_LONG).show();
                Log.i(TAG, "Left to right");
                SetNewLeftclickActivity();
                return true; // Left to right

            }
            if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE
                    && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {

                return true; // Bottom to top
            } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE
                    && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {

                return true; // Top to bottom
            }
            return false;
        }
    }

Main::

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rssheader);

        gestureDetector = new GestureDetector(new GestureListener());
        gestureListener = new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                return gestureDetector.onTouchEvent(event);
            }
        };

解决方案

You need to set gestureListener (in onCreate method) to a view on which you want to detect swipes.


Set id to a view/viewgroup in your layout in rssheader.xml, for example:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"

    android:id="@+id/myLayout"
    android:clickable="true">

</LinearLayout>

now fetch that id in Activity class and set listener to it

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.rssheader);

    LinearLayout ll = (LinearLayout) findViewById(R.id.myLayout);

    GestureDetector gestureDetector = new GestureDetector(new GestureListener());
    OnTouchListener gestureListener = new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return gestureDetector.onTouchEvent(event);
        }
    };

    ll.setOnTouchListener(gestureListener);

}

这篇关于在平板电脑3.0轻扫手势的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆