android 实现自由移动的悬浮按钮

本文介绍了如何在Android中实现自由移动的悬浮按钮。通过WindowManager的addView()方法加载自定义的FloatView(继承自ImageView),并设置LayoutParams的坐标属性。在onTouchEvent中更新坐标实现移动,并在FloatApplication中防止超出屏幕范围。别忘了在AndroidManifest.xml添加相应权限。
摘要由CSDN通过智能技术生成

android 实现自由移动的悬浮按钮

实现原理
主要是通过android中的WindowManager中的addview()把view加载进来,设置WindowManager.LayoutParams windowManagerParams的相关属性,例如x,y;在view的onTouchEvent中改变x,y从而实现悬浮按钮的自由移动

1、自定义一个类FloatView继承自ImageView

public class FloatView extends ImageView{
    
    private float mTouchX; 
    private float mTouchY; 
    private float x; 
    private float y; 
    private float mStartX; 
    private float mStartY; 
    private OnClickListener mClickListener; 
    private WindowManager windowManager = (WindowManager) getContext() 
            .getApplicationContext().getSystemService(Context.WINDOW_SERVICE); 
    // 此windowManagerParams变量为获取的全局变量,用以保存悬浮窗口的属性 
    private WindowManager.LayoutParams windowManagerParams = ((FloatApplication) getContext() 
            .getApplicationContext()).getWindowParams(); 
    public FloatView(Context context) { 
        super(context); 
    } 
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
        //获取到状态栏的高度 
        Rect frame = new Rect(); 
        getWindowVisibleDisplayFrame(frame); 
        int statusBarHeight = frame.top; 
        // 获取相对屏幕的坐标,悬浮窗口所在的位置
        x = event.getRawX(); 
        y = event.get
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值