以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Android 高级开发 』   (http://bbs.xml.org.cn/list.asp?boardid=53)
----  【代码】AsyncTask 里面如何添加进度条  (http://bbs.xml.org.cn/dispbbs.asp?boardid=53&rootid=&id=126779)


--  作者:挥戈回日
--  发布时间:7/22/2013 5:21:00 PM

--  【代码】AsyncTask 里面如何添加进度条
很多网上进度条的demo都是handler的。但是如果用AsyncTask怎么能实现进度条?两种办法,一个是看google API 一种是看下面这个demo。此demo全是核心代码没有任何废话。
public class MainActivity extends Activity {
ProgressBar progressBar;
Button buttonStartProgress;
public class BackgroundAsyncTask extends
AsyncTask<Void, Integer, Void> {
int myProgress;
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,
"onPostExecute", Toast.LENGTH_LONG).show();
buttonStartProgress.setClickable(true);
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,
"onPreExecute", Toast.LENGTH_LONG).show();
myProgress = 0;
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
while(myProgress<100){
myProgress++;
publishProgress(myProgress);
SystemClock.sleep(100);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
progressBar.setProgress(values[0]);
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonStartProgress = (Button)findViewById(R.id.startprogress);
progressBar = (ProgressBar)findViewById(R.id.progressbar_Horizontal);
progressBar.setProgress(0);
buttonStartProgress.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new BackgroundAsyncTask().execute();
buttonStartProgress.setClickable(false);
}});
}
}

在xml里面做如下设置
<p><?xml version="1.0" encoding="utf-8"?></p><p><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"</p><p>android:orientation="vertical"</p><p>android:layout_width="fill_parent"</p><p>android:layout_height="fill_parent"</p><p>></p><p><TextView</p><p>android:layout_width="fill_parent"</p><p>android:layout_height="wrap_content"</p><p>android:text="@string/hello"</p><p>/></p><p><Button</p><p>android:id="@+id/startprogress"</p><p>android:layout_width="fill_parent"</p><p>android:layout_height="wrap_content"</p><p>android:text="Start"</p><p>/></p><p><ProgressBar</p><p>android:layout_width="fill_parent"</p><p>android:layout_height="wrap_content"</p><p>style="?android:attr/progressBarStyleHorizontal"</p><p>android:id="@+id/progressbar_Horizontal"</p><p>android:max="100"</p><p>/></p><p></LinearLayout></p>

由于只有一个类就不上传源码了。
具体要注意的就是 继承AsyncTask的时候,所有重写的方法,最好看一眼google API。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
12,781.250ms