Android中的常用控件之进度条(ProgressBar)

ProgressBar的常用属性:style,进度条的样式,默认为圆形,用style="?android:attr/progressBarStyleHorizontal"可以将进度条设为条状;android:progress,进度条当前所处进度;android:max,进度条总进度。

用线程实现进度条的注意事项:不能在主线程中执行耗时的操作,只能在子线程中操作;另外,在子线程中不能操作主线程中的控件(ProgressBar除外):

修改后MainActivity.java里的代码如下:

public class MainActivity extends AppCompatActivity {

    private int p=0;//当前进度
    private ProgressBar pb_main_download;//进度条
    private TextView tv_main_desc;//显示文本的控件
    private MyHandler myHandler=new MyHandler();//新写的Handler类

    public class MyHandler extends Handler{
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int code=msg.what;//接受处理码
            switch (code){
                case 1:
                    p++;
                    pb_main_download.setProgress(p);//给进度条的当前进度赋值
                    tv_main_desc.setText(p+"%");//显示当前进度为多少
                    break;
            }
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //根据ID找到进度条
        pb_main_download=findViewById(R.id.pb_main_download);
        //根据ID找到显示文本的控件
        tv_main_desc=findViewById(R.id.tv_main_desc);
    }

    //点击Download按钮所调用的方法
    public void download(View view) {
        if(0==p){//如果当前进度为0
            new myThread().start();//开启线程
        }
    }

    public class myThread extends Thread{
        @Override
        public void run() {
            super.run();
            while(true){
                try {
                    Thread.sleep(100);//使线程休眠0.1秒
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                if(p==100){//当前进度等于总进度时退出循环
                    p=0;
                    break;
                }

                Message msg=new Message();
                msg.what=1;
                myHandler.sendMessage(msg);//发送处理码
            }
        }
    }
}

---------------------
作者:前路漫漫,两手空空
来源:CSDN
原文:https://blog.csdn.net/weixin_42687829/article/details/82728791
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/derekhan/p/11094690.html

时间: 2024-10-10 22:03:16

Android中的常用控件之进度条(ProgressBar)的相关文章

Android常用控件:进度条

各种进度条属于 ProgressBar的子类 Sytle: 水平风格:Horizontal小风格:Small大风格:Large反向风格:Inverse小反向风格:Small.Inverse大反向风格:Large.Inverse 设置style:   style="?android:attr/progressBarStyle..." 主要属性:最大值:max当前进度:progress次要进度值:SecondaryProgress --效果类似于看电影那些缓冲 判断进度条是转圈还是水平的方

GTK常用控件之进度条( GtkProgressBar )

我们到处都能看到进度条的应用,我们下载拷贝个文件,下载个电影等总能看到进度条的影子,如图: 进度条的常用操作无非设置其比例或者获取其比例. 进度条的创建: GtkWidget *gtk_progress_bar_new(void); 返回值:进度条指针 设置进度条显示的进度比例: void gtk_progress_bar_set_fraction( GtkProgressBar *pbar, gdouble fraction); pbar:需要操作的进度条 fraction:0.0到1.0 获

Android控件TextProgressBar进度条上显文字

Android系统的进度条控件默认的设计的不是很周全,比如没有包含文字的显示,那么如何在Android进度条控件上显示文字呢? 来自Google内部的代码来了解下,主要使用的addView这样的方法通过覆盖一层Chronometer秒表控件来实现,整个代码如下 : public class TextProgressBar extends RelativeLayout implements OnChronometerTickListener { public static final String

Android中通过WebView控件实现与JavaScript方法相互调用的地图应用

在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法,在这里我个人觉得有点和DWR相似. 为了让大家容易理解,我写了一个简单的Demo,具体步骤如下: 第一步:新建一个Android工程,命名为WebViewDemo(这里我在assets里定义了一个html页面). 第二步:修改main.xml布局文件,增加了一个WebView控件还有But

Android中的基本控件(下,章节摘要)

1,如果用户在一个屏幕上添加了多个组件,则可以使用ScrollView进行包装实现滚动的效果,但是ScrollView组件只能对一个组件进行包装. 2,ListView可以实现数据的列表显示,可以通过SimpleAdapter类实现数据的封装. 3,对话框可以进行信息的提示,用户可以使用系统定义的对话框显示,也可以通过布局管理器定义自己的对话框显示布局. 4,AutoCompleteTextView组件可以实现随笔提示功能. 5,SeekBar可以进行拖动条的实现,用户可以使用OnSeekBar

Android学习笔记-常用控件

单选按钮 Radio         <RadioGroup              android:id="@+id/genderGroup"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:orientation="vertical"

2015.3.11 VS异步控件及进度条结合应用

1.在Form中添加 指针控件:BackgroundWorker-bgwork:进度条控件progressBar1 以及开始.取消按钮 2.开始按钮启动异步线程 private void button1_Click(object sender, EventArgs e) { bgwork.WorkerReportsProgress = true; //允许异步控件报告状态 bgwork.WorkerSupportsCancellation = true;//允许终止 bgwork.RunWork

Android自己定义控件:进度条的四种实现方式

前三种实现方式代码出自: http://stormzhang.com/openandroid/2013/11/15/android-custom-loading/ (源代码下载)http://download.csdn.net/detail/chaoyu168/9616035 近期一直在学习自己定义控件,搜了很多大牛们Blog里分享的小教程.也上GitHub找了一些类似的控件进行学习.发现读起来都不太好懂,就想写这么一篇东西作为学习笔记吧. 一.控件介绍: 进度条在App中非经常见,比例如以下载

Android开发之常用控件的使用

1.日期选择控件 DatePickerDialog 代码: 1 btnChooseDate=(Button) findViewById(R.id.btnChooseDate); 2 btnChooseDate.setOnClickListener(new OnClickListener() { 3 4 @Override 5 public void onClick(View v) { 6 // TODO Auto-generated method stub 7 new DatePickerDia