- 刘海屏
萨瑞刘海屏API接口 <meta-data android:name="android.compatible_notch" android:value="true"/>
参考:https://developer.huawei.com/consumer/cn/devservice/doc/50114?from=timeline
- 18:9屏幕尺寸
<application android:resizeableActivity="true">
</application>
试了下,确实可以用,但是这个属性却是分屏操作的属性,虽然解决了这个问题,但是分屏操作却开了,适配还是个问题,所以慎用.
三星S8刚出没多久,Android Developers Blog 很快就出了一篇文章:Update your app to take advantage of the larger aspect ratio on new Android flagship devices
- 隐藏SYSTEMUI:
WindowManager mWindowManager = (WindowManager)this.mContext.getSystemService(this.mContext.WINDOW_SERVICE);
WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();
wmParams.format = PixelFormat.RGBA_8888;
//如果设置为:
wmParams.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.INVISIBLE | View.SYSTEM_UI_FLAG_FULLSCREEN;
wmParams.type = WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL|WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
这样可以暂时隐藏,但是当有用户交互点击屏幕的时候,导航键就又显示出来了。
我们来看下源码里面关于SYSTEM_UI_FLAG_FULLSCREEN和SYSTEM_UI_FLAG_HIDE_NAVIGATION的注释
There is a limitation: because navigation controls are so important, the least user
* interaction will cause them to reappear immediately. When this happens, both
* this flag and {@link #SYSTEM_UI_FLAG_FULLSCREEN} will be cleared automatically,
* so that both elements reappear at the same time.
*
* @see #setSystemUiVisibility(int)
*/
public static final int SYSTEM_UI_FLAG_HIDE_NAVIGATION = 0x00000002;android系统有一个限制:因为navigation的控制是很重要的,用户交互会让它们又重新显示出来,这个时候我们设置的SYSTEM_UI_FLAG_FULLSCREEN 和SYSTEM_UI_FLAG_HIDE_NAVIGATION都会自动被清除掉,所以虚拟键又会重新出现。
redmine119459
Google从KK开始增加了状态栏透明以及全屏界面有通知可以下拉状态栏的设计,而这个设计出现的隐患是设置了FULL_SCREEN的界面是无法禁止状态栏下拉的,这样对一些工程测试app可能会造成一定的影响,但是以google默认的设计,应用端无法修改此设计来满足自己的需求。
MTK 内部已经开发提供新的接口来实现全屏界面禁止下拉状态栏
alps/frameworks/base/core/java/android/view/View.java
alps/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
alps/packages/apps/FactoryDevelopX/src/com/example/factorydevelopx/MainActivity.java