Android自定义类似ProgressDialog效果的Dialog.
方法如下:
1.首先准备两张自己要定义成哪样子的效果的图片和背景图片(也可以不要背景)。
如我要的效果:
2.定义loading_dialog.xml布局文件(这里你也可以按自己的布局效果定义,关键是要有个imageView):
3.定义一个loadingDialog中imageView转动的动画:loading_animation.xml
4.定义dialog的style.
<!-- 自定义loading dialog --> <style name="loading_dialog" parent="android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@drawable/loading_bg</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> </style>
5.写点创建Dialog的代码,你可以自己封装成一个方法。
/** * 得到自定义的progressDialog * @param context * @param msg * @return */ public static Dialog createLoadingDialog(Context context, String msg) { LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(R.layout.loading_dialog, null);// 得到加载view LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局 // main.xml中的ImageView ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img); TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字 // 加载动画 Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation( context, R.anim.load_animation); // 使用ImageView显示动画 spaceshipImage.startAnimation(hyperspaceJumpAnimation); tipTextView.setText(msg);// 设置加载信息 Dialog loadingDialog = new Dialog(context, R.style.loading_dialog);// 创建自定义样式dialog loadingDialog.setCancelable(false);// 不可以用“返回键”取消 loadingDialog.setContentView(layout, new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));// 设置布局 return loadingDialog; }
最后来张整体的效果图:
-------------------------------------------------------------------------------------------------------------------------------------
换成ImageView以后,我们需要让这个ImageView动起来,这就需要对它进行一个anim处理。
实现思路是:用一个动画代替ImageView的图片资源,然后让动画动起来就OK了。
将这个资源当作ImageView的背景图片
<?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/icon_loading1" android:duration="100"/> <item android:drawable="@drawable/icon_loading2" android:duration="100"/> <item android:drawable="@drawable/icon_loading3" android:duration="100"/> <item android:drawable="@drawable/icon_loading4" android:duration="100"/> <item android:drawable="@drawable/icon_loading5" android:duration="100"/> <item android:drawable="@drawable/icon_loading6" android:duration="100"/> <item android:drawable="@drawable/icon_loading7" android:duration="100"/> <item android:drawable="@drawable/icon_loading8" android:duration="100"/> </animation-list>
然后就要在MyProgressDialog类里面让动画启动了
完成这些,然后就可以在Activity里面调用我们的MyProgressDialog了。
Android自定义类似ProgressDialog效果的Dialog,布布扣,bubuko.com
Android自定义类似ProgressDialog效果的Dialog
原文:http://www.cnblogs.com/niray/p/3857253.html