在平板电脑3.0轻扫手势 [英] Swipe gesture in tablet 3.0
本文介绍了在平板电脑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:机器人=http://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屋!
查看全文