Android 自定义可拖动悬浮按钮

个人中心

DownLoad

Android 自定义可拖动悬浮按钮的实现步骤如下:

1. 创建一个自定义的 View,继承自 View 或者 ImageButton。

2. 在 View 中实现 onTouchEvent 方法,处理触摸事件,实现拖动功能。

3. 在 View 中实现 onDraw 方法,绘制悬浮按钮的样式。

4. 在 Activity 中添加该 View,并设置其 LayoutParams,使其可以悬浮在屏幕上。

5. 在 View 中添加点击事件,实现点击悬浮按钮后的操作。

6. 可以添加动画效果,使悬浮按钮更加生动。

下面是一个简单的实现示例:

```
public class FloatButton extends ImageButton {

    private 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 event) {
        int x = (int) event.getRawX();
        int y = (int) event.getRawY();
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                lastX = x;
                lastY = y;
                break;
            case MotionEvent.ACTION_MOVE:
                int dx = x - lastX;
                int dy = y - lastY;
                int left = getLeft() + dx;
                int top = getTop() + dy;
                int right = getRight() + dx;
                int bottom = getBottom() + dy;
                layout(left, top, right, bottom);
                lastX = x;
                lastY = y;
                break;
            case MotionEvent.ACTION_UP:
                break;
        }
        return true;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 绘制悬浮按钮的样式
    }

    public void setFloatButtonClickListener(OnClickListener listener) {
        setOnClickListener(listener);
    }
}
```

在 Activity 中添加该 View:

```
FloatButton floatButton = new FloatButton(this);
floatButton.setImageResource(R.drawable.float_button);
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT);
layoutParams.gravity = Gravity.TOP | Gravity.START;
layoutParams.x = 0;
layoutParams.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);
animatorX.setDuration(2000);
animatorX.setRepeatCount(ValueAnimator.INFINITE);
animatorX.start();
```

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android全局拖动悬浮按钮是一种在应用界面上悬浮按钮,用户可以通过拖动按钮的方式,在任意界面使用其提供的功能。这种悬浮按钮通常会呈现在屏幕的某个固定位置,如屏幕右下角。 使用全局拖动悬浮按钮可以为用户提供方便和快捷的操作方式。用户只需通过轻触按钮即可快速打开某个应用或执行某个功能,而不需要返回主界面或搜索相应的功能选项。这样可以大大提高用户的操作效率和体验。 开发这一功能的关键在于如何实现悬浮按钮在全局范围内的拖动和点击事件。一种常用的方法是通过在Android系统的WindowManager中创建一个可拖动的View,并设置其触摸事件监听器来实现。在触摸事件监听器中,我们可以处理按钮拖动、点击、长按等各种事件。 为了使全局拖动悬浮按钮更好地融入应用界面,我们可以对其进行自定义设置。例如,可以自定义按钮的形状、颜色、动画效果等,以适配不同的应用主题和风格。 需要注意的是,在设计和使用全局拖动悬浮按钮时,我们要遵循用户界面设计的基本原则,避免对用户的正常操作造成干扰和困扰。同时,也要考虑到移动设备的屏幕尺寸和分辨率的差异,以确保全局拖动悬浮按钮在不同设备上都能够正常显示和操作。 总而言之,Android全局拖动悬浮按钮是一种方便用户操作的功能,通过简单轻松的拖动和点击,用户可以快速访问应用的各种功能。开发者可以根据应用的需求和用户体验考虑,来设计和实现这一功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android-Developer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值