标签: android-gesture

Android中是否有开源手势库?

我在Android应用中定义了自己的手势.这是定义手势的唯一方法吗?

是否有任何标准的开源库已经有手势的原始文件?

android swipe-gesture android-gesture

7
推荐指数
1
解决办法
6195
查看次数

带按钮的自定义视图实现了OnGestureListener

在过去的几个小时里,我一直在挣扎,用google搜索谷歌的地狱,StackOverflow或其他地方的例子都不适合我,所以在这里......

我有一个自定义视图,那extends LinearLayout and implements GestureDetector.OnGestureListener.

在我的自定义布局中,我有3个按钮,每个按钮都有一个点击监听器.我想要的是能够在视图中随处执行以执行某些操作,但也可以单击按钮.

如果我在视图内部而不是通过其中一个按钮,我的onFling功能可以很好地工作.如果我扔过其中一个按钮,它会在大多数情况下执行单击,或者在某些情况下执行任何操作.

这是我的代码的相关部分:

@Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) {
            return false;
        }
        // right to left swipe
        if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
            viewFlipper.setInAnimation(slideLeftIn);
            viewFlipper.setOutAnimation(slideLeftOut);
            viewFlipper.showNext();
            return true;

        } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
            viewFlipper.setInAnimation(slideRightIn);
            viewFlipper.setOutAnimation(slideRightOut);
            viewFlipper.showPrevious();
            return true;
        }

        return false;
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

android android-view android-gesture

7
推荐指数
1
解决办法
1502
查看次数

与Android的边框手势

我正在开发一个应用程序(在Galaxy Nexus上),我注意到当你从屏幕底部滑动到屏幕上时谷歌实施了"Google Now"应用程序(Chrome浏览器也做了一段时间,而不是确定它是否仍然存在).我一直在环顾四周,但一直无法确定他们是如何做到这一点的.有没有一种简单的方法来处理从挡板而不是屏幕开始的手势?

我检查了开发人员页面以供参考,但我能找到的唯一文章是:

http://developer.android.com/design/patterns/gestures.html

有没有其他地方可以获得这些信息?

[编辑]

我一直在尝试基于Lain_B的方法获得边缘手势非常失败,但无法使其工作.这是我用来尝试检测手势的代码,但是logcat总是输出零...

public class MainActivity extends Activity implements OnGestureListener {

private GestureDetector myGesture;

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

