适配闪屏页

1.使用多个 dpi 的 drawable 对 drawable 进行适配

2.对闪屏页进行适配

对闪屏页配置闪屏 Theme -> Splash

true

true

@drawable/splash_welcome

需要在闪屏页停留

使用 smallestWidth 限定符对屏幕进行适配

这种方法可以通过Handler指定在闪屏页停留的时间

编写 @drawable/splash_welcome.xml -> layer-list 文件代码

编写闪屏页代码(将 setContentView() 注掉)

class SplashActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

//setContentView(R.layout.activity_splash)

Handler().postDelayed(Runnable {

startActivity(Intent(this, MaiMainAnActivity::class.java))

},1000)

}

}

不需要在闪屏页停留,即 Application 初始完成之后直接跳转到 MainActivity

此方法不依赖屏幕适配

编写 @drawable/splash_welcome.xml -> layer-list 文件代码

编写闪屏页代码(将 setContentView() 注掉)

class SplashActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

startActivity(Intent(this, MainActivity::class.java))

// 去掉 Android Activity 自带的原生进入进出动画

activity.overridePendingTransition(0, 0);

finish()

}

}

@drawable/splash_welcome.xml 文件代码,仅供参考

android:bottom="@dimen/dp_151"

android:gravity="fill">

android:bottom="@dimen/dp_211"

android:gravity="fill"

android:top="@dimen/dp_81">

android:bottom="@dimen/dp_41"

android:gravity="center|bottom"

android:left="@dimen/dp_125"

android:right="@dimen/dp_125">

遇到的坑

最开始是用 AndroidAutoSize 今日头条屏幕适配方案 进行的屏幕适配

在闪屏页停留时图片会进行拉伸一下(项目需求,测试过不停留就不会出现拉伸现象)

可能的原因

AndroidAutoSize 适配计算 是在 Application 的时候进行的,因为在 @drawable/splash_welcome 中使用的了 dp 单位 所以当 AndroidAutoSize 计算完成对 dp 的计算时,就会重新更新 @drawable/splash_welcome,从而造成拉伸

对比 smallestWidth 限定符对屏幕方案 在 运行前(引用@dimen/dp_value时)就已经计算好了,所以不会有再次拉伸的情况

参考

smallestWidth 限定符屏幕适配方案

AndroidAutoSize 今日头条屏幕适配方案

去掉 Android Activity 自带的原生进入进出动画

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