`
rain_2372
  • 浏览: 676269 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

进度条(ProgressBar)拖动条(SeekBar)android

阅读更多
本文源自http://www.cnblogs.com/TerryBlog/archive/2010/06/17/1759542.html
进度条(ProgressBar)

  当一个应用程序在后台执行时,前台界面不会产生变化,但因为 Android 各机型配置大不相同,有时执行程序的过程中用户不知道发生了什么事,但界面却发生了变化。这时需要与用户交互的进度条用来提示用户后台执行程序的进度,这种做法是符合人性化的,进度条充分的符合上面的需求。进度条的详解如下:

1、进度条风格
2、进度条主要属性方法
3、模拟程序运行,使用进度条
1、进度条分类

长形进度条 (progressBarStyleHorizontal)
大圆形进度条(progressBarStyleLarge)
小圆形进度条 (progressBarStyleSmall)
默认风格 (progressBarStyle)
  大致的使用场景为:比如,应用程序装载资源或者网络连接。下面介绍如何在 xml 中声明其中两种典型的进度条,先看一段布局



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
<ProgressBar android:id="@+id/ProgressBar01" android:layout_width="200dp"
style="?android:attr/progressBarStyleHorizontal"
android:layout_height="wrap_content"
android:indeterminate="false"
android:visibility="gone"
></ProgressBar>

<ProgressBar android:id="@+id/ProgressBar02" android:layout_width="wrap_content"
android:max="100"
style="?android:attr/progressBarStyleLarge"
android:progress="50" android:secondaryProgress="70"
android:indeterminate="false"
android:visibility="gone"
android:layout_height="wrap_content"></ProgressBar>

<Button android:text="开始" android:id="@+id/Button01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>




  清单中,ProgressBar01为长形进度条,ProgressBar02为大圆形进度条,使用方法为声明“style=”在样式上加上各自属性,加载即可。

2、进度条主要属性方法

indeterminate
进度条分 不确定 (indeterminate=true)和 确定 (indeterminate=false)2种,默认值是(indeterminate=true)不确定
setMax
设置进度条的最大值,同时,确定(indeterminate=false)进度条中的最大值的设定,将调用 setMax()方法。
setProgress
Android 进度条中当前进度值的设置。
setSecondaryProgress
第二进度条的设置。
setVisibility
设置可见性。
3、模拟程序运行,使用进度条

     界面布局引用上面 XML 布局文件,现在开始程序的实现步骤了:程序加载时,设置两个进度条的当前进度值为0,从0开始到Max值 100,的数值做递值相加,用户点击按钮时,模拟程序运行时间,起动一个线程为进度条的Progress 赋值。这里我们需要借助线程和消息机制帮我们实现数值累加的效果,在消息里面当接收到的消息符合我们条件判断隐藏进度条的运行。具体业务逻辑代码如下:



      模拟程序运行线程代码如下:


new Thread(new Runnable() {
                   
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        for(int i=0;i<10;i++)
                        {
                            try {
                                counter=(i+1)*20;
                                Thread.sleep(1000);
                                if(i==4)
                                {
                                    Message msg=new Message();
                                    msg.what=GUI_STOP;
                                progressBarActivity.this.myHandler.sendMessage(msg);
                                break;
                                }
                                else
                                {
                                    Message msg=new Message();
                                    msg.what=GUI_THREADING;
                                    progressBarActivity.this.myHandler.sendMessage(msg);
                                }
                            } catch (Exception e) {
                                // TODO: handle exception
                                e.printStackTrace();
                            }
                        }
                    }
                }).start();


   消息处理代码如下: 


myHandler=new Handler()
        {
            @Override
            public void handleMessage(Message msg) {
                // TODO Auto-generated method stub
                switch (msg.what) {
                case GUI_STOP:
                    myBar.setVisibility(View.GONE);
                    myBar2.setVisibility(View.GONE);
                    Thread.currentThread().interrupt();
                   
                    break;
                case GUI_THREADING:
                    if(!Thread.currentThread().interrupted())
                    {
                        myBar.setProgress(counter);
                        myBar2.setProgress(counter);
                        setProgress(counter*100);
                        setSecondaryProgress(counter*100);
                    }
                    break;
                default:
                    break;
                }
                super.handleMessage(msg);
            }
        };


     具体线程和消息机制的使用方法你可以参照:Android小項目之---時間線程應用(附源碼)  或者  Android 小項目之--消息、線程、動畫顯示圖片(附源碼) 线程和消息机制这两个知识点,必须掌握好,在项目中会经常使用到。具体的代码流程如下:

进度条完整代码参考
运行效果如图:





拖动条(SeekBar)

       听歌的时候,我们常常喜欢快进或者退回某一时间段,听歌的时候,我们喜欢控件音量大小来听歌。做为与用户交互密切的另外一个控件SeekBar拖动条,可以让用户拖动达到用户需要的效果的控件,在无外乎大大提高用户的体验。下面我们来讲讲此拖动条。

1、拖动条的事件。
2、拖动条的主要属性和方法。
3、模拟方式实现手动的动作。
1、拖动条的事件   

      由于拖动条可以被用户控制。所以需要对其进行事件监听,这就需要实现SeekBar.OnSeekBarChangeListener接口。此接口共需要监听三个事件,分别是:

数值改变(onProgressChanged)
开始拖动(onStartTrackingTouch)
停止拖动(onStopTrackingTouch)
2、 拖动条的主要属性和方法

setMax    
设置拖动条的数值
setProgress
设置拖动条当前的数值
setSeconddaryProgress
设置第二拖动条的数值,即当前拖动条推荐的数值
3、模拟方式实现手动的动作

程序中模仿了用户拖动拖动条的过程,对三个事件分别作了讯录,
分享到:
评论

相关推荐

    安卓源码包androi进度条垂直SeekBar(拖动条)seekbar滑动按钮等DEMO源码等4个合集.zip

    安卓源码包androi进度条垂直SeekBar(拖动条)seekbar滑动按钮等DEMO源码等4个合集: Android seekbar滑动按钮源码 仿知乎的横线直线progressbar 垂直SeekBar(拖动条) 环形的调节条,用于工程中特殊的调值控件,拟...

    Android用户交互例子:进度条与拖动条的实现.rar

    Android用户交互界面的操作实例:如何实现与用户交互的对接,如何创建和使用进度条(ProgressBar)与拖动条(SeekBar),附有实例的相关源码,相信大家对进度条和拖动条已经很熟悉了,各有各的用途,从实现上来说,...

    Android代码-Android弧形拖动条(ArcSeekBar)

    这个是在公司项目中准备使用的一个控件,本准备直接在网上搜一个用,可惜找到的很多都是 ProgressBar,并不具备拖拽功能,于是自己动手实现了一个,其功能和特性均仿照 SeekBar 进行设计。 效果预览 支持的特性 [x...

    Android SeekBar、ProgressBar拖拉改变进度实例.rar

    本源码主要是学习SeekBar、ProgressBar用法,拖动条与进度条结合,当拖动拖动条的时候,ProgressBar跟随着变化,普通拖拉条被拉动的处理代码:  SeekBar sb=(SeekBar)this.findViewById(R.id.SeekBar01);  sb....

    android 自定义 弧形等级进度条

    BxArcProgressBar:android 自定义 弧形等级进度条,参考项目【弧形的拖动条进度控件】https://github.com/jenly1314/ArcSeekBar,https://gitee.com/jenly1314/ArcSeekBar,含源码,apk,截图

    安卓进度条loadingprogress相关-有浮动文字提示的ProgressBarj进度条和SeekBar拖动条开源代码.rar

    有浮动文字提示的ProgressBarj进度条和SeekBar拖动条开源代码.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    收集一些Android widget窗口小部件用法实例集.rar

    为大家分享一套Android widget窗口小部件用法实例集源码,在这个例子中,将涉及到一些大家非常熟悉而且非常有用的窗体UI组件的用法,比如Button按钮、textView、Editview编辑框、Checkbox选择框、RadioGroup单选框、...

    android学习之必备程序

    Activity生命周期,Button与点击...ProgressBar进度条,SeekBar 拖动条,Tab分页式菜单,列表之ArrayAdapter适配,列表之SimpleAdapter适配等75个安卓软件开发的源代码,从初级到高级的游戏开发,一应俱全,希望大家来观看

    android开发揭秘PDF

    4.2.20 拖动条(SeekBar) 4.2.21 状态栏提示(Notification、NotificationManager) 4.2.22 对话框中的进度条(ProgressDialog) 4.3 界面布局 4.3.1 垂直线性布局 4.3.2 水平线性布局 4.3.3.相对布局(RelativeLayout) ...

    Android基础知识详解

    拖动条(SeekBar) 83 评分组件(RatingBar) 86 GridView、Gallery和ImageSwitcher 88 GridView 88 Gallery和ImageSwitcher 91 ListView 94 一、普通的ListView 94 可以单选和多选的ListView 95 使用SimpleAdapter建立...

    Android编程入门很简单.(清华出版.王勇).part1

    5.2.17使用拖动条——SeekBar 5.2.1 8实例——简单使用SeekBar 5.2.19使用图片视图——ImageView 5.2.20实例——ImageView的重叠效果 5.2.21 使用网格视图——GridView 5.2.22实例——通过宫格视图展示相应的应用 ...

    《Android应用开发揭秘》附带光盘代码.

     4.2.20 拖动条(SeekBar)  4.2.21 状态栏提示(Notification、NotificationManager)  4.2.22 对话框中的进度条(ProgressDialog)  4.3 界面布局  4.3.1 垂直线性布局  4.3.2 水平线性布局  4.3.3.相对布局...

    Android入门到精通源代码.

    4.2.14 拖动条(SeekBar) 4.2.15 评分条(RatingBar) 第5章 Android中的视图组件 5.1 视图组件 5.1.1 图片视图(ImageView) 5.1.2 滚动视图(ScrollView) 5.1.3 网格视图(GridView) 5.1.4 列表视图(ListView...

    《Android应用开发揭秘》源码

     4.2.20 拖动条(SeekBar)  4.2.21 状态栏提示(Notification、NotificationManager)  4.2.22 对话框中的进度条(ProgressDialog)  4.3 界面布局  4.3.1 垂直线性布局  4.3.2 水平线性布局  4.3.3.相对布局...

    Android应用开发揭秘pdf高清版

    4.2.20 拖动条(SeekBar) 4.2.21 状态栏提示(Notification、NotificationManager) 4.2.22 对话框中的进度条(ProgressDialog) 4.3 界面布局 4.3.1 垂直线性布局 4.3.2 水平线性布局 4.3.3.相对布局(RelativeLayout) ...

    Android编程入门很简单.(清华出版.王勇).part2

    5.2.17使用拖动条——SeekBar 5.2.1 8实例——简单使用SeekBar 5.2.19使用图片视图——ImageView 5.2.20实例——ImageView的重叠效果 5.2.21 使用网格视图——GridView 5.2.22实例——通过宫格视图展示相应的应用 ...

    android开发入门与实战(下)

    7.3.13 拖动条(SeekBar)介绍与应用 7.3.14 评分组件(RatingBar)介绍与应用 7.3.15 图片视图(ImageView)介绍与应用 7.3.16 图片按钮(ImageButton)介绍与应用 7.3.17 切换图片(ImageSwitcher&Gallery) 7.3.18 网格视图...

Global site tag (gtag.js) - Google Analytics