Android(安卓)小说阅读护眼模式
16lz
2021-12-04
Android 小说阅读护眼模式
实现方案:采用全局dialog 覆盖APP 悬浮在 其他APP之上,给dialog设置护眼色值
自定义护眼模式dialog
public class EyeProtectionDialog extends Dialog { ImageView iv; public EyeProtectionDialog(@NonNull Context context) { super(context, R.style.eye_style); requestWindowFeature(Window.FEATURE_NO_TITLE); Window window = this.getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); window.getDecorView().setPadding(0, 0, 0, 0); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.MATCH_PARENT; lp.flags = WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; //设置不影响下层的触碰 if (Build.VERSION.SDK_INT >= 26) { lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; } else { lp.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY; } window.setAttributes(lp); window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.eye_layout); iv = findViewById(R.id.iv_eye); } @Override public void show() { super.show(); if (iv != null) { iv.setBackgroundColor(getColor(30)); } } /** * 设置护眼色 * @param blueFilterPercent * @return */ public @ColorInt int getColor(int blueFilterPercent) { int realFilter = blueFilterPercent; if (realFilter < 10) { realFilter = 10; } else if (realFilter > 80) { realFilter = 80; } int a = (int) (realFilter / 80f * 180); int r = (int) (200 - (realFilter / 80f) * 190); int g = (int) (180 - (realFilter / 80f) * 170); int b = (int) (60 - realFilter / 80f * 60); return Color.argb(a, r, g, b); }}
dialog-style
eye_layout
<?xml version="1.0" encoding="utf-8"?>
权限以及展示
public void permission() { if (Build.VERSION.SDK_INT >= 23) { if (!Settings.canDrawOverlays(getContext())) { Uri packageURI = Uri.parse("package:" + ReaderApplication.getInstance().getPackageName()); Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, packageURI); startActivity(intent); } else { EyeProtectionDialog eyeProtectionDialog = new EyeProtectionDialog(getContext()); eyeProtectionDialog.show(); } } else { EyeProtectionDialog eyeProtectionDialog = new EyeProtectionDialog(getContext()); eyeProtectionDialog.show(); } }
更多相关文章
- Android(安卓)App 权限一点知识
- Android(安卓)获取系统设置参数。
- Android(安卓)代码设置来电铃声
- android学习资料
- android 命令大全
- Android(安卓)RingtoneManager铃声管理
- Android(安卓)Material Design 进度条 自定义进度条样式
- android中设置activity的出现方式
- Android5.0通知变化浅析