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();
「」