導航:首頁 > 操作系統 > android帶進度條的按鈕

android帶進度條的按鈕

發布時間:2022-05-13 08:03:40

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進度條上的小球怎麼設置

謂進度條、滑動條和評分控制項,在手機應用中,相信你見過載入游戲時、更新應用時等情況,屏幕出現一條進度欄,這里稱之為進度條;當你調節音量時出現的這里即稱作滑動條;而評分控制項,當你在淘寶給賣家評價時出現的類似5星評價,這里即稱作評分控制項,下面將分別詳細說明這三種控制項的基礎使用方法。
工具/原料

eclipse
一、ProgressBar進度條控制項

1
首先ProgressBar進度條給出了兩種樣式,分別是progressBarStyleLarge和progressBarStyleHorizontal,此次主要以progressBarStyleHorizontal水平進度條為例講解,可在視圖布局Form Widgets中找到,其布局代碼和布局演示示例如下。

2
ProgressBar進度條需要創建一個繼承AsyncTask抽象類的Activity,並重寫doInBackground和onProgressUpdate方法,來實現進度條的基礎功能,在此之前確保已經創建了Acticity並獲取了ProgressBar控制項。其代碼如下:

3
增加按鈕創建點擊事件使進度條可以實現功能,並設置最大數值100。其代碼如下。

END
二、SeekBar滑動條控制項

1
首先將SeekBar滑動條的View寫出來,具體代碼和樣式如下。

2
然後調用SeekBar控制項,並設置總進度大小和設置監聽事件,以便對滑動條後續操作。和ProgressBar進度條一樣,用到了setMax方法來確定大小。另外還用到了setOnSeekBarChangeListener進行監聽滑動條的事件狀態。相關代碼如下:

END
三、RatingBar評分控制項

RatingBar評分控制項和SeekBar滑動條控制項類似,首先還是先來把View視圖寫好,但要注意其中有一個屬性,android:numStars="6",表示總分是6分,代碼和樣式如下:

然後同樣再在Activity中調用RatingBar控制項,並使用setOnRatingBarChangeListener方法來測試監聽評分的狀態。相關代碼如下:

最後針對如System.out.println("-->"+rating);這個形式,這個測試方法,可以過濾的多餘的無用LogCat信息,進而方便我們測試。以下是測試信息。簡單明了。
步驟閱讀

㈢ 怎樣實現在android實現帶進度條的上傳效果

實現在android實現帶進度條的上傳效果效果如圖:


用到以下兩個類就可實現帶進度條的文件上傳:


1、CustomMultiPartEntity extends MultipartEntity,


2、HttpMultipartPost extends AsyncTask


代碼如下:


import java.io.FilterOutputStream;


import java.io.IOException;


import java.io.OutputStream;


import java.nio.charset.Charset;


import org.apache.http.entity.mime.HttpMultipartMode;


import org.apache.http.entity.mime.MultipartEntity;



public class CustomMultipartEntity extends MultipartEntity {


private final ProgressListener listener;


public CustomMultipartEntity(final ProgressListener listener) {


super();


this.listener = listener;


}


public CustomMultipartEntity(final HttpMultipartMode mode, final ProgressListener listener) {


super(mode);


this.listener = listener;


}


public CustomMultipartEntity(HttpMultipartMode mode, final String boundary,


final Charset charset, final ProgressListener listener) {


super(mode, boundary, charset);


this.listener = listener;


}


@Override


public void writeTo(final OutputStream outstream) throws IOException {


super.writeTo(new CountingOutputStream(outstream, this.listener));


}


public static interface ProgressListener {


void transferred(long num);


}



public static class CountingOutputStream extends FilterOutputStream {


private final ProgressListener listener;


private long transferred;


public CountingOutputStream(final OutputStream out, final ProgressListener listener) {


super(out);


this.listener = listener;


this.transferred = 0;


}


public void write(byte[] b, int off, int len) throws IOException {


out.write(b, off, len);


this.transferred += len;


this.listener.transferred(this.transferred);


}


public void write(int b) throws IOException {


out.write(b);


this.transferred++;


this.listener.transferred(this.transferred);


}


}


}


