使用AsynTask进行Squre Image旋转的自定义进度对话框

我创建了一个自定义加载进度对话框。 而且运作良好。

我正在旋转12平方图像这里是其中之一

在此处输入图像描述

但是,当我想与AsynTask一起使用时,animation无效。

我的示例代码如下。

我开始加载的活动…animation和停止。

MainActivity.java

public class MainActivity extends Activity { AnimationDrawable loadingViewAnim; TextView loadigText; ImageView loadigIcon; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loadigText = (TextView) findViewById(R.id.textView1); loadigText.setText("Loading..."); loadigText.setVisibility(View.GONE); loadigIcon = (ImageView) findViewById(R.id.imageView1); loadigIcon.setVisibility(View.GONE); loadigIcon.setBackgroundResource(R.anim.progress_animation_white); loadingViewAnim = (AnimationDrawable) loadigIcon.getBackground(); } //When User Touch on Screen The Loading... Animation Starts With Image Rotation //If I start below code in AsynTask's onPreExecute method it doesn't work public boolean onTouchEvent(MotionEvent event) { loadigText.setVisibility(View.VISIBLE); loadigIcon.setVisibility(View.VISIBLE); if (event.getAction() == MotionEvent.ACTION_DOWN) { loadingViewAnim.start(); return true; } return super.onTouchEvent(event); } } 

使用简单文本和图像进行对话框的XML布局。

activity_main.xml中

     

animation列表有12个图像我旋转角度和时间持续时间

progress_animation_white.xml

               

这是结果载入画面..

在此处输入图像描述

我的问题是无论如何 使用AsynTask 实现相同的加载animation

您的小帮助将不胜感激。

感谢@Brontok和@URAndroid的帮助。 我解决了我的问题。 所以让我回答我自己的问题,Hoe我实现了自定义加载animation

我添加了一些Image for Image Rotation Animation

第1步 –在res / drawable文件夹中

  1. progress_sm_w00.png(默认空白透明图片)
  2. progress_sm_w01.png(第一个animation位置)
  3. progress_sm_w02.png
  4. progress_sm_w03.png
  5. progress_sm_w04.png
  6. progress_sm_w05.png
  7. progress_sm_w06.png
  8. progress_sm_w07.png
  9. progress_sm_w08.png
  10. progress_sm_w09.png
  11. progress_sm_w10.png
  12. progress_sm_w11.png
  13. progress_sm_w12.png(上一个animation位置)。

示例:其中一个是我添加的

在此处输入图像描述

第2步 –在res / anim文件夹中创建animation文件名“loading_animation.xml”

              

第3步 –现在在我的屏幕(活动)中创建自定义加载视图布局,无论我需要显示加载

例。 我的Facebook登录屏幕的XML布局

     

第4步 –在java代码(Activity)中我创建了Loading视图,在完成OnCreate方法之后,我启动了Asyn Task,这样我的animation才能正常工作。

 public class ResultActivity extends Activity { private static final String TAG = "ResultActivity"; private AnimationDrawable loadingViewAnim=null; private TextView loadigText = null; private ImageView loadigIcon = null; private LinearLayout loadingLayout = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); loadingLayout = (LinearLayout)findViewById(R.id.LinearLayout1); loadingLayout.setVisibility(View.GONE); loadigText = (TextView) findViewById(R.id.textView111); loadigText.setVisibility(View.GONE); loadigIcon = (ImageView) findViewById(R.id.imageView111); loadigIcon.setVisibility(View.GONE); loadigIcon.setBackgroundResource(R.anim.loading_animation); loadingViewAnim = (AnimationDrawable) loadigIcon.getBackground(); // This line is to start Asyn Task only when OnCreate Method get completed, So Loading Icon Rotation Animation work properly loadigIcon.post(new Starter()); } class Starter implements Runnable { public void run() { //start Asyn Task here new LongOperation().execute(""); } } private class LongOperation extends AsyncTask { @Override protected String doInBackground(String... params) { //ToDo your Network Job/Request etc. here return "Executed"; } @Override protected void onPostExecute(String result) { //ToDo with result you got from Task //Stop Loading Animation loadingLayout.setVisibility(View.GONE); loadigText.setVisibility(View.GONE); loadigIcon.setVisibility(View.GONE); loadingViewAnim.stop(); } @Override protected void onPreExecute() { //Start Loading Animation loadingLayout.setVisibility(View.VISIBLE); loadigText.setVisibility(View.VISIBLE); loadigIcon.setVisibility(View.VISIBLE); loadingViewAnim.start(); } @Override protected void onProgressUpdate(Void... values) {} } } 

第5步 –这是带有进度加载animation的结果屏幕。

在此处输入图像描述

希望这会帮助你。 干杯!!

也许你可以使用GLIDE

 Glide.with(context) .load(imageUrl) .asGif() .placeholder(R.drawable.loading2) .crossFade() .into(imageView); 

使用Glide显示GIF文件(图像加载和缓存库)