【发布时间】:2013-11-22 22:10:18
【问题描述】:
我创建了一个自定义加载进度对话框。而且效果很好。
我正在旋转 12 个正方形图像,这里是其中之一
但是当我想将它与 AsynTask 一起使用时,动画不起作用。
我的示例代码如下。
我开始加载的活动...动画和停止。
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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/progress_sm_w01" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Loading..."
android:textColor="#ffffff"
android:textSize="12sp" />
</LinearLayout>
动画列表有 12 张图像,我正在旋转角度和持续时间
progress_animation_white.xml
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/progress_sm_w01" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w02" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w03" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w04" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w05" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w06" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w07" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w08" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w09" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w10" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w11" android:duration="50" />
<item android:drawable="@drawable/progress_sm_w12" android:duration="50" />
</animation-list>
这是结果加载屏幕..
我的问题是有没有办法实现相同的加载动画 使用 AsynTask。
您的小帮助将不胜感激。
【问题讨论】:
-
为什么要使用AsyncTask? onTouchEvent 只会在您触摸屏幕时执行。
-
@Brontok 是的 同意亲爱的,但是有什么办法可以在 AsynTask 进度加载的情况下旋转方形图像? 因为我想将此自定义进度对话框与我的网络作业一起使用,为此我正在使用 AsynTask。
-
嗯,你必须在 onPreExecute() 中开始你的动画,现在在 doInBackground() 中执行你的后台操作,并在 onPostExecute() 方法中停止你的动画。正如您在动画中定义的 50 毫秒时间,应该在运行时在 java 代码中完成。
-
@Brontok 好的,我会这样做并让您知道,谢谢您的帮助。
标签: android animation android-asynctask progressdialog