該類計算寫入的位元組數,我們需要在實現ProgressListener中的trasnfered()方法,更行進度條



public class HttpMultipartPost extends AsyncTask<HttpResponse, Integer, TypeUploadImage> {



ProgressDialogpd;



longtotalSize;



@Override


protectedvoidonPreExecute(){


pd= newProgressDialog(this);


pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);


pd.setMessage("Uploading Picture...");


pd.setCancelable(false);


pd.show();


}



@Override


(HttpResponse... arg0) {


HttpClienthttpClient = newDefaultHttpClient();


HttpContexthttpContext = newBasicHttpContext();


HttpPosthttpPost = newHttpPost("http://herpderp.com/UploadImage.php");



try{


= newCustomMultipartEntity(


newProgressListener() {



@Override


public void transferred(longnum){


publishProgress((int) ((num / (float) totalSize) * 100));


}


});



// We use FileBody to transfer an image


multipartContent.addPart("uploaded_file", newFileBody(


newFile(m_userSelectedImagePath)));


totalSize= multipartContent.getContentLength();



// Send it


httpPost.setEntity(multipartContent);


HttpResponseresponse = httpClient.execute(httpPost, httpContext);


String serverResponse = EntityUtils.toString(response.getEntity());



ResponseFactoryrp = newResponseFactory(serverResponse);


return(TypeImage) rp.getData();


}



catch(Exception e) {


System.out.println(e);


}


returnnull;


}



@Override


protectedvoidonProgressUpdate(Integer... progress){


pd.setProgress((int) (progress[0]));


}



@Override


protectedvoidonPostExecute(TypeUploadImageui) {


pd.dismiss();


}


}

在 transferred()函數中調用publishProgress((int) ((num / (float) totalSize) * 100));


在onProgressUpdate()實現上傳進度的更新操作

㈣ 怎樣實現多線程實現android更新進度條效果

實例教程,詳細信息我已經注釋

01
package com.shougao.hello;
02
03
import android.app.Activity;
04
import android.os.Bundle;
05
import android.os.Handler;
06
import android.os.Message;
07
import android.view.View;
08
import android.view.View.OnClickListener;
09
import android.widget.Button;
10
import android.widget.ProgressBar;
11
12
public class HelloActivity extends Activity {
13
/** Called when the activity is first created. */
14
15
private ProgressBar progressBar;
16
private Button startButton;
17
18
@Override
19
public void onCreate(Bundle savedInstanceState) {
20
super.onCreate(savedInstanceState);
21
setContentView(R.layout.main);
22
23
progressBar = (ProgressBar) findViewById(R.id.progressbar);
24
startButton = (Button) findViewById(R.id.startButton);
25
26
startButton.setOnClickListener(new ProgressBarOnClickListener());
27
}
28
29
class ProgressBarOnClickListener implements OnClickListener {
30
public void onClick(View v) {
31
// 設置進度條為可見狀態
32
progressBar.setVisibility(View.VISIBLE);
33
// 添加updataThread到消息隊列
34
updateBarHandler.post(updateThread);
35
}
36
}
37
38
// 使用匿名內部類來復寫Handler當中的handlerMessage()方法
39
// 這個handler是需要反復執行的,直到消息隊列中沒有Message為止。
40
// 執行過程中把進度條就刷新了。
41
Handler updateBarHandler = new Handler() {
42
@Override
43
public void handleMessage(Message msg) {
44
System.out.println("----------start handle");
45
progressBar.setProgress(msg.arg1);
46
updateBarHandler.post(updateThread); // 將要執行的線程放入到隊列當中
47
}
48
};
49
50
// 線程類,該類使用匿名內部類的方式進行聲明
51
Runnable updateThread = new Runnable() {
52
int i = 0;
53
54
public void run() {
55
// TODO Auto-generated method stub
56
System.out.println("----------Begin Thread");
57
i += 20;
58
// 得到一個消息對象,Message類是android系統提供的
59
Message msg = updateBarHandler.obtainMessage();
60
// 將Message對象的arg1參數的值設置為i
61
msg.arg1 = i; // 用arg1、arg2這兩個成員變數傳遞消息,優點是系統性能消耗較少
62
try {
63
Thread.sleep(3000); // 讓當前線程休眠1000毫秒
64
} catch (InterruptedException ex) {
65
ex.printStackTrace();
66
}
67
// 將Message對象加入到消息隊列當中,等下次looper調用消息隊列時,使用這個message顯示進度條
68
// 或者說,把增加了10%的進度信息Message放到updateBarHandler的隊列中。
69
if (i < 101){
70
updateBarHandler.sendMessage(msg);
71
}
72
// 如果i的值等於100
73
if (i == 100) {
74
// 將線程對象從隊列中移除
75
updateBarHandler.removeCallbacks(updateThread);
76
}
77
}
78
};
79
}

