android AppCompat, splash启动白屏(黑屏)全屏,去掉状态栏,以及splash与虚拟按键遮挡 | 您所在的位置:网站首页 › 一加9怎么隐藏状态栏 › android AppCompat, splash启动白屏(黑屏)全屏,去掉状态栏,以及splash与虚拟按键遮挡 |
在做项目是,需要加一个splash,以美化应用,消除app启动等待的乏味 一、使用环境 使用Android Studio activity 继承 AppCompatActivity, 实现splash功能 测试环境,没有虚拟返回按键的安卓手机和带有虚拟按键的手机,测试虚拟按键对splash的影响 二、目标与一般实现 一般实现splash是新建一个activity,然后在这个acrivity的xml文件里设置splash背景,这样做的效果和没有加splash的效果一样,即有黑屏或白屏(看使用的主题而定) 三、实现启动无白屏(黑屏) 实现无白屏的原理是,在activity的主题里设置背景,即用自己的splash图片代替app启动时的白屏(默认的启动背景是白屏或黑屏)代码如下: 注:以上这个theme就是完整的配置,直接设置NoTitleFullscreen 为启动Activity的theme,就会得到完美的splash,代码及使用方法如下: 在values/styles.xml里面增加主题 true false true @null @drawable/bg_splash true 其中 @drawable/bg_splash 就是指定一幅启动画面,代替原来的白屏,从而去除白屏//其他参数的作用在下面解释 四、实现在splash隐藏状态栏,以及actionbar 在上面的主题里面已经包含了设置全屏的参数,再次 列出: true false true 五、除了设置启动背景图,还专门增加一个splashActivity 以实现稳定的启动效果从其他博客可以看到,有的作者建议直接使用如下参数,去掉白屏,并且把此作为启动splash @drawable/bg_splash但是实际测试,这样的启动会非常的快,一闪而过(这种做,相当与把以前的白屏替代为自己的图片,白屏是一闪而过) 因此这几建议专门增设一个activity作为splashActivity,并在splashActivity控制splash时间。 这样设计之后的效果是:一共有需要设置两次背景图片: 第一次:splashActivity通过theme设置的启动背景 以下的设置方法: android:theme="@style/NoTitleFullscreen" @drawable/bg_splash第二次:splashActivity页面背景 以下的设置方法: 在SplashActivity的资源文件activity_splash.xml里设置: android:background="@drawable/bg_splash"六、在没有实体按键的手机上,虚拟按键会遮挡启动的splash造成显示不完全 在没有虚拟按键的手机上,这两个背景显示能完美对应,显示正常。 但是在有虚拟按键的手机上,虚拟按键会影响第一次设置的图片的正常显示(图片被虚拟按键遮挡) 针对这个问题在,NoTitleFullscreen里面增加了如下选项; true从而达到在有虚拟按键的的时候,正常显示七、新增SplashActivity的延时java代码实现 public class SplashActivity extends AppCompatActivity { private final Handler mHideHandler = new Handler(); private final Runnable gotoPage = new Runnable() { @Override public void run() { Intent mIntent = new Intent(SplashActivity.this, MainActivity.class); startActivity(mIntent); finish(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); mHideHandler.postDelayed(gotoPage, 3000); } } |
CopyRight 2018-2019 实验室设备网 版权所有 |