Android开发使用ProgressBar实现进度条功能示例

发布时间:2019-08-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android开发使用ProgressBar实现进度条功能示例脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了Android开发使用ProgressBar实现进度条功能。分享给大家供大家参考,具体如下:

进度条ProgressBar的使用主要有两种方向;

1.使用官方默认样式

2.使用自定义样式

先看效果:

Android开发使用ProgressBar实现进度条功能示例

详细代码实现文末给出

关于系统自带样式:

style="@android:style 中有许多系统自带样式,大家可以更具自身喜好选择。

如果不选择 style 系统会默认使用上图中红色的样式。

关于自定义样式:

这里我们最好看看源码 很容易理解

主要分为三个部分:当前进度、缓冲进度、以及背景 三个属性

这里我们通过在drawable里新建my_bar.xml来实现

这里有个注意点 很多人写了xml后发现 直接就显示满进度 而不是缓慢增长

由于是替换系统自带样式,所以id必须与系统保持一致:(如:android:id="@android:id/background"

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android">   <!--定义轨道背景-->   <item android:id="@android:id/background"     android:drawable="@drawable/no"/>   <!--定义轨道上已完成部分的样式-->   <item android:id="@android:id/progress"     android:drawable="@drawable/ok"/> </layer-list>  

这里对比下系统源码就很好理解了:

Android开发使用ProgressBar实现进度条功能示例

这里的模拟方法采用的是线程结合Handler

由于线程不能直接改变控件属性 所以需要用Handler来接受线程发出的Message

具体方法如下:

 public class MainActivity extends Activity {   //记录ProgressBar的完成进度   private int sum1=0,sum2 = 0 ;   ProgressBar bar1,bar2;   //创建一个负责更新进度的Handler   Handler mHandler = new Handler(){     @Override     public void handleMessage(Message msg) {       //表明消息是本程序发送的       if (msg.what == 0x111){         bar1.setProgress(sum1);         bar2.setProgress(sum2);       }     }   };   //模拟耗时   Thread thread = new Thread(){     @Override     public void run() {       while (sum2 < 100){         //bar1获取完成工作的百分比         if (sum1 > 100){           sum1 = 100;           if (sum2<100){             sum2 += (int) (Math.random()*25);           }else {             sum2 = 100;             thread.stop();           }           sum1=0;         }else {           sum1 = sum1 + (int) (Math.random()*25);         }         try{           Thread.sleep(1000);         }catch (InterruptedException e){           e.printStackTrace();         }         //更新ProgressBar         mHandler.sendEmptyMessage(0x111);       }     }   };   @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     bar1 = (ProgressBar) findViewById(R.id.bar);     bar2 = (ProgressBar) findViewById(R.id.bar2);     thread.start();   } }  

最后在给出布局文件:

 <?xml version="1.0" encoding="utf-8" ?> <LinearLayout 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"   xmlns:app="http://schemas.android.com/apk/res-auto"   android:orientation="vertical">   <android.support.v7.widget.Toolbar     android:layout_width="match_parent"     android:layout_height="wrap_content"     app:contentInsetStart="0dp"     android:background="#9FB6CD">     <RelativeLayout       android:layout_width="match_parent"       android:layout_height="wrap_content">       <ProgressBar         android:id="@+id/toolbar_progress"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_alignParentEnd="true"         android:layout_alignParentRight="true" />     </RelativeLayout>   </android.support.v7.widget.Toolbar>   <LinearLayout     android:orientation="horizontal"     android:layout_width="match_parent"     android:layout_height="wrap_content">     <!--定义一个大环型进度条-->     <ProgressBar       android:layout_width="wrap_content"       android:layout_height="wrap_content"       style="@android:style/Widget.ProgressBar.Large"/>     <!--定义一个中等大小环形进度条-->     <ProgressBar       android:layout_width="wrap_content"       android:layout_height="wrap_content" />     <!--定义一个小进度条-->     <ProgressBar       android:layout_width="wrap_content"       android:layout_height="wrap_content"       style="@android:style/Widget.ProgressBar.Small"/>   </LinearLayout>   <TextView     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:text="任务完成的进度"/>   <!--定义一个大水平进度条-->   <ProgressBar     android:id="@+id/bar"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:max="100"     style="@android:style/Widget.ProgressBar.Horizontal"/>   <!--顶一个水平进度条,并改变轨道外观-->   <ProgressBar     android:id="@+id/bar2"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:max="100"     android:progressDrawable="@drawable/my_bar"     style="@android:style/Widget.ProgressBar.Horizontal"/> </LinearLayout>  

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android控件用法总结》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android数据库操作技巧总结》及《Android资源操作技巧汇总

android教程
脚本网站
android studio

脚本宝典总结

以上是脚本宝典为你收集整理的Android开发使用ProgressBar实现进度条功能示例全部内容,希望文章能够帮你解决Android开发使用ProgressBar实现进度条功能示例所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: