当前位置: 移动技术网 > IT编程>移动开发>Android > Android自定义View实现loading动画加载效果

Android自定义View实现loading动画加载效果

2019年07月24日  | 移动技术网IT编程  | 我要评论

2013四级真题,王小麦进城全集34,delijia

 项目开发中对loading的处理是比较常见的,安卓系统提供的不太美观,引入第三发又太麻烦,这时候自己定义view来实现这个效果,并且进行封装抽取给项目提供统一的loading样式是最好的解决方式了。

先自定义一个view,继承自linearlayout,在layout中,添加布局控件

/** 
 * created by xiedong on 2017/3/7. 
 */ 
public class loading_view extends linearlayout { 
  private context mcontext; 
  private relativelayout loading_content; 
  private imageview img; 
  private textview loadingtext; 
  private animationdrawable animationdrawable; 
  public loading_view(context context) { 
    super(context); 
    mcontext = context; 
    setupview(); 
  } 
  public loading_view(context context, attributeset attrs) { 
    super(context, attrs); 
    mcontext = context; 
    setupview(); 
  } 
  public loading_view(context context, attributeset attrs, int defstyleattr) { 
    super(context, attrs, defstyleattr); 
    mcontext = context; 
    setupview(); 
  } 
  private void setupview() { 
//  view view= layoutinflater.from(mcontext).inflate(r.layout.loading_view_layout,this);   //一定要把布局添加进容器,不能为null 
    view.inflate(mcontext, r.layout.loading_view_layout, this); 
    loading_content = (relativelayout) findviewbyid(r.id.loading_content); 
    img = (imageview) findviewbyid(r.id.img); 
    loadingtext = (textview) findviewbyid(r.id.text); 
    img.setimageresource(r.drawable.anim_loading); 
    animationdrawable = ((animationdrawable) img.getdrawable()); 
    animationdrawable.start(); 
  } 
  public void setmessage(string msg) { 
    loadingtext.settext(msg); 
  } 
} 

自定义view的布局文件:

<?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="match_parent" 
  android:background="#90000000" 
  android:gravity="center"> 
  <relativelayout 
    android:id="@+id/loading_content" 
    android:layout_width="150dp" 
    android:layout_height="120dp" 
    android:background="#40ffffff"> 
    <imageview 
      android:id="@+id/img" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerinparent="true" 
      android:background="@mipmap/ic_launcher" /> 
    <textview 
      android:id="@+id/text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/img" 
      android:layout_centerhorizontal="true" 
      android:text="加载中..." 
      /> 
  </relativelayout> 
</linearlayout> 

这里使用animationdrawable的方式来实现动画效果,animationdrawable的list文件如下:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
  android:oneshot="false"> 
  <item 
    android:drawable="@drawable/loading1" 
    android:duration="100" /> 
  <item 
    android:drawable="@drawable/loading2" 
    android:duration="100" /> 
  <item 
    android:drawable="@drawable/loading3" 
    android:duration="100" /> 
  <item 
    android:drawable="@drawable/loading10" 
    android:duration="100" /> 
</animation-list> 

自定义view部分的工作完成之后,接下来就是如何在项目中具体运用。在相应的布局中使用的时候,一定要记得把此布局文件add进viewgroup中,因为该自定义的view跟调用他的view是独立的两个view,没有完成add的话,loading布局可能不会显示出来。

private loading_view loading_view; 
 loading_view = new loading_view(this); //实例化自定义view 
 loading_view.setmessage("loading文字提示内容...."); 
 //添加当前自定义view进主布局文件 
 addcontentview(loading_view, new viewgroup.layoutparams(viewgroup.layoutparams.match_parent, viewgroup.layoutparams.match_parent)); 

以上所述是小编给大家介绍的android自定义view实现loading动画加载效果,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网