无法在android中取消onPostExecute()中的动画加载

时间:2014-06-23 12:21:04

标签: android animation

我试图在android中使用asynctask显示一些动画加载。但是我无法显示我期待的动画,更多的是我无法取消动画。 任何人都可以帮我解决这个问题。

感谢您宝贵的时间!..

Show_AnimatedLoading.java

ImageView imageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imageView=(ImageView) findViewById(R.id.imageView1);

    CustomLoad task = new CustomLoad();
    task.execute();
}

 public class CustomLoad extends AsyncTask<Void, Void, Void>
 {

   @Override
   protected void onPreExecute() {
    // TODO Auto-generated method stub

       Show_animation();


   }

   private void Show_animation() {
    // TODO Auto-generated method stub
       Animation a = AnimationUtils.loadAnimation(Show_AnimatedLoading.this, R.anim.progress_anim);
        a.setDuration(2000);
        imageView.startAnimation(a);


        a.setInterpolator(new Interpolator()
        {
            private final int frameCount = 50;

            @Override
            public float getInterpolation(float input)
            {
                return (float)Math.floor(input*frameCount)/frameCount;
            }
        });
}

@Override
   protected Void doInBackground(Void... params) 
   {
    // TODO Auto-generated method stub
    return null;

   }

   @Override
   protected void onPostExecute(Void result) {
    // TODO Auto-generated method stub

       imageView.clearAnimation();

   } 
 }

Progress.xml

<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite" />

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000">

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:contentDescription="@string/app_name"
    android:src="@drawable/transp_load" />

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:contentDescription="@string/app_name"
    android:src="@drawable/pc_logo_load" /></RelativeLayout>      

1 个答案:

答案 0 :(得分:1)

据我所知,您的AsyncTask没有任何后台操作。所以&#34;发布执行&#34;在&#34; pre execute&#34;之后开始清除动画的地方。你开始动画的地方。你没有看到任何东西是正常的。尝试添加一些后台操作。

试试这个,

final Handler handler = new Handler();

    // TODO
    // Pre execute.

    new Thread(new Runnable() {

        @Override
        public void run() {
            // TODO
            // Background operation.


            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
                    // TODO 
                    // Post Execute.

                }
            }, 3000);
        }
    }).start();