我有一个Android应用程序,其中显示了3秒钟的“启动画面”。之后,MainActivity被加载。
不幸的是,MainActivity需要额外的〜4秒来加载。首次启动时间更长。但是,在加载该应用程序后,一切都会顺利进行。
现在如何在启动屏幕显示期间实现MainActivity的加载?它只应显示一个图像,直到整个东西完全加载为止。我已经阅读了有关Async-
Task的信息,但不确定将其放置在何处以及如何正确使用它。有谁可以帮助我吗?
SplashScreen.java
public class SplashScreen extends Activity {
private static int SPLASH_TIME_OUT = 3000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_startup);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(SplashScreen.this, MainActivity.class);
startActivity(i);
finish();
}
}, SPLASH_TIME_OUT);
}
}
MainActivity.java
public class MainActivity extends Activity implements OnClickListener, MediaController.MediaPlayerControl {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Some heavy processing
//starting services
//starting Google Text to Speech
//and so on...
}
}
如果对于显示初始屏幕的时间没有特定限制,则可以通过AsyncTask
以下方式使用:
public class SplashScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_startup);
startHeavyProcessing();
}
private void startHeavyProcessing(){
new LongOperation().execute("");
}
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
//some heavy processing resulting in a Data String
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.interrupted();
}
}
return "whatever result you have";
}
@Override
protected void onPostExecute(String result) {
Intent i = new Intent(SplashScreen.this, MainActivity.class);
i.putExtra("data", result);
startActivity(i);
finish();
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
}
如果结果数据不是字符串,则可以将Parcelable
对象作为活动的额外内容。在onCreate
你可以检索数据:
getIntent().getExtras.getString('data');
问题内容: 我尝试在我的网站中实施AJAX。单击div changepass的内容时,则应加载changepass.template.php。这是我为此使用的代码。 我的问题是在页面changepass.template.php完全加载时如何显示GIF动画(loading.gif)。请给我一些代码提示。 问题答案: 有很多方法可以做到这一点。一种简单的方法: JS: 詹姆斯·怀斯曼 ( James
本文向大家介绍jQuery Ajax 加载数据时异步显示加载动画,包括了jQuery Ajax 加载数据时异步显示加载动画的使用技巧和注意事项,需要的朋友参考一下 ajax加载后台数据就不说的那么细了。 看下面代码首先前台上放置代码 在js脚本文件中首先把这个图片动画隐藏 代码如下 然后异步ajax提交请求代码如下 ..................... 注意: async: true, 当
我知道这是Android Studio的一个老问题,但请相信我,我尝试了在Stack Overflow旧线程上发现的所有问题(2016年和2017年的解决方案,很明显在2021不再有效)。 我安装了Android Studio,当我启动它时,它不会运行。我尝试将JAVA\u HOME、JDK\u HOME、STUDIO\u JDK设置为Android STUDIO附带的JRE文件夹和C:\Prog
主要内容:ion-spinner,实例ion-spinner ionSpinner 提供了许多种旋转加载的动画图标。当你的界面加载时,你就可以呈现给用户相应的加载图标。 该图标采用的是SVG。 用法 像大部分其他的ionic组件一样,spinner也可以使用ionic的标准颜色命名规则,就像下面这样: 实例 HTML 代码 CSS 代码 JavaScript 代码 尝试一下 » 效果如下所示:
ion-spinner ionSpinner 提供了许多种旋转加载的动画图标。当你的界面加载时,你就可以呈现给用户相应的加载图标。 该图标采用的是SVG。 用法 <ion-spinner icon="spiral"></ion-spinner> //默认用法 像大部分其他的ionic组件一样,spinner也可以使用ionic的标准颜色命名规则,就像下面这样: <ion-spinner
显示加载动画 Tida.showLoading("加载中..."); 隐藏加载动画 Tida.hideLoading();