版权声明:本文为HaiyuKing原创文章,转载请注明出处!html
全面屏是手机业界对于超高屏占比手机设计的一个宽泛的定义。从字面上解释就是,手机的正面所有都是屏幕,四个边框位置都是采用无边框设计,追求接近100%的屏占比。但受限于目前的技术,还不能作到手机正面屏占比100%的手机。如今业内所说的全面屏手机是指真实屏占比能够达到80%以上,拥有超窄边框设计的手机。android
全面屏手机屏幕的宽高比例比较特殊,再也不是之前的16:9了。好比三星的Galaxy S8屏幕分辨率是:2960×1440,对应的屏幕比例为:18.5:9。VIVO X20手机屏幕分辨率是2160x1080,对应的屏幕比例:18:9。对于这种奇葩的屏幕比例,APP开发者该如何去优化本身的应用,才能在这些手机上显示的更加完美呢?下面,从如下方面来探究APP完美适配全面屏手机的方法。app
1、声明最大屏幕高宽比(解决黑边问题)布局
2、启动页适配优化
3、虚拟导航键(Navigation Bar)优化spa
这里简单介绍下声明最大屏幕高宽比、启动页适配。.net
因为全面屏手机的高宽比比以前大,若是不适配的话,Android默认为最大的宽高比是1.86,小于全面屏手机的宽高比,所以,在全面屏手机上打开部分App时,上下就会留有空间,显示为黑条。这样很是影响视觉体验,另外全面屏提供的额外空间也没有得以利用,所以,这样的应用须要作相关适配。设计
注意:targetSdkVersion==24(Android7.0)及以上默认支持了分屏模式,即Manifest文件中配置Activity的android:resizeableActivity默认属性为true,在这种状况下并不须要配置android.max_aspect比例值便可自动适配全面屏。若是因为某些缘由(UI适配等)禁止了分屏模式,这个时候就要注意了!须要用到上面的代码,不然将出现上下黑条的显示效果,奇丑无比!3d
因此,对于下面的状况须要考虑适配!code
目前有两种解决方案:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cn.cctvnews"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/TranslucentTheme"> <!--适配19:9全面屏黑边问题:https://blog.csdn.net/darkeet/article/details/80049913--> <!--https://blog.csdn.net/weelyy/article/details/79284332--> <meta-data android:name="android.max_aspect" android:value="2.2"/> <!-- 首页界面 --> <activity android:name=".activity.MainActivity" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
在targetSdkVersion==24(Android 7.0)以上Google默认支持了分屏模式,即Manifest文件中配置Activity的android:resizeableActivity默认属性为true。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.why.project.androidstartingwindowdemo"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" android:resizeableActivity="true"> <!--首页--> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
在作启动优化,解决冷启动白屏的时候,咱们每每会为要启动的Activity设置主题为一张背景图。参考《Android APP应用启动页白屏(StartingWindow)优化》
那么问题就来了,以往16:9的的背景图在18:9的屏幕中会有什么表现呢?答案是会被拉伸变形。
解决方案有如下几种方案:
在欢迎界面的布局文件中采用相对布局的方式,能够理解为将以前完整的一个背景图拆分红几个小图,而后组合在一块儿。这样必定程度上避免拉伸。
保留背景图完整,在此基础上经过Android Studio制做.9图。
这里简单介绍下实现步骤,首先,以《Android APP应用启动页白屏(StartingWindow)优化》为例,在适配前看下运行在全面屏上的效果:
注意:扩展名必定要.png,而且图片不能作压缩处理。不然有可能建立不成功。
.9.png图片的用处能够归纳为如下两点:
.9.png图片和普通图片相比较,周围会有一条黑色的线条,这些黑色线条有什么做用呢?就是用于指定咱们背景的拉伸区域或者前景内容的显示区域。
----摘自《Android设计中的.9.png图片》
那么,对于startingwindow_bg.png这张图片来说,咱们只须要设置左边和上边的拉伸区域便可。好比,咱们想要作成下面的效果(左侧的图应该是合适的,有时候右边图也是能够的,根据实际状况处理):
首先,因为图片很大,因此须要放大比例才能够准肯定位到边界,随便画出一条黑线出来
而后,缩小到原图,选中show patches,鼠标定位到区域的边界进行拖动调整
以此类推,分别画出左边和上边的黑线。
运行效果以下: