標籤:max 讀取 log str body view 設定 maxheight res
這兩天有個需求,點擊按鈕從SD卡解壓壓縮包,並讀取壓縮包內txt文檔內容,然後在街面上顯示出來。畢竟IO操作很耗時,如果檔案較大會花費不少時間。所以,在處理資料的時候能給個進度就好了。我們通常的做法就是,點擊按鈕後彈出一個載入框或者載入進度條,等資料處理結束後,再讓對話方塊消失。
但是現在的需求是,用一個布局,左側顯示重新整理列表,右側顯示ProgressBar。那麼問題來了,ProgressBar顯示的很大,而且開啟後就一直在轉動,無法控制。那麼就來解決這兩個問題吧~
第一個問題:控制ProgressBar的大小和樣式
首先,建立一個style樣式,設定寬高和圖片,具體如下:
<style name="ProgressCircle"> <item name="android:indeterminateDrawable">@drawable/ic_refresh_grey_600_24dp</item> <item name="android:minWidth">25dp</item> <item name="android:minHeight">25dp</item> <item name="android:maxWidth">60dp</item> <item name="android:maxHeight">60dp</item></style>
然後,寫一個xml檔案progressbar_circle.xml,設定ProgressBar的轉動效果。
<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/ic_refresh_grey_600_24dp" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360"></rotate>
到這裡,大小固定,轉動效果也有了。
第二個問題:手動控制轉動的開始和停止
開始的時候,設定setIndeterminateDrawable和setProgressDrawable為定義的xml檔案,即可開始轉動。
結束的時候,設定setIndeterminateDrawable和setProgressDrawable為固定的圖片,即可停止轉動。
/** * 開始重新整理動畫 */public void startRefresh() { progressbar_refresh.setIndeterminateDrawable(getResources().getDrawable( R.drawable.progressbar_circle)); progressbar_refresh.setProgressDrawable(getResources().getDrawable( R.drawable.progressbar_circle));}/** * 停止重新整理動畫 */public void stopRefresh() { progressbar_refresh.setIndeterminateDrawable(getResources().getDrawable( R.drawable.ic_refresh_grey_600_24dp)); progressbar_refresh.setProgressDrawable(getResources().getDrawable( R.drawable.ic_refresh_grey_600_24dp));}
以上。
Android ProgressBar手動控制開始和停止