在android中进度条使用ProgressBar表示,用于向用户显示某个耗时操作完成的百分比 之ProgressBar与Handler的整合应用
1.在xml文件中通过<ProgressBar>标记添加,表示基本如下:
1 <ProgressBar 2 android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" />
部分xml属性如下:
android:max-->设置进度条的最大值 android:progress-->指定进度条已经完成的进度值 android:progressDrawable-->设置进度条轨道的绘制形式
关于progressBar的style
style="?android:attr/progressBarStyleHorizontal" 细长水平进度条 style="?android:attr/progressBarStyleLarge" 大原型水平进度条
setIndeterminate 设置indeterminate为false 滚动条告知自己正在忙碌,若为true,则可以根据进度设置进度值
代码如下
activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <ProgressBar android:id="@+id/pb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv1" android:visibility="gone" /> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击" android:layout_below="@id/pb" /> </RelativeLayout>
MainActivity.java public class MainActivity extends Activity { private TextView tv1; private ProgressBar pb; private Button btn; private int count; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv1 = (TextView) findViewById(R.id.tv1); pb = (ProgressBar) findViewById(R.id.pb); btn = (Button) findViewById(R.id.btn); //调用setIndeterminate设置indeterminate为false 滚动条告知自己正在忙碌,若为true,则可以根据进度设置进度值 pb.setIndeterminate(false); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //点击按钮,ProgressBar显示 pb.setVisibility(View.VISIBLE); //指定ProgressBar最大值为100 pb.setMax(100); //指定初始值为0 pb.setProgress(0); //开启线程,更改ProgressBar的值 new Thread (new Runnable() { @Override public void run() { for (int i = 0; i < 10; i++) { try { count = (i + 1)*20; Thread.sleep(1000); //线程运行5秒后结束 if (i == 4) { Message msg = new Message(); msg.what = 0; handle.sendMessage(msg); break; }else{ Message msg = new Message(); msg.what = 1; handle.sendMessage(msg); } } catch (Exception e) { } } } }).start(); } }); } Handler handle = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 0: tv1.setText("数据加载完毕"); //设置ProgressBar隐藏 pb.setVisibility(View.GONE); //线程中断 Thread.currentThread().interrupt(); break; case 1: if (!Thread.currentThread().interrupted()) { pb.setProgress(count); //将进度显示在setText中 tv1.setText("=================="); } break; default: break; } }; };
时间: 2024-08-05 10:57:51