    myGesture = new GestureDetector(getBaseContext(),
            (OnGestureListener) this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    Log.e("Flags Touch", "Flags: " + event.getEdgeFlags());
    return myGesture.onTouchEvent(event);
}

@Override
public boolean onDown(MotionEvent e) {
    Log.e("Flags", "Flags: " + e.getEdgeFlags());
    Log.e("Event", "onDown");
    // TODO Auto-generated method stub
    return false; …
Run Code Online (Sandbox Code Playgroud)

android android-gesture

7
推荐指数
2
解决办法
8873
查看次数

Android如何在没有onDown true的情况下在LinearLayout上添加滑动手势

我正在研究android中的Gesture活动我用class来检测滑动动作是什么

public class ActivitySwipeDetector  implements View.OnTouchListener {

    static final String logTag = "ActivitySwipeDetector";
    private Activity activity;
    static final int MIN_DISTANCE = 100;
    private float downX, downY, upX, upY;

    public ActivitySwipeDetector(Activity activity){
        this.activity = activity;
    }

    public void onRightToLeftSwipe(){
        Log.i(logTag, "RightToLeftSwipe!");
        Toast.makeText(activity, "RightToLeftSwipe", Toast.LENGTH_SHORT).show();
        //activity.doSomething();
    }

    public void onLeftToRightSwipe(){
        Log.i(logTag, "LeftToRightSwipe!");
        Toast.makeText(activity, "LeftToRightSwipe", Toast.LENGTH_SHORT).show();
        //activity.doSomething();
    }

    public void onTopToBottomSwipe(){
        Log.i(logTag, "onTopToBottomSwipe!");
        //Toast.makeText(activity, "onTopToBottomSwipe", Toast.LENGTH_SHORT).show();
        //activity.doSomething();
    }

    public void onBottomToTopSwipe(){
        Log.i(logTag, "onBottomToTopSwipe!");
        //Toast.makeText(activity, "onBottomToTopSwipe", Toast.LENGTH_SHORT).show();
        //activity.doSomething();
    }

    public boolean onTouch(View v, MotionEvent …
Run Code Online (Sandbox Code Playgroud)

android swipe android-layout android-gesture

7
推荐指数
1
解决办法
2万
查看次数

如何防止双击ListView?

无论如何都要防止ListView在Android中双击?当我意外地敲击物品时,我发现了这个ListView,它打开了两个新窗口.有没有办法防止它两次打开同一个窗口.

android android-listview android-gesture

7
推荐指数
1
解决办法
3224
查看次数

GestureDetector.SimpleOnGestureListener.如何检测ACTION_UP事件?

用这个

mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {

        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            return true;
        }
Run Code Online (Sandbox Code Playgroud)

仅检测单击事件,即快速点击和释放.如果我按住然后释放,onSingleTapUp则不会被呼叫.

我正在寻找一个ACTION_UP持续下去的动作事件.

我看了看onShowPress,当用户执行关闭操作的调用,但那时我不知道如何检测ACTION_UP的同时onShowPress.

请注意,这是为了recycler view单击项目.目前,我可以单击一个有效的项目,但如果我按住它然后释放,则不会调用它.

android android-gesture android-event android-recyclerview

7
推荐指数
1
解决办法
1372
查看次数

Android系统.滑动回电话之类的活动

如何使用电话和Tinder应用程序中的手势和动画滑动到以前的活动?

android android-animation android-gesture android-activity

6
推荐指数
1
解决办法
4684
查看次数

android:如何检测水平和垂直手势线

我有一些想要用线连接的对象。用户应该能够通过简单的线条手势来完成此操作。我使用 GestureOverlayView 并阅读该文章http://developer.android.com/resources/articles/gestures.html,其中内容如下

orientation:指示下方视图的滚动方向。在这种情况下,列表垂直滚动,这意味着任何水平手势(如action_delete)都可以立即被识别为手势。以垂直笔画开始的手势必须至少包含一个水平分量才能被识别。换句话说,简单的垂直线不能被识别为手势,因为它会与列表的滚动冲突。

这就是我的问题 - 我想画水平和垂直的线

现在我有一个 OnGesturePerfomedListener,它执行正常的手势识别,另外还有一个 GestureOverlayView.OnGestureListener,我在其中检测线条。但现在我想画一条虚线 - 也垂直和水平。如果我能像 OnGesturePerformedListener 中那样获得完整的手势,而不是像 onGestureListener 中那样获得虚线的每一个笔划,那就容易多了。

我有什么想法可以轻松解决这个问题吗?是否有一种方法,在手势完成时被调用,即使它未被识别?我还尝试使用 GestureDetector.OnGestureListener,我现在用它来检测长按,但它无助于解决该问题。

android gesture android-gesture

5
推荐指数
1
解决办法
3098
查看次数

如何检测Android手机上的边缘滑动以操纵触摸行为?

GestureDetector.OnGestureListener在 Activity 中实现,其覆盖的 onTouchEvent 是:

public boolean onTouchEvent(MotionEvent event) {
       //gestureDetector is new GestureDetector(this,this) in Activity's onCreate()
       this.gestureDetector.onTouchEvent(event);
       return super.onTouchEvent(event);
    }
Run Code Online (Sandbox Code Playgroud)

使用 MotionEvent 类中的 getEdgeFlags 进行边缘检测,如下所示:

 @Override
public boolean onDown(MotionEvent e) {
    final int edgeInfo = e.getEdgeFlags();
    return ((edgeInfo == MotionEvent.EDGE_LEFT) || (edgeInfo == MotionEvent.EDGE_RIGHT)) ||
            (edgeInfo == MotionEvent.EDGE_BOTTOM);
}
Run Code Online (Sandbox Code Playgroud)

但是 onDown 总是返回 false。我也试过改变

final int edgeInfo = e.getEdgeFlags();
final int edgeInfo = e.getAction() & e.getEdgeFlags();

以及final int edgeInfo = e.getActionMasked() & e.getEdgeFlags();以防万一。

却无济于事。

我看过 …

android android-gesture

5
推荐指数
0
解决办法
839
查看次数

在 Android Touch 事件中看不到点击涟漪效应

我在这里看到了一些解决方案,但没有一个对我有用。我正在使用View.OnTouchListener类来检测我的应用程序代码中的单击和拖动事件。但是那个美丽的涟漪效应现在已经消失了(也许是因为我在MotionEvent手势到达View.OnClickListener. 注意return trueinMotionEvent.ACTION_DOWN块之前消耗了这些手势)。

我不能View.OnClickListener用来检测点击事件,因为我的应用程序使用多个复合手势(点击、点击、点击、点击、拖动等)。任何人都可以分享一些有关如何使用 Android 触摸手势创建涟漪效果的提示吗?

这是我View.OnTouchListenerBaseAdapter类中实现的代码片段:

v.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent ev) {
                switch (ev.getAction() & MotionEvent.ACTION_MASK) {
                    case MotionEvent.ACTION_DOWN:
                        if(mAppActionDownListener != null) {
                            mAppActionDownListener.onAppActionDown(appObjectList.get(position), v);
                        }
                        Log.d("COOK", "ACTION_DOWN: " + ev.getX() + ", " + ev.getY());
                        t1 = System.currentTimeMillis();
                        return true;

                    case MotionEvent.ACTION_UP:
                        Log.d("COOK", "ACTION_UP: " + ev.getX() + ", " + ev.getY());
                        t2 = System.currentTimeMillis();
                        if(Math.abs(t2-t1) <=300) …
Run Code Online (Sandbox Code Playgroud)

user-interface android ontouchlistener android-gesture rippledrawable

5
推荐指数
1
解决办法
1274
查看次数