The distinction of ProgressBar and SeekBar

2024-05-15 01:38

本文主要是介绍The distinction of ProgressBar and SeekBar,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 当一个应用程序在后台执行时,前台界面不会产生变化,但因为 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(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubswitch (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、模拟方式实现手动的动作

程序中模仿了用户拖动拖动条的过程,对三个事件分别作了讯录,
</div>

拖动条类似进度条,不同的是用户可以控制,比如,应用程序中用户可以对音效进行控制,这就可以使用拖动条来实现。由于拖动条可以被用户控制,所以需要对其进行事件监听,这就需要实现SeekBar.OnSeekBarChangeListener接口。在SeekBar中需要监听3个事件,分别是:数值的改变(onProgressChanged)、开始拖动(onStartTrackingTouch)、停止拖动(onStopTrackingTouch)。在onProgressChanged 中我们可以得到当前数值的大小。我们先看看运行效果吧。

布局文件
<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”

<SeekBar
android:id=”@+id/seek”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:max=”100”
android:progress=”50”
android:secondaryProgress=”75”/>
<TextView
android:id=”@+id/progress”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
/>

<TextView
android:id=”@+id/tracking”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
/>
</LinearLayout>
复制代码

android:max=100 设置的最大值、android:progress=”50”设置了当前属性值

Activity01类
Java代码
package xiaohang.zhimeng;

import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.TextView;

public class Activity01 extends Activity implements
SeekBar.OnSeekBarChangeListener {
/* Called when the activity is first created. /
//声明SeekBar 和 TextView对象
SeekBar mSeekBar;
TextView mProgressText;
TextView mTrackingText;

    @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//取得SeekBar对象mSeekBar = (SeekBar) findViewById(R.id.seek);mSeekBar.setOnSeekBarChangeListener(this);mProgressText = (TextView) findViewById(R.id.progress);mTrackingText = (TextView) findViewById(R.id.tracking);}@Override//在拖动中--即值在改变public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {//progress为当前数值的大小mProgressText.setText("当前值:" + progress);}@Override//在拖动中会调用此方法public void onStartTrackingTouch(SeekBar seekBar) {mTrackingText.setText("xh正在调节");}@Override//停止拖动public void onStopTrackingTouch(SeekBar seekBar) {mTrackingText.setText("xh停止调节");}

}

这篇关于The distinction of ProgressBar and SeekBar的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990442

相关文章

MediaPlayer和SeekBar配合起来

MediaPlayer和SeekBar配合在一起的例子。 预备 MediaPlayerSeekBar使用方法Handler使用方法 例子 my_layout.xml <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"a

SeekBar使用方法

概述 本文讨论SeekBar的使用方法。 在http://blog.csdn.net/a_flying_bird/article/details/50948916一文讨论了Handler的使用方法,这是本文的基础。本文使用同样的示例,即一个计算任务。 Class Overview A SeekBar is an extension of ProgressBar that adds a dr

自定义控件 - SeekBar,支持横竖两种状态,支持分段,滑动带动画效果

转载请标明出处: http://blog.csdn.net/u013254166/article/details/79161348 本文出自: 【rhino博客】  直接上效果图,实现很简单,这里就不赘述了。 最后附上源码下载链接,点击下载。

Android 自定义SeekBar动态改变 硬件音量大小 实现和音量键的同步

1,上图: 2,代码: MainActivity.java package com.hero.zhaoq.seekbarchangeddemo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.con

android开发 ListView ProgressBar实时更新

最近公司做的一款安卓APP项目需要实现一个下载功能,其中我用listView列表来展示下载项目,每个Item里面用到了ProgressBar控件来实时显示下载进度,我是通过接口获取每个线程对应的下载进度在item的ProgressBar更新的,最开始我把这个部分处理在Adpater里面处理的。结果我用尽各种办法都没有实现让他实时更新ProgeressBar进度。        纠结了几天过后,我

8_29_progressBar

progressBar maxinum();mininum();value();//进度条当前值,alignment();//文本在进度条中的对其方式format();//展示的数字形式 在Qt中,有一个头文件专门包含了所有类的“前置声明”。 class QWdigetclass QPushButtonclass QTimer 所以在头文件包含了类之后,就可以在Widge

android 自定义 View(4)- 进度条(ProgressBar)

参考: Android 打造形形色色的进度条 实现可以如此简单 daimajia/NumberProgressBar 自定义视图(View)是 Android 开发的一个进阶内容。随着开发的深入,肯定会出现系统提供的基础控件不符合需求的情况。一方面通过组合基础控件以形成新的布局,另一方面可以通过自定义控件的方式来更加灵活的实现需求 自定义视图涉及到 Android 系统许多方面的内容,

Progressbar的使用以及ListView的使用

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"

显示类控件——ProgressBar

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:QT ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、ProgressBar介绍核心属性代码示例: 设置进度条按时间增长示例: 创建一个蓝色的进度条示例: 反方向增长进度条 一、ProgressBar 介绍 在应用程序中显示进度条,以指示任务的完成进度或操作的进行情况。它提供了一个可视化的方式来展示进度,使得