Android之仿美团加载数据帧动画
程序员文章站
2022-05-30 18:18:06
一:先来张效果图(这里是gif动画,我就截屏的所有没有动画,实际是动的):
二:实现步骤:
1、xml布局
一:先来张效果图(这里是gif动画,我就截屏的所有没有动画,实际是动的):
二:实现步骤:
1、xml布局
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <textview android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignparentbottom="true" android:layout_margin="20dp" android:background="@drawable/animationtk" android:gravity="center" android:text="点击弹出动画" android:textcolor="#fff" android:textsize="18dp" /> </relativelayout>
2.activity代码
package cll.com.myapplication; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.textview; /** * @description 奔跑小人的动画弹框,可以用作加载数据界面 * 2017-4-3 http://blog.csdn.net/android_cll */ public class runingmanactivity extends activity implements view.onclicklistener { private textview textview;//点击按钮 @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.ac_runing_man); initlayout(); } /** * 实例化 */ private void initlayout() { textview = (textview) findviewbyid(r.id.textview); textview.setonclicklistener(this); } /** * 显示美团进度对话框 * * @param v */ public void showmeidialog(view v) { customprogressdialog dialog = new customprogressdialog(this, "正在加载中......", r.anim.animation); dialog.setcanceledontouchoutside(false);//设置是否可以点击外部消失 dialog.setcancelable(false);//设置是否可以按退回键取消 dialog.show(); } @override public void onclick(view view) { switch (view.getid()) { case r.id.textview: showmeidialog(view); break; } } }
3.自定义弹框工具类
package cll.com.myapplication; import android.app.progressdialog; import android.content.context; import android.graphics.drawable.animationdrawable; import android.os.bundle; import android.widget.imageview; import android.widget.textview; /** * @description:自定义加载数据弹框 * @author 2017-4-3 http://blog.csdn.net/android_cll */ public class customprogressdialog extends progressdialog { private animationdrawable manimation; private imageview mimageview; private string mloadingtip; private textview mloadingtv; private int mresid; public customprogressdialog(context context, string content, int id) { super(context); this.mloadingtip = content; this.mresid = id; setcanceledontouchoutside(true); } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); initview(); initdata(); } private void initdata() { mimageview.setbackgroundresource(mresid); // 通过imageview对象拿到背景显示的animationdrawable manimation = (animationdrawable) mimageview.getbackground(); // 为了防止在oncreate方法中只显示第一帧的解决方案之一 mimageview.post(new runnable() { @override public void run() { manimation.start(); } }); mloadingtv.settext(mloadingtip); } private void initview() { setcontentview(r.layout.progress_dialog); mloadingtv = (textview) findviewbyid(r.id.loadingtv); mimageview = (imageview) findviewbyid(r.id.loadingiv); } }
4.自定义弹框的xml布局
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="vertical" > <imageview android:id="@+id/loadingiv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@anim/animation"/> <textview android:id="@+id/loadingtv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbottom="@+id/loadingiv" android:textcolor="#fff" android:layout_centerhorizontal="true" android:textsize="20sp" android:text="正在加载中.." /> </relativelayout>
5.anim文件下的帧动画文件
<?xml version="1.0" encoding="utf-8"?> <animation-list android:oneshot="false" xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@mipmap/progress_loading_image" android:duration="150"/> <item android:drawable="@mipmap/progress_loading_imagey" android:duration="150"/> </animation-list>
到此加载数据弹框的帧动画功能就实现了,不喜勿喷,都有注释就不用解释太多
最后附上源码:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
上一篇: .net core使用ocelot---第二篇 身份验证
下一篇: 棕子的由来传说与屈原有关吗