【Android】进入应用和切换界面时闪屏的问题

【关键词】

闪屏 切换界面

【问题】
  • 从 launcher 中进入应用的时候,开始有一瞬间的空白,而不是直接展示背景;
【分析】
  • 在绘制界面的时候,Android会先画背景,接着绘制其他区域(这个背景和 theme 有关);
【解决方案】
  • 直接修改 theme 中的背景为 activity 的背景;
  • 在主题中,将android:windowBackground属性直接指定为自己想要的背景色或背景图;

【代码】

在styles.xml中添加

 
 
<style name="MyTheme" parent="AppTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/holo_purple</item>
</style>

修改Manifest

 
 
<activity
android:theme="@style/MyTheme"
android:name=".FirstActivity"
android:label="@string/app_name1" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
 
<activity
android:theme="@style/MyTheme"
android:name=".SecondActivity" >
</activity>
【扩展】

如果是设置只包含一张图片的欢迎界面,那就更简单了

  • 在 Mainfest 中指定欢迎界面 activity的时候设置 theme为一个包含此图片的style,引用此 theme 即可:

       
       
    <style name="MyTheme" parent="AppTheme">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@drawable/bg</item>
    </style>
  • 接着,欢迎界面的 activity 只需要处理跳转到主界面的逻辑即可,而不需要处理视图(即不用设置setContentView(););

       
       
    public class WelcomeActivity extends Activity {
     
    private Handler mHandler = new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // 2秒后跳转到主界面
    mHandler.postDelayed(toMainActivityRunnable(), 2000);
    super.onCreate(savedInstanceState);
    }
     
    private Runnable toMainActivityRunnable() {
    return new Runnable() {
    @Override
    public void run() {
    Intent intent = new Intent(WelcomeActivity.this, MainActivity.class);
    // 退出程序的时候不在经过欢迎界面
    startActivityForResult(intent, 0);
    }
    };
    }
     
    // 展示欢迎界面的时候,不允许其他操作(例如按返回键退出)
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    return false;
    }
     
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == 0){
    finish();
    }
    super.onActivityResult(requestCode, resultCode, data);
    }
    }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值