700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android 使用ProgressBar 实现一个水平方向走动的进度条

Android 使用ProgressBar 实现一个水平方向走动的进度条

时间:2018-10-02 02:11:16

相关推荐

Android 使用ProgressBar 实现一个水平方向走动的进度条

实现效果如下

进度条设置进度使用的方法setProgress 非常的简单 主要是通过线程设置一个progress 设置数值然后在设置setProgress 就实现了进度,

下面就直接写代码了,

xml 代码如下

<ProgressBarandroid:id="@+id/hori_progress"style="@android:style/Widget.ProgressBar.Horizontal"android:layout_width="match_parent"android:layout_height="20dp"android:layout_marginTop="20dp"android:max="100"android:progress="0"android:progressDrawable="@drawable/hori_progress_drawable_bg" />

progressDrawable 代码如下

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="/apk/res/android"><!-- 进度条背景色--><item android:id="@android:id/background"><shape><corners android:radius="5dip" /><solid android:color="@android:color/holo_orange_dark"/></shape></item><!-- 进度条颜色--><item android:id="@android:id/progress"><clip><shape><corners android:radius="5dip" /><solid android:color="@android:color/holo_red_dark"/></shape></clip></item></layer-list>

主代码如下

public class HorizontalActivity extends AppCompatActivity implements Handler.Callback {private ProgressBar progressBar;private ProgressBar sysProgressBar;private Handler handler;private int progress = 0;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.horizontal_activity_layout);progressBar = findViewById(R.id.hori_progress);sysProgressBar = findViewById(R.id.sys_progress);handler = new Handler(this);// 循环方法1handler.postDelayed(new Runnable() {@Overridepublic void run() {handler.postDelayed(this, 50);handler.sendEmptyMessage(1);}}, 0);// 循环方法2// new Thread(new Runnable() {// @Override// public void run() {//try {////子线程循环间隔消息//while (progress < 100) {// Message msg = new Message();// msg.what = 1;// handler.sendMessage(msg);// Thread.sleep(50);//}//} catch (InterruptedException e) {//e.printStackTrace();//}// }// }).start();}@Overridepublic boolean handleMessage(Message msg) {switch (msg.what) {case 1:if (progress == 100) {progress = 0;} else {progress++;}progressBar.setProgress(progress);sysProgressBar.setProgress(progress);break;}return false;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。