美文网首页
Android Loading加载框

Android Loading加载框

作者: ryanxun | 来源:发表于2021-07-21 08:32 被阅读0次
       //loading动画
        api 'com.wang.avi:library:2.1.3'
    

    color

        <color name="blue_bg">#0290ff</color>
        <color name="defalut_text">#333333</color>
        <color name="gray_text">#b1b1b1</color>
    
    /**
     * @ClassName: LoadingDialog
     * @Description: 加载框
     * @CreateDate: 2021/7/20 10:11
     * @UpdateUser: RyanLiu
     */
    
    import android.app.Dialog;
    import android.content.Context;
    import android.graphics.Color;
    import android.graphics.drawable.ColorDrawable;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.TextView;
    
    import androidx.annotation.NonNull;
    
    import com.wang.avi.AVLoadingIndicatorView;
    
    public class LoadingDialog extends Dialog implements View.OnClickListener{
        private AVLoadingIndicatorView avi;
    
        private TextView tv_text, tv_cancel;
    
        private CancelListener listener;
    
        public LoadingDialog(@NonNull Context context) {
            super(context);
            //设置对话框背景透明
            if (getWindow() != null) {
                getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                setContentView(R.layout.dialog_loadding);
                tv_text = findViewById(R.id.tv_text);
                tv_cancel = findViewById(R.id.cancel);
                avi = findViewById(R.id.avi);
                tv_cancel.setOnClickListener(this);
                setCanceledOnTouchOutside(false);
                //            setCancelable(true);
            }
        }
    
        /**
         * 拦截触碰事件
         * @param event
         * @return
         */
        @Override
        public boolean onTouchEvent(@NonNull MotionEvent event) {
            return true;
        }
    
        @Override
        public void onBackPressed() {
            super.onBackPressed();
        }
    
        /**
         * 设置取消按钮点击监听
         */
        public void setListener(CancelListener listener) {
            tv_cancel.setVisibility(View.VISIBLE);
            this.listener = listener;
        }
    
        /**
         * 为加载进度个对话框设置不同的提示消息
         *
         * @param message 给用户展示的提示信息
         * @return build模式设计,可以链式调用
         */
        public LoadingDialog setMessage(String message) {
            tv_text.setText(message);
            return this;
        }
    
        /**
         * 显示等待窗,并开始等待动画
         */
        @Override
        public void show() {
            startAnim();
            super.show();
        }
    
        /**
         * 隐藏等待窗,并停止等待动画
         */
        @Override
        public void dismiss() {
            stopAnim();
            super.dismiss();
        }
    
        /**
         * 开始等待动画
         */
        void startAnim() {
            avi.show();
            avi.smoothToShow();
        }
    
        /**
         * 停止等待动画
         */
        void stopAnim() {
            avi.hide();
            // or avi.smoothToHide();
        }
    
        /**
         * 取消按钮点击事件
         *
         * @param v 组件
         */
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.cancel) {
                dismiss();
                if (this.listener != null) {
                    this.listener.onCancel();
                    tv_text.setText("正在加载");
                    tv_cancel.setVisibility(View.GONE);
                    this.listener = null;
                }
            }
        }
    
        /**
         * 取消按钮监听接口
         */
        public interface CancelListener {
            void onCancel();
        }
    }
    

    dialog_loadding

    <?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:background="@drawable/dialog_white_bg_shape"
        android:gravity="center">
    
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
    
            android:gravity="center">
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:orientation="vertical">
    
                <com.wang.avi.AVLoadingIndicatorView
                    android:id="@+id/avi"
                    style="@style/AVLoadingIndicatorView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="100dp"
                    android:layout_marginTop="16dp"
                    android:layout_marginRight="100dp"
                    android:visibility="visible"
                    app:indicatorColor="#0290ff"
                    app:indicatorName="BallSpinFadeLoaderIndicator" />
    
    
                <TextView
                    android:id="@+id/tv_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_marginBottom="16dp"
                    android:gravity="center"
                    android:text="正在加载"
                    android:textColor="#0290ff"
                    android:textSize="16sp" />
    
                <TextView
                    android:id="@+id/cancel"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/print_btn_bg_normal"
                    android:gravity="center"
                    android:paddingTop="10dp"
                    android:paddingBottom="10dp"
                    android:text="取消"
                    android:textColor="@android:color/white"
                    android:textSize="16sp"
                    android:visibility="gone" />
            </LinearLayout>
        </RelativeLayout>
    
    </RelativeLayout>
    

    item_function_layout

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:id="@+id/function_ll"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:orientation="vertical">
    
        <ImageView
            android:id="@+id/function_img"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_gravity="center_horizontal" />
    
        <TextView
            android:id="@+id/function_tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="@color/black" />
    
    </LinearLayout>
    

    dialog_white_bg_shape

    <?xml version="1.0" encoding="utf-8"?>
    
    <!-- 按钮正常的时候的背景 -->
    <!-- shape的默认形状是rectangle,还有oval(椭圆),line(线),ring(圆环),我就用过rectangle,其他的大家可以试一试 -->
    
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 矩形的圆角弧度 -->
        <corners android:radius="5dp" />
        <!-- 矩形的填充色 -->
        <solid android:color="@android:color/white" />
    
        <!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
        <!--    <stroke-->
        <!--        android:width="1dp"-->
        <!--        android:dashWidth="8dp"-->
        <!--        android:dashGap="4dp"-->
        <!--        android:color="#4eb621" />-->
    </shape>
    

    print_btn_bg_normal

    <?xml version="1.0" encoding="utf-8"?>
    
    <!-- 按钮正常的时候的背景 -->
    <!-- shape的默认形状是rectangle,还有oval(椭圆),line(线),ring(圆环),我就用过rectangle,其他的大家可以试一试 -->
    
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 矩形的圆角弧度 -->
        <corners
            android:bottomLeftRadius="5dp"
            android:bottomRightRadius="5dp"/>
        <!-- 矩形的填充色 -->
        <solid android:color="@color/blue_bg" />
    
        <!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
    <!--    <stroke-->
    <!--        android:width="1dp"-->
    <!--        android:dashWidth="8dp"-->
    <!--        android:dashGap="4dp"-->
    <!--        android:color="#4eb621" />-->
    </shape>
    

    相关文章

      网友评论

          本文标题:Android Loading加载框

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