Android Loading框

作者: ryanxun | 来源:发表于2021-03-08 10:49 被阅读0次
    嘿,今天的你过的还好吗

    今天想给自己的项目加一个loading框,本来寻思直接网上拷一个算了,后来看了一会发现,不是很美丽,而且还得自己写动画.........
    我这么懒得人怎么会写动画呢.哦吼.然后就找资源库.终于!!!!
    在GitHub上看到了一个

         //AVLoadingIndicatorView
        implementation 'com.wang.avi:library:2.1.3'
    

    github地址: https://github.com/81813780/AVLoadingIndicatorView

    图片是针不错

    image.png

    满足了我这没啥审美的人.

    都晓得github的东西,拿来就用
    引包,根据流程走哦吼吼

    但是这个引完后再xml中引用...
    有两种.
    1.简单的

     <com.wang.avi.AVLoadingIndicatorView
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            app:indicatorName="BallPulseIndicator"
            />
    

    引完即用.但是默认的大家都懂...必然会有一些小东西没法满足
    所以官方给了第二种
    2.进阶版

     <com.wang.avi.AVLoadingIndicatorView
            android:id="@+id/avi"
            android:layout_width="wrap_content"  //可以自定义尺寸
            android:layout_height="wrap_content"  //可以自定义尺寸
            style="@style/AVLoadingIndicatorView"//  AVLoadingIndicatorView.Large 或者 AVLoadingIndicatorView.Small
            android:visibility="visible"  //可见或者消失
            app:indicatorName="BallPulseIndicator"//Indicator Name
            app:indicatorColor="your color" //你得颜色
            />
    

    最后

      void startAnim(){
            avi.show();
            // 或者 avi.smoothToShow();
       }
       
       void stopAnim(){
            avi.hide();
            // 或者 avi.smoothToHide();
       }
       
    

    至此完成..............怎么可能

    loading框自然是在需要的时候调用才ok.....
    依然是网上搜了一堆.感觉都没啥用...
    就自己写了一个封装一下....仅供参考...

    public class Loading extends ProgressDialog {
       private AVLoadingIndicatorView avi;
       public LoadingView(Context context) {
            super(context);
        }
        public LoadingView(Context context, int theme) {
            super(context, theme);
        }
     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            avi = findViewById(R.id.ddd);
            init(getContext());
        }
        private void init(Context context) {
            setCancelable(false);// 设置返回键无法返回
            setCanceledOnTouchOutside(false); //点击区域外消失
            setContentView(R.layout.loading);//loading的xml文件
            WindowManager.LayoutParams params = getWindow().getAttributes();
            params.width = WindowManager.LayoutParams.MATCH_PARENT;
            params.height = WindowManager.LayoutParams.MATCH_PARENT;
            getWindow().setAttributes(params);
        }
        @Override
        public void show() {//开启
            super.show();
    //        avi.show();
        }
        @Override
        public void dismiss() {//关闭
            super.dismiss();
    //        avi.hide();
        }
    }
    

    loading,xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:orientation="vertical">
    
    
        <com.wang.avi.AVLoadingIndicatorView
            android:id="@+id/ddd"
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:indicatorName="BallPulseIndicator" />
    
        <TextView
            android:layout_below="@+id/ddd"
            android:layout_centerHorizontal="true"
            android:id="@+id/loadtv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="加载中..."
            android:textColor="#9a9b98"
            android:textSize="12sp" />
    
    </RelativeLayout>
    

    背景色

    <?xml version="1.0" encoding="utf-8"?>
    
    <shape xmlns:android="[http://schemas.android.com/apk/res/android](http://schemas.android.com/apk/res/android)">
    
    <corners android:radius="8dp"` />
    
    <solid android:color="#88000000"/>
    
    </shape>
    
    

    加载圈样式

    <animated-rotate
    
    xmlns:android="[http://schemas.android.com/apk/res/android](http://schemas.android.com/apk/res/android)"
    
    android:pivotX="50%" android:pivotY="50%"
    
    android:fromDegrees="0"
    
    android:toDegrees="720">
    
    <shape
    
    android:shape="ring"
    
    android:innerRadiusRatio="3"
    
    android:thicknessRatio="15"
    
    android:useLevel="false">
    
    <gradient
    
    android:type="sweep"
    
    android:useLevel="false"
    
    android:startColor="#55c6c6c6"
    
    android:centerColor="#c6c6c6"
    
    android:centerY="0.50"
    
    android:endColor="#c6c6c6"/>
    
    </shape>
    
    </animated-rotate>
    
    

    传入样式 new Loading(this,R.style.CustomDialog);

    <style name="CustomDialog" parent="Theme.AppCompat.Dialog">
      <item name="android:backgroundDimEnabled">false</item>
      <item name="android:windowBackground">@android:color/transparent</item>
    </style>
    

    使用方法!!!!

    private Loading loading;
    
        loading = new Loading(context);
        //动画
        //loading = new Loading(this,R.style.CustomDialog);
        loading.show();
        new Handler().postDelayed(new Runnable() {
          @Override
          public void run() {
        loading.dismiss();//3秒后关闭
          }
        }, 3000);
    

    至此完毕

    没更新动态或者频繁更新动态的时候都是在认真生活

    相关文章

      网友评论

        本文标题:Android Loading框

        本文链接:https://www.haomeiwen.com/subject/vchpqltx.html