android控件04---ProgressBar

xiaoxiao2021-02-28  105

ProgressBar作用是在界面上显示一个进度条。

用法也很简单,代码如下:

<ProgressBar         android:id="@+id/progressbar"         android:layout_width="match_parent"         android:layout_height="wrap_content"         style="?android:attr/progressBarStyleHorizontal"    //设置进度条的样式为水平进度条(默认为圆形进度条)         android:max="100"    //设置一个最大值         /> 提到进度条就要提到android控件里面的可见属性:visibility,这个属性下面有3个可选值: 1.VISIBLE        表示控件是可见的(默认) 2.INVISIBLE    表示控件是不可见的(仍然占据着原来的空间) 3.GONE           表示控件是不可见的(不再占据任何屏幕空间) 下面就通过一个例子来详细说明一下: public class MainActivity extends AppCompatActivity {     private  Button  buttonOne;     private  ProgressBar  progressBar;     private  Handler  handler;     private  TimerTask  task;    //这是一个抽象类     private  Timer  timer;    //定义一个定时器 Timer是一个普通的类,里面有几个方法     private  int  progress = 0;    //初始化进度条的值     private  boolean  isfull = false;     //用来判断进度条是否已经读取完     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         buttonOne = (Button)findViewById(R.id.buttonOne);         progressBar = (ProgressBar)findViewById(R.id.progressbar);                 timer = new Timer();         buttonOne.setOnClickListener(new View.OnClickListener() {             public void onClick(View v) {                 timer.schedule(task,0,100);  //每0.1秒执行一次                 /*                 上面的函数的原形是这样子的:timer.schedule(new TimerTask(){ void run()},0, 100);                 第一个参数是 TimerTask类的对象 ,我们实现TimerTask的run()方法就是要周期执行的任务;                 第二个参数两种类型,第一种是long类型,表示多长时间后开始执行,另一种是Date类型,表示从那个时间后开始执行;“0”则表示无延迟                 第三个参数就是执行的周期,为long类型。                 */             }         });         //用handler对象里面的handleMessage方法来进行消息处理.         handler = new Handler() {             public void handleMessage(Message msg) {                 switch (msg.what){                     case 0x001:                         progressBar.setVisibility(View.VISIBLE);     //设置进度条为可见                         buttonOne.setVisibility(View.INVISIBLE);     //设置按钮为隐藏                         progressBar.setProgress(progress);             //改变进度条的值                         break;                     case 0x002:                         progressBar.setVisibility(View.GONE);     //删除进度条                         buttonOne.setVisibility(View.VISIBLE);     //设置按钮为可见                         task.cancel();    //结束线程                         timer.cancel();                         Toast.makeText(MainActivity.this,"加载完成",Toast.LENGTH_LONG).show();                             break;                 }             }         };         task = new TimerTask() {             public void run() {                 if (!isfull){                     if (progress < 100){                         progress++;                         //发送消息                         handler.sendEmptyMessage(0x001);                     }else{                         handler.sendEmptyMessage(0x002);                     }                 }             }         };     } } 运行效果如下: 1.进入界面进度条,按钮均为可见状态。 2.点击按钮,按钮隐藏,进度条每0.1秒涨1%(最大值为100,每次执行时+1) 3.进度条读取完成时,进度条消息(位置也不存在了),按钮再次为可见 有什么不好的地方,希望大家能说出来,你的指出,就是我的进步。 最后附上一个网址,对android消息处理机制不熟的人可以去看看: http://www.cnblogs.com/codingmyworld/archive/2011/09/14/2174255.html 
转载请注明原文地址: https://www.6miu.com/read-53648.html

最新回复(0)