Android カスタムのドラッグ可能なフローティング ボタン

パーソナルセンター

ダウンロード

Android カスタムのドラッグ可能なフローティング ボタンの実装手順は次のとおりです。

1. View または ImageButton を継承するカスタム View を作成します。

2. View に onTouchEvent メソッドを実装して、タッチ イベントを処理し、ドラッグを実装します。

3. View に onDraw メソッドを実装して、フローティング ボタンのスタイルを描画します。

4. ビューをアクティビティに追加し、画面上で一時停止できるようにその LayoutParams を設定します。

5. フローティングボタンをクリックした後の動作を実現するために、View にクリックイベントを追加します。

6. アニメーション効果を追加して、フローティングボタンをより鮮やかにすることができます。

簡単な実装例を次に示します。

```
public class FloatButton extends ImageButton {

    プライベート int lastX;
    private int lastY;

    public FloatButton(Context context) {         super(context);     }

    public FloatButton(Context context, AttributeSet attrs) {         super(context, attrs);     }

    public FloatButton(Context context, AttributeSet attrs, int defStyleAttr) {         super(context, attrs, defStyleAttr);     }

    @Override
    public boolean onTouchEvent(MotionEvent イベント) {         int x = (int)event.getRawX();         int y = (int)event.getRawY();         switch (event.getAction()) {             case MotionEvent.ACTION_DOWN:                 lastX = x;                 最後Y = y;                 壊す;             case MotionEvent.ACTION_MOVE:                 int dx = x - lastX;                 int dy = y - lastY;                 int left = getLeft() + dx;                 int トップ = getTop() + dy;                 int right = getRight() + dx;                 int ボトム = getBottom() + dy;














                レイアウト(左、上、右、下);
                最後X = x;
                最後Y = y;
                壊す;
            case MotionEvent.ACTION_UP:
                ブレーク;
        true を返し
        ます。
    }

    @Override
    protected void onDraw(Canvas Canvas) {         super.onDraw(canvas);         // フローティング ボタンのスタイルを描画     }


    public void setFloatButtonClickListener(OnClickListener リスナー) {         setOnClickListener(listener);     } } ```



ビューをアクティビティに追加します。

```
FloatButton floatButton = 新しい FloatButton(this);
floatButton.setImageResource(R.drawable.float_button);
WindowManager.LayoutParamslayoutParams = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT );
レイアウトパラメータ.gravity = 重力.TOP | 重力.START;
レイアウトパラメータ.x = 0;
レイアウトパラメータ.y = 0;
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.addView(floatButton,layoutParams);
「」

クリックイベントを追加します。

```
floatButton.setFloatButtonClickListener(new View.OnClickListener() {     @Override     public void onClick(View v) {         // フローティング ボタンをクリックした後の操作     } }); ```





アニメーション効果を追加します。

```
ObjectAnimator animatorX = ObjectAnimator.ofFloat(floatButton, "translationX", 0, 100, -100, 0);
アニメーターX.setDuration(2000);
animatorX.setRepeatCount(ValueAnimator.INFINITE);
アニメーターX.start();
「」

おすすめ

転載: blog.csdn.net/YDHIT/article/details/130842770
おすすめ