『壹』 android網路載入進度條怎麼使用
由於Android的界面更新只能通過自己的UI線程進行操作,所以我們需要用到Handler在進行更新界面的操作。
1、聲明變數
private Handler handler = new Handler();
private ProgressDialog progressDialog = null;
2、在開始進行網路連接時顯示進度條對話框
progressDialog = ProgressDialog.show(MyActivity.this, "請稍等...", "獲取數據中...", true);
3、在handler.post中進行界面更新
public void setListAdapter(){
handler.post(new Runnable() {
public void run() {
//將獲取到的數據更新到列表中
MyListView.setAdapter(saImageItems);
}
}
});
4、開個新的線程進行網路連接獲取數據
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
//向伺服器請求數據
mapList=MyAPI.getAllDatas();
setListAdapter(mapList);
//更新完列表數據,則關閉對話框
progressDialog.dismiss();
}}).start();
整個過程就這樣完成了,下面是效果圖:
『貳』 android關於進度條的問題,急求
安裝應用程序使用的進度條,都是「不確定」的,即屬性「android:indeterminateOnly=true」。因為具體的安裝是由PackageManagerService來完成的,無法確定的知道安裝進度。
-----------------------------------------------------------------------------------------------------
安卓精英團為你解答
安卓精英團歡迎各位精英加入!
『叄』 android中webview 怎麼實現網頁載入時顯示載入進度
android中只需要給webView注冊一個事件即可實現載入進度。
以下是具體實現代碼:
1.從webView中獲取設置
WebSettings sws = webView.getSettings();
sws.setSupportZoom(true);
sws.setBuiltInZoomControls(true);
webView.setInitialScale(25);
webView.getSettings().setUseWideViewPort(true);
2.注冊setWebChromeClient事件
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activity和Webview根據載入程度決定進度條的進度大小
// 當載入到100%的時候 進度條自動消失
//WebViewProgressActivity.this.setTitle("Loading...");
//WebViewProgressActivity.this.setProgress(progress * 100);
if (progress == 100) {
progressBar.setVisibility(View.GONE);
//WebViewProgressActivity.this.setTitle("完成");
}
}
});
3.注意在onProgressChanged中處理進度,progress就是進度值。
『肆』 如何在android上去控制開發進度
在整個開發階段和測試階段,出現了很多預料之外的事情,比如size是1M多的json文件解析、高清圖片導致OOM、莫名其妙的崩潰等。這些意外無一不影響開發計劃,增大壓力,最直接的表現是晚上加班和周末加班。
寫代碼和修改代碼遠比想像中的難控制。用戶體驗增加了代碼的細節處理難度、邏輯處理難度,android莫名的崩潰增加解決bug的難度。就這次開發,總結了一些經驗。
測試人員經常會報告小米1手機運行壁紙軟體時會崩潰的問題,崩潰日誌是:
java.lang.RuntimeException: Failed to register input channel. Check logs for details.
at android.view.InputQueue.nativeRegisterInputChannel(Native Method)
at android.view.InputQueue.registerInputChannel(InputQueue.java:92)
at android.view.ViewRoot.setView(ViewRoot.java:570)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.widget.Toast$TN.handleShow(Toast.java:411)
at android.widget.Toast$TN$1.run(Toast.java:337)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
根據日誌推測該崩潰是和Toast有關。可是問題就奇怪了,我在代碼中只調用Toast.makeTest(...).show(),為什麼會引起這個崩潰。然後根據測試人員的反饋,當設置壁紙成功後,會引起這個崩潰,而且測試人員是在頻繁的操作下報出來這個問題的。根據這個現象,推斷有可能以下兩個原因引起的,一是,設置壁紙引起桌面發生變化,桌面發生變化時彈出toast會導致崩潰;二是,頻繁不間斷的彈出toast會引起這個問題。而之後測試人員反饋了一個新的現象,當進行新浪微博分享失敗後(前提是該新浪微博帳號是有問題的),再去瀏覽壁紙圖片也導致了該崩潰,而且此現象僅出現了一次再也不復現。該bug最終是遺留解決。
針對這種問題,在以後的版本開發中肯定也會出現,怎麼避免它再次出現。我總結了從幾個方面做努力。先借來小米1手機來玩,學習手機發燒友的習慣和測試人員的思維,然後體驗小米1手機,對小米1要有更深入的認識;和小米進行溝通,還沒有認識牛逼的朋友在小米做開發,所以可以先在小米論壇上做活躍用戶,主動和對方和網友溝通;了解input channel是什麼功能,什麼機制,研究 anroid2.3的關於這塊的native代碼。
剛開始進入測試階段時,測試人員每天都會報告壁紙軟體頻繁崩潰的問題。對於一些簡單的崩潰問題,一般是空指針而且還復現,就不在這里說了。測試報告說,瀏覽壁紙圖片保存壁紙,預覽壁紙和設置壁紙時經常的崩潰,這種崩潰沒有規律可復現但是很頻繁出現。這種問題的原因是OOM,比如,在MX2手機上,桌面預覽要使用的點陣圖大小是1280 X 800 X 2 X 4位元組 約等於8M,軟體中的點陣圖各種處理(縮放、剪切、渲染、多個activity同時存在等)會導致內存使用量飆升到50多M,當超過64M左右時,軟體會報OOM錯誤。沒有徹底解決OOM的方法,網上有很多避免OOM的方法,比如延遲載入圖片、及時回收內存、弱引用等。另外在生成bitmap的地方要使用try
解決了這些崩潰問題後,還會有新的導致崩潰的原因。測試人員說中午吃完飯回來,打開壁紙軟體突然崩潰。分析這個現象後,找到原因是,長期待機情況下android殺掉了壁紙軟體的進程。但是疑問出現了,此時進程被殺掉了之後點擊app的icon,不是又重新打開了進程,重新運行了嗎,怎麼會崩潰呢。經過分析,發現有個詭異的地方是,android待機後把壁紙進程給殺掉了,但是該軟體的activity並沒有從task中刪除掉,所以當再點擊app的icon時,會執行task頂層的activity的onCreate,而onCreate里邊的一些東西還未初始化,會因為空指針而崩潰。
後來,測試人員報告了一個詭異的bug,安裝軟體後第一次打開軟體,歡迎界面的圖片顯示不出來,以後每次打開軟體歡迎界面的圖片都能打開出來。圖片是一個jpg文件,在raw中。最後找到原因是,在decode bitmap,scale bitmap時,其中要操作的一個變數imagewidth在第一次時是0,沒有賦值,之後再操作就不是0,賦值了。但是為什麼會這樣,最後找到原因了,imagewidth是一個全局靜態變數,該全局靜態變數在另外一個線程中會被賦值(賦上屏幕的寬度)。由於線程的非同步問題而導致第一次imagewidth是0。後來每次打開軟體,並不是進程重啟,而是activity重啟,imagewidth賦的值還在。
『伍』 android 如何實現彈出一個進度條後,再彈出一個倒計時的界面。
實現流程
Step One 彈出進度條對話框
Step Two 執行線程,在線程中實現數據的非同步載入
Step Three 在線程數據載入完成後,調用Handler並集合數據,更新界面
Java代碼
//添加非同步操作
m_Dialog=ProgressDialog.show(m_context, "請等待...", "正在下載安裝文件,請稍後...",true);
//mRegsiterHandler.sleep(100);
new Thread(new Runnable(){
@Override
public void run() {
//載入數據
result=0;
try{
//下載文件
String url="http://00.00.00.00:80/nationaltest.html";
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response;
response = client.execute(get);
HttpEntity entity = response.getEntity();
long length = entity.getContentLength();
InputStream is = entity.getContent();
FileOutputStream fileOutputStream = null;
if (is != null) {
File file = new File(Environment.getExternalStorageDirectory(), "nationaltest.apk");
fileOutputStream = new FileOutputStream(file);
byte[] buf = new byte[1024];
int ch = -1;
while ((ch = is.read(buf)) != -1) {
fileOutputStream.write(buf, 0, ch);
}
}
fileOutputStream.flush();
if (fileOutputStream != null) {
fileOutputStream.close();
}
result=2;
}
catch(Exception ex){
result=-1;
}
//更新界面
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
if(result==2)
install();
else
Toast.makeText(m_context, "下載文件失敗,請檢查網路連接", Toast.LENGTH_SHORT).show();
}
});
m_Dialog.dismiss();
}}).start();
}
『陸』 android 進度條,暫停,繼續怎麼弄
Handler和ProgressBar實現進度條的開始,暫停,停止,後退和循環
一,涉及的handler類方法
1,
post(Runnable r)
Causes the Runnable r to be added to the message queue.將要執行的線程對象加到隊列當中
2,
removeCallbacks(Runnable r)
Remove any pending posts of Runnable r that are in the message queue.移除隊列當中未執行的線程對象
3,
postDelayed(Runnable r, long delayMillis)
Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses.
將要執行的線程對象放入到隊列當中,待時間結束後,運行制定的線程對象
二,編寫程序
程序效果:實現進度條的開始,暫停,停止,後退和循環
http://blog.csdn.net/superjunjin/article/details/7539844
『柒』 android系統卸載軟體時出現的進度條是怎麼做出來的
這個進度條,實際上是不顯示進度的,只是兩幅圖片輪流顯示。在卸載完成後,停止顯示。嚴格說來,這不是進度條,只是等待動畫
。
『捌』 android中如何讓progressdialog停下來,怎麼進度條老是讀進度停不下來呀
線程里 這個 Calculation.calculate(4); 計算完了嗎 你是做的處理是 處理完後台線程計算以後 通過handler通知UI關閉 進度條 ,有可能是因為 你的線程里的計算沒有停止。 你在 handleMessage里 列印一句話 看是否執行到這里了
『玖』 在Android應用程序中,做一個表示載入頁面的進度條
載入前 獲取載入數據的大小 賦值到ProgressBar.setMax 里
吧 組件寫到Handler里 在線程里每次調用Handler 然後給setProgress里 加上你每次載入的數據大小
『拾』 android 類似進度圓環的是怎麼做的
方法:
這是一個自定義Android組件,用於代替標准進度條組件。實現各種進度條樣式,包括圓環,掃描等。
XML:
在你的attr.xml(res/value)中加入以下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<declare-styleable name="ProgressWheel">
<attr name="text"format="string"/>
<attr name="textColor"format="color"/>
<attr name="textSize"format="dimension"/>
<attr name="barColor"format="color"/>
<attr name="rimColor"format="color"/>
<attr name="rimWidth"format="dimension"/>
<attr name="spinSpeed"format="integer"/>
<attr name="circleColor"format="color"/>
<attr name="radius"format="dimension"/>
<attr name="barWidth"format="dimension"/>
<attr name="barLength"format="dimension"/>
<attr name="delayMillis"format="dimension"/>
<attr name="contourColor"format="color"/>
<attr name="contourSize"format="float"/>
</declare-styleable>
在你的root view 中加入
1
xmlns:ProgressWheel="http://schemas.android.com/apk/res/com.visualdenim.schooltraq"
1
在你的xml合適的地方加入 組件
1
2
3
4
5
6
7
8
9
10
11
12
13
<com.todddavies.components.progressbar.ProgressWheel
android:id="@+id/pw_spinner"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_centerInParent="true"
ProgressWheel:text="Authenticating..."
ProgressWheel:textColor="#222"
ProgressWheel:textSize="14sp"
ProgressWheel:rimColor="#330097D6"
ProgressWheel:barLength="60dp"
ProgressWheel:barColor="#0097D6"
ProgressWheel:barWidth="5dp"
ProgressWheel:rimWidth="2dp"/>
Java:
你需要從layout中獲得進度條,或者初始化
1
2
ProgressWheel pw = newProgressWheel(myContext, myAttributes);
ProgressWheel pw = (ProgressWheel) findViewById(R.id.pw_spinner);
使用.spin() 開始進度條滾動, .stopSpinning 停止進度條滾動
增加進度有點棘手, 你可以調用.incrementProgress(), 但是這樣就超過了360度, 因為一個圓有360度, 你超過360度就會自動重置, 一個百分百自動分配