㈤ android問題:在button裡面寫了創建一個進度條,還調用了一個方法,方法里是從伺服器下載數據!

看樣子像是你沒有用一個新的線程去處理下載數據,而是全部放在主線程裡面進行了。所以按代碼執行順序,下載完數據之後才執行到顯示進度條的代碼。

㈥ 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編程里如何使用按鈕來增加和減少進度條的進度

//這個是增加的,把這看懂,減的也就會了
packagecom.example.progressbardemo;

importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.ProgressBar;

{

privateProgressBarone;
privateButtonbutton;
privateinti=0;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one=(ProgressBar)findViewById(R.id.progressBar2);
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(newOnClickListener(){

@Override
publicvoidonClick(Viewarg0){
if(i==0){
one.setVisibility(View.VISIBLE);
}
elseif(i<one.getMax())
{
one.setProgress(i);
}
else
{
one.setVisibility(View.GONE);
i=0;
}
i+=5;
}
});
}



}

㈧ android開發中videoview的自帶的進度條如何隱藏

android自帶的播放器的進度條是默認會自動隱藏的,不能設置的。除非你去改源代碼。你可以下個其他的播放器,看看能不能設置為不自動隱藏。

MediaController mc = new MediaController(this);

mc.setVisibility(View.INVISIBLE);

videoView.setMediaController(mc);

我是實現了,可以把VideoView自帶的進度條隱藏。

用MediaController應該可以實現

如果用的VideoView的話,用如下代碼:

MediaController mc = new MediaController(this);

mc.setVisibility(View.VISIBLE);

vvView.setMediaController(mc);

(8)android帶進度條的按鈕擴展閱讀:

以文件處理為例

單個文件的進度處理方法:

使用CopyFileEx進行文件復制,這個函數專門提供了一個回調函數用來處理你的進度條,詳細參見MSDN。

總體進度的處理方法:

如果一批文件,首先獲得文件的數量count = 文件數量

設置進條的范圍為0至count,每完成一個文件,就向前進一步。

㈨ 跪求一個 android 視頻緩存完整demo(帶進度條)

