在我的活动加载之前,我可以显示动画吗?

时间:2017-04-16 20:29:05

标签: java android animation

我想知道在我的活动加载之前是否可以显示某种动画。因为当我启动我的应用程序时,大约需要5秒才能看到活动。在加载之前,会显示一个白色屏幕(请参阅下面的图像)。

enter image description here

我能这样做吗?

如果可以,应该怎么做?

提前谢谢你。 祝你有美好的一天。

3 个答案:

答案 0 :(得分:1)

我不知道您是否可以在那里放置动画,但您可以使用带有应用徽标或任何内容的启动画面作为背景。查看此启动画面所花费的时间恰好是应用程序自行配置所需的时间。所以任何设备都没有区别。

  1. 在res / drawable创建XML drawable:

    <item
        android:drawable="@color/gray"/>
    
    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>
    
    1. 导航到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>
      

    2. 制作您的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();
          }
      }
      
    3. 在新的SplashTheme中,将窗口背景属性设置为XML drawable。在AndroidManifest.xml中将其配置为启动活动的主题:

    4. enter image description here

答案 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();
        }
    }
}

}