悬浮方向盘的实现

一开始做了一个悬浮球,就是上图的粉色小圆圈,原理是第三方的FloatingActionButton,结果只能在本应用生效,于是保留作为功能菜单使用。

多次尝试后(不得不吐槽网上的十个博客八个复制九个没用)得到了正解。
主要是使用WindowManager来悬浮自定义的ImageView,需要开启悬浮的权限。

wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = getResources().getDisplayMetrics();
int widthPixels = dm.widthPixels;
int heightPixels = dm.heightPixels;
wmParams = ((MyApplication) getApplication()).getMywmParams(http://www.my516.com);
//只有这样才能弹框
if (Build.VERSION.SDK_INT >= 26) {//8.0新特性
wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
}
wmParams.format = PixelFormat.RGBA_8888;//设置背景图片
wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;//
wmParams.gravity = Gravity.LEFT | Gravity.TOP;//
/* wmParams.x = widthPixels - 550; //设置位置像素
wmParams.y = heightPixels - 510;*/
// 圆心位置就在800,2000
wmParams.x = 700;
wmParams.y = 1900;
wmParams.width = 200; //设置图片大小
wmParams.height = 200;

customeMovebutton = new CustomeMovebutton(getApplicationContext());
customeMovebutton.setImageResource(R.drawable.circle);
wm.addView(customeMovebutton, wmParams);
customeMovebutton.setOnSpeakListener(new CustomeMovebutton.OnSpeakListener() {
@Override
public void onSpeakListener(double sin, double cos) {
speedLat = -speed * sin;
speedLon = speed * cos;
}
});
————————————————

猜你喜欢

转载自www.cnblogs.com/liyanyan665/p/11414339.html
今日推荐