对于提示层,用dialog,popupwindow,甚至fragment ,或者activity其实都是可以实现的,大部分都是展示几张图片,可能里面涉及一些自身的逻辑而已,这些都是简单的。
简单的说一下dialog的,我就是用dialog写的提示层。
<code>
Window dialogWindow = this.getWindow();
//dialog默认样式是有padding值的
assert dialogWindow != null;
View decorView = dialogWindow.getDecorView();
if (decorView != null) {
decorView.setPadding(0, 0, 0, 0);
}
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
dialogWindow.setGravity(Gravity.CENTER);
lp.width = MATCH_PARENT; // 宽度
lp.height = MATCH_PARENT; // 高度
dialogWindow.setAttributes(lp);
</code>
再设置一下样式 构造方法那边设置下
<code>
public MainHintDialog(Context context, int isFirstHint, boolean isHasMap) {
super(context, R.style.DialogTheme);
}
</code>
<code>
<style name="DialogTheme" parent="@android:style/Theme.Dialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
</code>
上述代码设置一下,基本上大部分机型都没问题了 ,但是适配就差在华为虚拟键上面,当出现虚拟键的时候 ,会把提示层顶上去,导致界面无法正确的重叠,看起来就有适配问题。
解决方法可以通过在显示dialog的时候,直接隐藏虚拟键 ,就好了。
<code>
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
// | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
</code>
以上 就是这次的总结