悬浮按钮

效果图

复制代码
//将dp转换为px
public static int dip2px(Context context, float dpValue) {
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (dpValue * scale + 0.5f);
}

//浮动图片监听
private void initListener() {
    //弹出对话框
    jianwen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            View view = LayoutInflater.from(getActivity()).inflate(R.layout.quick_layout, null);
            bbs = (TextView) view.findViewById(R.id.bbs);
            dailyattendance = (TextView) view.findViewById(R.id.dailyattendance);
            Jump.jumpToWeb(getActivity(), bbs, bbs.getText().toString(), Contents.MINE_LUNTAN_URL, false);
            Jump.jumpToWeb(getActivity(), dailyattendance, dailyattendance.getText().toString(), Contents.MINE_REGISTRATION_URL, false);
            
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setView(view);
            AlertDialog dialog = builder.create();
            Window window = dialog.getWindow();
            WindowManager.LayoutParams attributes = window.getAttributes();
            attributes.alpha = 0.6f;    //设置对话框透明度
            attributes.gravity = Gravity.BOTTOM;     //设置对话框的位置
            attributes.width = LinearLayout.LayoutParams.MATCH_PARENT;
            window.setAttributes(attributes);
            dialog.show();
        }
    });


    //移动浮动图片
    jianwen.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int widthPixels = getResources().getDisplayMetrics().widthPixels;   //屏幕宽度
            int heightPixels = getResources().getDisplayMetrics().heightPixels;     //屏幕高度
            int width = v.getWidth();   //图片宽带
            int height = v.getHeight();     //图片高度
            switch (event.getAction()) {
                case MotionEvent.ACTION_MOVE:
                    //图片的绝对位置
                    float x = event.getRawX();
                    float y = event.getRawY();
                    //避免图片滑出屏幕
                    if (x > widthPixels - width) {
                        x = widthPixels - width;
                    }
                    if (y > heightPixels - height - dip2px(getContext(), 75)) {
                        y = heightPixels - height - dip2px(getContext(), 75);
                    }
                    v.setX(x);
                    v.setY(y);
                    break;
            }
            return false;   //表示还可以监听其他事件
        }
    });
}
复制代码

 

posted @   嘉禾世兴  阅读(297)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示