對于提示層,用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>
以上 就是這次的總結