我正在尝试为我的应用程序做一个启动画面。我用了这个postDelayed
方法。这是我的代码:
public class SplashScreenActivity extends Activity {
private static final int SPLASH_DURATION_MS = 1500;
private static final String TAG = SplashScreenActivity.class.getSimpleName();
private Handler mHandler = new Handler();
public static final int sdkVersion = Build.VERSION.SDK_INT;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_screen);
Random r = new Random();
int imageNumber = r.nextInt(2 - 0) + 0;
ImageView splashScreenBackground = (ImageView)findViewById(R.id.splash_screen_image);
switch (imageNumber){
case 0:
if(sdkVersion > 20)
splashScreenBackground.setBackground(getDrawable(R.drawable.splash_screen_back));
else
splashScreenBackground.setBackgroundDrawable(getResources().getDrawable(R.drawable.splash_screen_back));
return;
case 1:
if(sdkVersion > 20)
splashScreenBackground.setBackground(getDrawable(R.drawable.buffon));
else
splashScreenBackground.setBackgroundDrawable(getResources().getDrawable(R.drawable.buffon));
return;
}
mHandler.postDelayed(mEndSplash, SPLASH_DURATION_MS);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mEndSplash.run();
return super.onTouchEvent(event);
}
private Runnable mEndSplash = new Runnable() {
public void run() {
if (!isFinishing()) {
mHandler.removeCallbacks(this);
Log.d(TAG, "Debugging before intent");
startActivity(new Intent(
SplashScreenActivity.this, MainActivity.class
));
Log.d(TAG, "Debugging after intent");
finish();
}
};
};
}
这是方法中的调用onCreate
:
mHandler.postDelayed(mEndSplash, SPLASH_DURATION_MS);
问题是在我按下屏幕之前,活动不会改变。
另一件事,课程MainActivity
收费并显示日志,但我没有在屏幕上看到它!我想知道有什么问题。谢谢