Android 如何在加载活动时显示飞溅图像
我有一个包含许多UI视图的活动。在onCreate方法中,我发现setContentView的单行需要8-12秒才能完成。所以我想在加载时显示我的徽标图像。我尝试了很多事情,但没有成功。我怀疑主要原因可能是在完成setContentView之前,什么都不能显示 任何帮助都将不胜感激 更新: 我想很多人不知道在完成setContentView之前不能显示任何对话框。因此,使用另一种飞溅活动对我毫无帮助 更新2Android 如何在加载活动时显示飞溅图像,android,splash-screen,Android,Splash Screen,我有一个包含许多UI视图的活动。在onCreate方法中,我发现setContentView的单行需要8-12秒才能完成。所以我想在加载时显示我的徽标图像。我尝试了很多事情,但没有成功。我怀疑主要原因可能是在完成setContentView之前,什么都不能显示 任何帮助都将不胜感激 更新: 我想很多人不知道在完成setContentView之前不能显示任何对话框。因此,使用另一种飞溅活动对我毫无帮助 更新2 找到问题的原因后,我忘记更新此问题。请参考以下问题:下面是使用CountDownTime
找到问题的原因后,我忘记更新此问题。请参考以下问题:下面是使用CountDownTimer类创建初始屏幕的简单代码
public class SplashDialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// Be sure to call the super class.
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.layout);
counter.start();
}
MyCount counter = new MyCount(5000, 1000);
public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
go_back();
}
@Override
public void onTick(long millisUntilFinished) {
}
}
public void go_back()
{
counter.cancel();
Intent i=new Intent(this,account.class);
i.putExtra("first_time", true);
startActivity(i);
this.finish();
}
}
请在启动页面中尝试此代码
private Thread mSplashThread;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splesh);
final Splash sPlashScreen = this;
mSplashThread = new Thread(){
@Override
public void run(){
try {
synchronized(this){
wait(5000);
}
}
catch(InterruptedException ex){
}
finish();
Intent intent = new Intent();
intent.setClass(sPlashScreen,Login.class);
startActivity(intent);
stop();
}
};
mSplashThread.start();
}
// Processes splash screen touch events
@Override
public boolean onTouchEvent(MotionEvent evt) {
if(evt.getAction() == MotionEvent.ACTION_DOWN)
{
synchronized(mSplashThread){
mSplashThread.notifyAll();
}
}
return true;
}
使用
AsyncTask
将splash放入onPreExecute()
并在doInBackground()中完成您的工作
关闭splash inonPostExecute()
我建议您使用我的方法:[Link][1]它对我来说很好。[1] :先生,您可以缩短MyCount计数器=新建MyCount(2000,1000)的时间;2000表示2秒。因此,这就是如何控制splashscreen显示的时间try以同时显示两个屏幕(splash和main)在一个活动中,通过两次使用setContentView,并且在两次使用之间,您可以使用thread或timerone。如果setContentView需要时间,则尝试在运行时而不是在设计时加载数据或图像文件