交叉动画进度条
来源:互联网 发布:聚合数据平台 编辑:程序博客网 时间:2024/06/02 09:22
好久没写博客啦。。今天来个交叉动画的进度条。。看着挺玄的,现在大多数都是直接使用DialogFragment来实现,那咱们也就用DialogFragment来实现。使用DialogFragment实现对话框和进度条是现在比较流行和常用的方式
要有交叉的动画效果,我们首先需要一些列的图片来构成一个完整的动画,将这些图片按顺序放到一个xml中,随便找一个组件作为它的背景即可
先看xm文件
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg_cross_progress_back" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/tv_cp_load" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/bg_cross_progress" android:text="" /> <TextView android:id="@+id/tv_cp_content" style="@style/text_22" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="@string/app_name" android:textColor="@color/white" /></LinearLayout>接下来就是我们的bg_cross_progres背景即一个包含一些列图片的drawable
<?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/bg_cross_progress_1" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_2" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_3" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_4" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_5" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_6" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_7" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_8" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_9" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_10" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_11" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_12" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_13" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_14" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_15" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_16" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_17" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_18" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_19" android:duration="50"/> <item android:drawable="@drawable/bg_cross_progress_20" android:duration="50"/></animation-list>需要注意的是这个xml文件的根目录是 animation-list,将这个xml文件放到你定义的drawable文件夹中
3:定义自己的交叉动画dialog【继承DialogFragment】
public class CrossProgressDialog extends DialogFragment{ /** 名称&TAG **/ private static final String NAME = CrossProgressDialog.class.getSimpleName(); /** 加载内容对应的bundle key **/ private static final String CONTENT = "dialog_progress_content"; /** 对话框实例 **/ private static CrossProgressDialog mDialog; /** 取消事件 **/ private DialogCancelListener mCancelListener; /** * 消失dialog */ public static void dismissDialog() { if (mDialog != null) { try { mDialog.dismiss(); mDialog = null; } catch (Exception e) { LogUtils.logException(e); } } } /** * {@link android.support.v4.app.DialogFragment#show(FragmentManager, String)} * 显示 */ public static CrossProgressDialog show(FragmentManager fragmentManager) { return show(fragmentManager, null, true); } /** * {@link android.support.v4.app.DialogFragment#show(FragmentManager, String)} * 显示 */ public static CrossProgressDialog show(FragmentManager fragmentManager, String content, boolean cancelable) { return show(fragmentManager, content, cancelable, null); } /** * {@link android.support.v4.app.DialogFragment#show(FragmentManager, String)} * 显示 */ public static CrossProgressDialog show(FragmentManager fragmentManager, String content, boolean cancelable, DialogCancelListener cancelListener) { //存在即移除 removeIfExist(fragmentManager); //初始化对象 mDialog = newInstance(); //设置取消事件 mDialog.setCancelable(cancelable); if (cancelable) { mDialog.mCancelListener = cancelListener; } //设置加载内容 if(!TextUtils.isEmpty(content)) { Bundle args = new Bundle(); args.putString(CONTENT, content); mDialog.setArguments(args); } //显示 mDialog.show(fragmentManager, NAME); return mDialog; } /** * 存在即移除.
初始化的时候若存在则直接强制从pop栈中移除 */ private static void removeIfExist(FragmentManager fragmentManager) { Fragment f = fragmentManager.findFragmentByTag(NAME); if (f != null) { fragmentManager.beginTransaction().remove(f).commit(); } } /** * 初始化实例. * @Description: 初始化 */ private static CrossProgressDialog newInstance() { CrossProgressDialog dialog = new CrossProgressDialog(); dialog.setStyle(STYLE_NO_FRAME, R.style.cross_dialog); return dialog; } @Override public void onCancel(DialogInterface dialog) { super.onCancel(dialog); if (mCancelListener != null) { mCancelListener.onCancelDialog(); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View layout = inflater.inflate(R.layout.dialog_cross_progress, container, false); AnimationDrawable loadAnima = (AnimationDrawable) layout.findViewById(R.id.tv_cp_load).getBackground(); loadAnima.start(); //启动背景动画 TextView tv = (TextView) layout.findViewById(R.id.tv_cp_content); int visibility = View.GONE; //如果有内容,设置内容. if (getArguments() != null) { String content = getArguments().getString(CONTENT); if(!TextUtils.isEmpty(content)) { visibility = View.VISIBLE; tv.setText(content); } } tv.setVisibility(visibility); return layout; }}
ok 了。。最后贴一下dialog的那个style
这个style就是保持屏幕背景不会变暗
<style name="cross_dialog" parent="@style/dialog"> <item name="android:backgroundDimEnabled">false</item> </style>
0 0
- 交叉动画进度条
- 交叉动画进度条
- 进度条动画
- 进度条动画
- HTML进度条动画
- android 加载进度条动画
- Android动画之进度条
- CAShapeLayer 动画圆形进度条
- 进度条动画(纯css)
- 属性动画+圆环进度条
- 利用属性动画实现进度条动画
- Silverlight进度条控件动画源代码
- 用CSS3实现动画进度条
- 动画方式切换的进度条
- 圆形进度条动画效果实现
- 进度条小飞机移动动画
- 不错的android进度条动画
- Android 帧动画 圆形进度条
- Oil Skimming(二分图)
- 从文本文件逐行读入数据
- Problem D:Cross the maze google 2014
- Unity3D研究院之主角面朝方向一定区域内对象角度计算
- hd 2192 MagicBuilding——不要被样例吓到
- 交叉动画进度条
- 利用FFMPEG+Nginx 搭建 HLS 服务器
- android常用四大绘图类
- 10个可考虑跳槽的信号
- 基于应用抛出事件的 Jobs
- Parcel
- POJ1365 Prime Land 初等数论
- 数据结构之图(存储结构、遍历)
- Unix:第20章 正则表达式