在做手機開發時,經常碰到一些比較耗時的操作,這個時候進度條就開始派上用場了。 這個demo展示了ProgressBar進度條和ProgressDialog進度框。 一、ProgressDialog進度框,效果如圖所示: 代碼如下: 復制代碼 代碼如下: //進度對話框按鈕監聽 class ProssButtonListener implements OnClickListener { @Override public void onClick(View v) { myDialog = ProgressDialog.show(ProgressbarDemo.this, "進度條標題", "進度條內容", true); new Thread() { public void run() { try { /* 在這里寫上要背景運行的程序片段 */ /* 為了明顯看見效果,以暫停3秒作為示範 */ sleep(3000); } catch (Exception e) { e.printStackTrace(); } finally { // 卸載所創建的myDialog對象。 myDialog.dismiss(); } } }.start(); /* 開始運行運行線程 */ } } 二、進度條對話框,這里用兩種情況來動態顯示進度條刻度 1、handle方法 效果圖如下: 代碼如下: 復制代碼 代碼如下: //進度條handle按鈕監聽 class ProssBarHandleButtonListener implements OnClickListener { @Override public void onClick(View v) { progressBarHandle.setVisibility(View.VISIBLE); myProssBarhandleText.setVisibility(View.VISIBLE); progressBarHandle.setMax(1000); new Thread() { public void run() { for(int i=0;i<=1000;){ try { /* 在這里寫上運行的進度條 */ Message msg = new Message(); msg.what = 1; msg.getData().putInt("size", i); handler.sendMessage(msg);//handle發送消息 /* 為了明顯看見效果,以暫停1秒作為示範 */ sleep(100); i+=10; } catch (Exception e) { handler.obtainMessage(-1).sendToTarget(); e.printStackTrace(); } } } }.start(); /* 開始運行運行線程 */ } } //handle接收消息 private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: progressBarHandle.setProgress(msg.getData().getInt("size")); float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax(); int result = (int)(num*100); System.out.println("progressBarHandle.getProgress()======="+progressBarHandle.getProgress()); myProssBarhandleText.setText(result+ "%"); if(progressBarHandle.getProgress()==progressBarHandle.getMax()){ Toast.makeText(ProgressbarDemo.this, "下載成功", 1).show(); progressBarHandle.setVisibility(View.GONE); myProssBarhandleText.setVisibility(View.GONE); } break; case -1: Toast.makeText(ProgressbarDemo.this,"下載失敗", 1).show(); break; } } }; 2、使用AsyncTask方法,效果圖與handle效果一樣 具體代碼如下: 復制代碼 代碼如下: //進度條synctask按鈕監聽 class ProssBarSyncButtonListener implements OnClickListener { @Override public void onClick(View v) { new AsyncLoader().execute((Void)null); } } //AsyncTask 任務執行 class AsyncLoader extends AsyncTask<Void, Integer, Integer> { @Override // 在doInBackground方法執行前執行 protected void onPreExecute(){ progressBarHandle.setVisibility(View.VISIBLE); myProssBarhandleText.setVisibility(View.VISIBLE); progressBarHandle.setMax(100000); } // 做具體的耗時操作 protected Integer doInBackground(Void... params) { //這里以1萬的進度條刻度來顯示 int totalSize = 100000; for (int i = 0; i < 100000; ) { publishProgress(i); //通過推送消息傳遞數據給onProgressUpdate方法執行 i+=10; } return totalSize; } // 在doInBackground方法執行過程中執行 protected void onProgressUpdate(Integer... progress) { progressBarHandle.setProgress(progress[0]); float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax(); int result = (int)(num*100); myProssBarhandleText.setText(result+ "%"); } // 在doInBackground方法結束後執行 protected void onPostExecute(Integer result) { Toast.makeText(ProgressbarDemo.this, "下載成功,下載了"+result, 1).show(); myProssBarhandleText.setVisibility(View.GONE); progressBarHandle.setVisibility(View.GONE); } } 點擊下載DEMO示例

㈩ 在android中,在main.xml中有一個ProgressBar進度條組件和幾個button按鈕,按下button,進度條增值

用handler

閱讀全文

與android帶進度條的按鈕相關的資料

熱點內容
程序員愛看片嗎 瀏覽:333
電腦c盤有灰色文件夾 瀏覽:124
斐波那契數列php 瀏覽:666
如何獲取嗶哩嗶哩app郵箱注冊 瀏覽:530
怎麼啟動arduino編譯環境 瀏覽:842
昕動app怎麼突然進不去 瀏覽:471
如何登錄內部伺服器 瀏覽:878
python讀取在線表格 瀏覽:1001
喝什麼茶能緩解壓抑 瀏覽:867
u命令無法打開 瀏覽:962
vue編譯後的js能爬嗎 瀏覽:453
解壓骰子推薦3代 瀏覽:749
安卓手機劃線密碼忘了怎麼解鎖 瀏覽:309
精美角度主圖指標源碼 瀏覽:279
程序員編程函數需要特別好嗎 瀏覽:183
fue加密毛發怎麼樣 瀏覽:931
網上考學歷app如何屏蔽 瀏覽:352
python矩陣庫 瀏覽:164
伺服器如何ping伺服器 瀏覽:281
雲伺服器雙機熱備怎麼做 瀏覽:100