我想知道在我的活动加载之前是否可以显示某种动画。因为当我启动我的应用程序时,大约需要5秒才能看到活动。在加载之前,会显示一个白色屏幕(请参阅下面的图像)。
我能这样做吗?
如果可以,应该怎么做?
提前谢谢你。 祝你有美好的一天。
答案 0 :(得分:1)
我不知道您是否可以在那里放置动画,但您可以使用带有应用徽标或任何内容的启动画面作为背景。查看此启动画面所花费的时间恰好是应用程序自行配置所需的时间。所以任何设备都没有区别。
在res / drawable创建XML drawable:
<item
android:drawable="@color/gray"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
导航到styles.xml文件并为您的splash活动添加新主题。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
制作您的Splash屏幕活动。无需为此活动设置视图。视图来自主题。在主题中为您的启动活动设置UI时,它会立即可用。
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
在新的SplashTheme中,将窗口背景属性设置为XML drawable。在AndroidManifest.xml中将其配置为启动活动的主题:
答案 1 :(得分:0)
如果您正在下载某些数据或者您有大量的列表视图 - 您还有其他问题......
下载数据:减少应用工作所需的数据量
listview - 用户吓坏了recyclerview
如果这是一个合法的问题 - 那么你需要某种类型的监听器(表明工作完成时),如Thread.join(),每当监听器激活时 - 它应该转到另一个意图并杀死最后一个(转到杀死你需要使用finish();)
答案 2 :(得分:0)
尝试在ProgressDialog
AsyncTask
new YourFragment.YourAsyncTask().execute();
使用此库sweet-alert-dialog进行更多动画加载
class YourAsyncTask extends AsyncTask<Void, Void, Void> {
SweetAlertDialog pDialog;
@Override
protected void onPreExecute() {
//show your dialog here
super.onPreExecute();
pDialog = new SweetAlertDialog(getContext(), SweetAlertDialog.PROGRESS_TYPE);
pDialog.getProgressHelper().setBarColor(Color.parseColor("#fdc80b"));
pDialog.setTitleText("Loading...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void result) {
//hide your dialog here
super.onPostExecute(result);
pDialog.dismissWithAnimation();
}
}
}
}