首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 自定義滑動按鈕:onTouch 手勢跟隨 + 閾值判斷 + 彈回動畫

     編輯:程式設計綜合問答

需求

垂直滑動按鈕:向上推/向下拉觸發 Action Move,松手彈回原位,有彈性感。

實現步驟

  1. onTouch 監聽 獲取 ACTION_DOWN/MOVE/UP/CANCEL
  2. MOVE 時:計算手指 Y 軸位移 dy,更新按鈕 translationY(或 layoutParams)跟隨手指
  3. 設置閾值(如 100dp):|translationY| > threshold 視為「滑到位」
  4. UP 時:
    • 未達閾值 → ObjectAnimator.ofFloat(btn, "translationY", 0).setDuration(200).start() 快速彈回
    • 已達閾值 → 執行業務邏輯,再彈回或保持

核心代碼片段

btn.setOnTouchListener((v, event) -> {
    switch (event.getAction()) {
        case MotionEvent.ACTION_MOVE:
            float dy = event.getRawY() - downY;
            v.setTranslationY(Math.max(-MAX, Math.min(MAX, dy))); // 限制範圍
            break;
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            if (Math.abs(v.getTranslationY()) > THRESHOLD) {
                // 觸發業務
            }
            v.animate().translationY(0).setDuration(300).setInterpolator(new OvershootInterpolator()).start();
            break;
    }
    return true;
});

OvershootInterpolator 產生彈性超調效果,體驗更佳。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved