1. 程式人生 > 其它 >短視訊app搭建,android動態顯隱進度條

短視訊app搭建,android動態顯隱進度條

短視訊app搭建,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>

以上就是短視訊app搭建,android動態顯隱進度條實現的相關程式碼, 更多內容歡迎關注之後的文章