gpt4 book ai didi

android - 在 Android 上添加调光器并更改屏幕亮度,例如暮光之城应用程序

转载 作者:行者123 更新时间:2023-11-29 14:30:54 25 4
gpt4 key购买 nike

我想在设备屏幕上添加一个调光器并像 twilight app 一样过滤光通量
结果如下所示:

enter image description here

我正在寻找实现它的 API、示例代码或文档。目前,我只知道如何在 android 上以编程方式更改亮度。
有什么建议吗?

最佳答案

要实现此结果,您需要使用 TYPE_SYSTEM_ALERT 类型创建一个窗口,并将其显示在所有其他应用程序之上。为此,您需要权限 SYSTEM_ALERT_WINDOW :

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

然后创建一个具有所需背景颜色的新布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF4081"
android:orientation="vertical">
</LinearLayout>

还有一个服务:

public class DrawOverAppsService extends Service {

public static final String TAG = "DrawOverAppsService";

private View mOverlayView;

@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onCreate() {
super.onCreate();

Log.d(TAG, "onCreate");

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
WindowManager.LayoutParams.FLAG_DIM_BEHIND,
PixelFormat.TRANSLUCENT);

// An alpha value to apply to this entire window.
// An alpha of 1.0 means fully opaque and 0.0 means fully transparent
params.alpha = 0.1F;

// When FLAG_DIM_BEHIND is set, this is the amount of dimming to apply.
// Range is from 1.0 for completely opaque to 0.0 for no dim.
params.dimAmount = 0.8F;

WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

mOverlayView = inflater.inflate(R.layout.overlay_view, null);

wm.addView(mOverlayView, params);
}

@Override
public void onDestroy() {
super.onDestroy();

Log.d(TAG, "onDestroy");

WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
wm.removeView(mOverlayView);
}
}

要显示覆盖启动服务:

Intent intent = new Intent(this, DrawOverAppsService.class);
startService(intent);

并停止覆盖:

Intent intent = new Intent(this, DrawOverAppsService.class);
stopService(intent);

关于android - 在 Android 上添加调光器并更改屏幕亮度,例如暮光之城应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33419266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com