android - 滑动以从 FrameLayout 中关闭 TextView

标签 android textview ontouchlistener android-framelayout

我想使用下面的代码从 FrameLayout 中关闭 TextView

目前,当方法触发时,我正在获取日志,这太棒了!

但我如何执行滑动以关闭?

SwipeDismissTouchListener.java

public class SwipeDismissTouchListener implements View.OnTouchListener {

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

public SwipeDismissTouchListener(GameActivity gameActivity) {
    activity = gameActivity;
}

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 boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN: {
            downX = event.getX();
            return true;
        }
        case MotionEvent.ACTION_UP: {
            upX = event.getX();

            float deltaX = downX - upX;

            if (Math.abs(deltaX) > MIN_DISTANCE) {
                if (deltaX < 0) {
                    this.onLeftToRightSwipe();
                    return true;
                }
                if (deltaX > 0) {
                    this.onRightToLeftSwipe();
                    return true;
                }
            } else {
                Log.i(logTag, "Swipe was only " + Math.abs(deltaX) + " long horizontally, need at least " + MIN_DISTANCE);
                // return false; // We don't consume the event
            }

            return false; // no swipe horizontally and no swipe vertically
        }// case MotionEvent.ACTION_UP:
    }
    return false;
}
}

MyActivity.java

 SwipeDismissTouchListener swipeListener = new SwipeDismissTouchListener(this);
 frameLayout.setOnTouchListener(swipeListener);

这里有一些链接,但我不确定如何实现它们 Foo Bar

最佳答案

Bar链接是一个很好的起点。

您通常做的是设置 TextView 的 translateX 和 alpha 属性 ... Roman Nurik 还添加了一个速度跟踪器来检测“滑动手势”并启动一个动画,该动画还将为 translateX 和 alpha 属性设置动画

在 SwipeDismiss 之后,您只需调用 framelayout.removeView(textView)

您还可以考虑覆盖您的 FrameLayout(FrameLayout 的子类)的 onTouch 方法,如下所述:

http://developer.android.com/training/gestures/viewgroup.html

关于android - 滑动以从 FrameLayout 中关闭 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24973310/

相关文章:

android - Phonegap 条码扫描仪纵向模式

android - 如何以编程方式在线性布局中添加 2 个 TextView

Android - 用户用手指画线

android - 将 OnTouchListener 设置为包含在膨胀的 xml 中的多个按钮

java - 不会继续执行 ACTION_DOWN 上的语句

android - 实现 Facebook 风格的滑动菜单从右向左滑动

java - 如何在 onCreate() 和 onResume() 方法中调用相同的函数?

android - 将从 EditText 框获取的值传递到下一个屏幕中的 TextView

ios - 替换文本以更改音高/调

android - android中的setContentView和getLayoutResource有什么区别?