参考两个:
选择1来实现
1. http://www.open-open.com/lib/view/open1335576985577.html
2. http://blog.csdn.net/qjlhlh/article/details/7979179
主体代码 如下:
/** * 相关的文件:drawable中的loading图片,loading_round.xml动画文件 * ,styles文件中的LoadingDialog 风格文件 * ,widget_loadingdialog布局文件 * @author lsj */ public class LoadingDialog extends Dialog{ private Context context; private ImageView mImageView; private TextView mTextView; public LoadingDialog(Context context, int theme) { super(context, theme); } //默认的theme public LoadingDialog(Context context){ super(context, R.style.LoadingDialog); this.context=context; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCancelable(false); Log.i("loadingdialog","onCreate"); View loadingView = getLayoutInflater().inflate(R.layout.widget_loadingdialog,null, false); mImageView = (ImageView)loadingView.findViewById(R.id.loadingImageView); mTextView =(TextView)loadingView.findViewById(R.id.loading_text); setContentView(loadingView); } /** * 设置title,在调用 show的时候才onCreate() * 构造方法中还没有onCreate(),所以不能setTitle() * @param title */ public void show(String title) { super.show(); mTextView.setText(title); Log.i("loadingdialog","show"); AnimationDrawable mAnimationDrawable = (AnimationDrawable)mImageView.getBackground(); mAnimationDrawable.start(); } @Override public void onBackPressed() { super.onBackPressed(); if (isShowing()){ dismiss(); } } @Override public void dismiss() { super.dismiss(); } }
style的如下,
<!-- LoadingDialog theme,可以加入背景图片 --> <style name="LoadingDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:windowNoTitle">true</item> </style>
定义的布局文件如下,还可以更加复杂
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:minHeight="60dp" android:minWidth="200dp" android:gravity="center" android:background="@color/white" > <ImageView android:id="@+id/loadingImageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/loading_round"> </ImageView> <TextView android:id="@+id/loading_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:textSize="20dp" /> </LinearLayout>
最后是动画 的文件
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/loading_01" android:duration="100"/> <item android:drawable="@drawable/loading_02" android:duration="100"/> <item android:drawable="@drawable/loading_03" android:duration="100"/> <item android:drawable="@drawable/loading_04" android:duration="100"/> <item android:drawable="@drawable/loading_05" android:duration="100"/> <item android:drawable="@drawable/loading_06" android:duration="100"/> <item android:drawable="@drawable/loading_07" android:duration="100"/> <item android:drawable="@drawable/loading_08" android:duration="100"/> <item android:drawable="@drawable/loading_09" android:duration="100"/> <item android:drawable="@drawable/loading_10" android:duration="100"/> <item android:drawable="@drawable/loading_11" android:duration="100"/> <item android:drawable="@drawable/loading_12" android:duration="100"/> </animation-list>