我试图在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>
答案 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();