很久的时间,安卓启动总有2s甚至更长时间的黑屏时间,这个问题也一直没有时间解决。最近抽空加了一个,不能完全解决黑屏时间问题,有部分机型仍然会有黑屏时间,但会大大缩短,在这里跟大家分享。(注:安卓小白瞎搞的)
1、在/res/layout中增加一个luancher.xml
//其中需要修改的是:background="@drawable/startpic",在项目中加入你的启动图,这里改成你的启动图
2、在AppActivity.java中加入以下代码:
//onCreate方法中加入:
instance = this;
AppActivity.showLauncher();
//-------启动页
static public AppActivity instance;
static public View launcherView;
public static void showLauncher(){
Log.d("LAUNCHER", "SHOW");
instance.runOnUiThread(new Runnable() {
@Override
public void run() {
if(launcherView == null) {
launcherView = LayoutInflater.from(instance).inflate(R.layout.activity_launcher, null);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
instance.addContentView(launcherView, params);
}
}
});
}
public static void hideLauncher(){
Log.d("LAUNCHER", "HIDE");
instance.runOnUiThread(new Runnable() {
//这里加一个渐隐的动画
@Override
public void run() {
if(launcherView != null) {
AlphaAnimation mHideAnimation = new AlphaAnimation(1.0f, 0.0f);
mHideAnimation.setDuration(200);
mHideAnimation.setFillAfter(true);
launcherView.startAnimation(mHideAnimation);
}
}
});
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(250);
instance.runOnUiThread(new Runnable() {
@Override
public void run() {
if(launcherView != null) {
ViewGroup vg = (ViewGroup) launcherView.getParent();
vg.removeView(launcherView);
launcherView = null;
}
}
});
}
catch (InterruptedException e) {
instance.runOnUiThread(new Runnable() {
@Override
public void run() {
if(launcherView != null) {
ViewGroup vg = (ViewGroup) launcherView.getParent();
vg.removeView(launcherView);
launcherView = null;
}
}
});
}
}
}).start();
}
3、在你的首界面加载后移除启动图,我在首界面的onload方法中调用 hideLauncher() 方法
