我的工作应该有一个progressdialog的项目。 但因为我没有找到一个简单的方法来风格progressdialog,我在想,是最简单的方法是创建它自己的风格自定义对话框类,并在其上一帧一帧的动画,并显示它来代替。 这里是我的代码:
在该对话框的XML布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/dialog_background"
android:gravity="center"
android:orientation="horizontal"
android:padding="10dp" >
<ImageView
android:id="@+id/loaddialog_animation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/loadanimation"
android:layout_marginRight="10dp" />
<TextView
android:id="@+id/loaddialog_text"
style="@style/SmallText"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
这里是我的对话框类:
public class LoadDialog extends Dialog
{
private TextView message;
ImageView image;
AnimationDrawable animation;
public LoadDialog(Context context)
{
super(context, R.style.Dialog);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.load_dialog);
message = (TextView) findViewById(R.id.loaddialog_text);
image = (ImageView) findViewById(R.id.loaddialog_animation);
image.setBackgroundResource(R.drawable.loadanimation);
animation = (AnimationDrawable) image.getBackground();
}
public void setText(String msg)
{
message.setText(msg);
}
@Override
public void show()
{
super.show();
animation.start();
}
@Override
public void dismiss()
{
animation.stop();
super.dismiss();
}
}
和动画资源:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true" >
<item android:drawable="@drawable/loadbar_01" android:duration="50" />
<item android:drawable="@drawable/loadbar_02" android:duration="50" />
<item android:drawable="@drawable/loadbar_03" android:duration="50"/>
</animation-list>
问题是,动画不启动,当我尝试证明这一点。 我知道,有很多关于这个问题的话题,但这里有事情,我曾尝试:
- 把我的活动的不同部分的对话框显示()的onResume()和的onCreate()。 onWindowFocusChanged()是不是一种选择,因为我要显示一个对话框。 示对话框 - >焦点变化,对话框dismissed->焦点变化 - >示出的对话框的无限量。
- 我曾尝试animation.setCallback(图像),animation.setVisible(真实的,真实的),animation.invalidateSelf()没有人的作品。
- 我曾尝试image.post(),把一个可运行在那里作为一个参数,并在运行方法启动动画,没有运气。
在这一点上,我开始跑出来的选择。 在我只是想表现出3个图像改变,直到对话框被驳回。 请,如果你知道,我在做什么错,或任何替代,让我知道!
提前致谢!