您好,登錄后才能下訂單哦!
這篇文章主要講解了“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" ></ProgressBar> <TextView android:id="@+id/tv_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0%"/> </LinearLayout> </RelativeLayout>
感謝各位的閱讀,以上就是“android怎么實現動態顯隱進度條”的內容了,經過本文的學習后,相信大家對android怎么實現動態顯隱進度條這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。