网站/小程序/APP个性化定制开发,二开,改版等服务,加扣:8582-36016

    这篇文章主要为大家详细介绍了android实现动态显示隐藏进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    本文实例为大家分享了android实现动态显示隐藏进度条的具体代码,供大家参考,具体内容如下

    调用

    ProgressUtil.startProgress(this, new ProgressUtil.ICallback() {
         @Override
         public void progress(int count) {
                        LogUtil.d(count + "%");
                    }
                });


    ProgressUtil

    package com.coral3.common_module.utils;
    
    import android.app.Activity;
    import android.content.Context;
    import android.os.Handler;
    import android.os.Message;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    import com.coral3.common_module.R;
    import java.sql.Time;
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class ProgressUtil {
    
        private static View progressContainer;
        private static TextView tvView;
        private static ProgressBar progressView;
        private static ViewGroup contentView;
        private static Timer timer = new Timer();
        private static TimerTask task;
        private static int count = 0;
        private static ICallback myICallback;
        private static Handler handler = new Handler(new Handler.Callback(){
    
            @Override
            public boolean handleMessage(Message msg) {
                if(msg.what == 0x1){
                    count++;
                    progressView.setProgress(count);
                    tvView.setText(count + "%");
                    myICallback.progress(count);
                }
               return false;
            }
        });
    
        public static void startProgress(Context context, ICallback iCallback){
            if(null == contentView) contentView = ((Activity)context).findViewById(android.R.id.content);
            if (progressContainer == null) {
               progressContainer = LayoutInflater.from(context).inflate(R.layout.view_progress, null, false);
                progressView = progressContainer.findViewById(R.id.pb_common);
                tvView = progressContainer.findViewById(R.id.tv_progress);
                contentView.addView(progressContainer);
            } else {
                progressContainer.setVisibility(View.VISIBLE);
            }
            myICallback = iCallback;
            task = new TimerTask() {
                @Override
                public void run() {
                    if(count > 99){
                        hideProgressInUiThread((Activity) context);
                    }else{
                        handler.sendEmptyMessage(0x1);
                    }
                }
            };
            if(timer == null) timer = new Timer();
            timer.schedule(task, 10, 1000/60);
    
        }
        public static void endTimer(){
            timer.cancel();
            task.cancel();
            task = null;
            timer = null;
            count = 0;
        }
        public static void hideProgress(){
            if (progressContainer != null) {
                endTimer();
               progressContainer.setVisibility(View.GONE);
            }
        }
        public static void startProgressInUiThread(Context context, ICallback iCallback){
            ((Activity)context).runOnUiThread(new Runnable() {
                @Override
                public void run() {
                   startProgress(context, iCallback);
                }
            });
        }
        public static void hideProgressInUiThread(Activity activity){
            activity.runOnUiThread(new Runnable() {
                @Override
               public void run() {
                    hideProgress();
                }
            });
        }
        public interface ICallback{
            void progress(int count);
        }
    }


    view_progress.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
            <LinearLayout
                android:layout_width="match_parent"
                android:orientation="vertical"
                android:gravity="center"
                android:padding="8dp"
                android:layout_height="match_parent">
                <ProgressBar android:id="@+id/pb_common"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:progress="10"
                    style="@style/Widget.AppCompat.ProgressBar.Horizontal"></ProgressBar>
                <TextView
                    android:id="@+id/tv_progress"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="0%"/>
            </LinearLayout>
    
    </RelativeLayout>



    评论 0

    暂无评论
    0
    0
    0
    立即
    投稿
    发表
    评论
    返回
    顶部