100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android 悬浮按钮出现隐藏 Android悬浮窗按钮实现点击并显示/隐藏多功能列表

android 悬浮按钮出现隐藏 Android悬浮窗按钮实现点击并显示/隐藏多功能列表

时间:2021-02-14 02:50:12

相关推荐

android 悬浮按钮出现隐藏 Android悬浮窗按钮实现点击并显示/隐藏多功能列表

前言

最近在一个项目中,需要制作录屏的功能,原先是在应用中有录屏/控制的按钮,思考之下觉得这种效果并不好,因此就想制作一个可以悬浮的悬浮窗,这样不论手机在什么界面中都可以对录屏功能进行控制。

这里就来构建一个桌面的悬浮窗,使用了DataBinding的MVVM模式,这些方面就不再多提。

FloatNormalView

这个是一个普通的悬浮窗,悬浮窗只有一个按钮,点击按钮显示更多的按钮。

首先是页面布局:

name="viewModel"

type="com.example.zjt.floatrecorder.FloatNormalViewModel"/>

android:layout_width="50dp"

android:layout_height="50dp"

android:gravity="center">

android:id="@+id/root"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical">

android:id="@+id/float_id"

android:layout_width="40dp"

android:layout_height="40dp"

android:background="@drawable/ic_launcher_background"

android:onClick="@{viewModel::onControlClick}"/>

下面一步步的介绍这个悬浮窗的创建。

1 悬浮窗的显示

// 创建WindowManager对象

private WindowManager windowManager;

windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

// 创建悬浮窗的LayoutParams

private void initLayoutParams() {

try {

DisplayMetrics metrics = new DisplayMetrics();

windowManager.getDefaultDisplay().getMetrics(metrics);

screenWidth = metrics.widthPixels;

screenHeight = metrics.heightPixels;

lp = new WindowManager.LayoutParams();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;

} else {

lp.type = WindowManager.LayoutParams.TYPE_TOAST;

}

lp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |

WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;

lp.gravity = Gravity.START | Gravity.TOP;

lp.x = screenWidth - view.getLayoutParams().width * 2;

lp.y = 0;

lp.width = WindowManager.LayoutParams.WRAP_CONTENT;

lp.height = WindowManager.LayoutParams.WRAP_CONTENT;

lp.format = PixelFormat.TRANSPARENT;

} catch (Exception e) {

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。