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

【关键词】

闪屏 切换界面

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

【代码】

在styles.xml中添加


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

修改Manifest


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

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

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

    
    
    name="MyTheme" parent="AppTheme">
    name="android:windowNoTitle">true
    name="android:windowBackground">@drawable/bg
  • 接着,欢迎界面的 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);
    }
    }

你可能感兴趣的:(Android)