欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android仿ios加载loading菊花图效果

程序员文章站 2022-06-19 19:47:24
项目中经常会用到加载数据的loading显示图,除了设计根据app自身设计的动画loading,一般用的比较多的是仿照ios 的菊花加载loading 图,当然一些条件下还...

项目中经常会用到加载数据的loading显示图,除了设计根据app自身设计的动画loading,一般用的比较多的是仿照ios 的菊花加载loading 图,当然一些条件下还会涉及到加载成功/ 失败情况的显示,还有显示文字。

Android仿ios加载loading菊花图效果 Android仿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);
  }
}

效果图:

Android仿ios加载loading菊花图效果

github地址:

总结

以上所述是小编给大家介绍的android仿ios加载loading菊花图效果,希望对大家有所帮助