Android仿ios加载loading菊花图效果
程序员文章站
2023-12-03 13:53:10
项目中经常会用到加载数据的loading显示图,除了设计根据app自身设计的动画loading,一般用的比较多的是仿照ios 的菊花加载loading 图,当然一些条件下还...
项目中经常会用到加载数据的loading显示图,除了设计根据app自身设计的动画loading,一般用的比较多的是仿照ios 的菊花加载loading 图,当然一些条件下还会涉及到加载成功/ 失败情况的显示,还有显示文字。
使用progressbar 来加载动画转圈,这里使用drawable文件 定义转圈动画, indeterminatedrawable 属性进行加载。
<?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@mipmap/load" android:pivotx="50%" android:pivoty="50%" /> <progressbar android:id="@+id/progressbar" android:layout_width="50dp" android:layout_height="50dp" android:indeterminatedrawable="@drawable/anim" />
部分情况下,在加载成功/ 失败之后会显示对应的静态图片,所以一开始想直接通过 setindeterminatedrawable(drawable d)
来加载静态图片,但是直接写是显示不出图片的,还要设置drawable 的位置 d.setbounds(rect bounds)
,即使这样加载出了静态图片,但是设置 r.drawable.anim
的转圈动画时 却没有了转圈的效果,好气哟 ~~
所以在自定义view 的布局里 成功/失败的状态单独用 imageview 显示
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="110dp" android:layout_height="110dp" android:background="@drawable/shape_dialog_bg" android:gravity="center" android:orientation="vertical"> <progressbar android:id="@+id/progressbar" android:layout_width="50dp" android:layout_height="50dp" android:indeterminatedrawable="@drawable/anim" /> <imageview android:id="@+id/iv" android:visibility="gone" android:layout_width="50dp" android:layout_height="50dp" /> <textview android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="10dp" android:text="正在加载" android:textcolor="#fff" /> </linearlayout>
自定义view,提供三种状态的方法。
public class loadingview extends linearlayout { ...构造函数... /** * loading */ public void showloading() { iv.setvisibility(gone); progressbar.setvisibility(visible); } /** * 成功 */ public void showsuccess() { iv.setimageresource(r.mipmap.load_success); iv.setvisibility(view.visible); progressbar.setvisibility(gone); } /** *失败 */ public void showfail() { iv.setimageresource(r.mipmap.load_fail); iv.setvisibility(view.visible); progressbar.setvisibility(gone); } /** * 提示文字 * * @param txt string */ public void settext(string txt) { tv.settext(txt); } /** * 提示文字 */ public void settext(@stringres int txtid) { tv.settext(txtid); } }
效果图:
github地址:
总结
以上所述是小编给大家介绍的android仿ios加载loading菊花图效果,希望对大家有所帮助