SeekBar使用方法

2024-09-04 22:18
文章标签 使用 方法 seekbar

本文主要是介绍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 draggable thumb. The user can touch the thumb and drag left or right to set the current progress level or use the arrow keys. Placing focusable widgets to the left or right of a SeekBar is discouraged.

Clients of the SeekBar can attach a SeekBar.OnSeekBarChangeListener to be notified of the user’s actions.

示例

采用和Handler使用方法一样的例子,只是把TextView换成了SeekBar。

效果

seekbar

my_layout.xml

<?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"android:orientation="vertical" ><Buttonandroid:id="@+id/start"android:layout_width="192dp"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:text="@string/start" /><SeekBarandroid:id="@+id/seekBar"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>

字符串

<string name="start">Start</string>

代码

省略掉自动生成的代码

public class MainActivity extends Activity {protected static final String TAG = "MainActivity";private Button button = null;private SeekBar seekBar = null;private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {int count = msg.what;seekBar.setProgress(count);}};private Runnable adding = new Runnable() {@Overridepublic void run() {double d;for (int count = 1; count <= 1000; count++) {for (int i = 0; i < 1000; i++) {d = Math.sqrt(Math.sqrt(i));Log.d(TAG, "count = " + count + ", sqrt(sqrt(" + i + "))=" + d);}if (count % 10 == 0) {handler.sendEmptyMessage(count / 100);}}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.my_layout);button = (Button)findViewById(R.id.start);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {calculate();}});seekBar = (SeekBar)findViewById(R.id.seekBar);seekBar.setMax(10);}protected void calculate() {Thread thread = new Thread(adding);thread.start();}

要点

如下:
- 初始化最大范围:void setMax(int max)
- 更新进度:void setProgress(int progress)

更多事件处理

SeekBar另一个常用的方法是:

/*** Sets a listener to receive notifications of changes to the SeekBar's progress level. Also* provides notifications of when the user starts and stops a touch gesture within the SeekBar.* * @param l The seek bar notification listener* * @see SeekBar.OnSeekBarChangeListener*/
public void setOnSeekBarChangeListener(OnSeekBarChangeListener l) {mOnSeekBarChangeListener = l;
}

其中用到的接口如下:

/*** A SeekBar is an extension of ProgressBar that adds a draggable thumb. The user can touch* the thumb and drag left or right to set the current progress level or use the arrow keys.* Placing focusable widgets to the left or right of a SeekBar is discouraged. * <p>* Clients of the SeekBar can attach a {@link SeekBar.OnSeekBarChangeListener} to* be notified of the user's actions.** @attr ref android.R.styleable#SeekBar_thumb*/
public class SeekBar extends AbsSeekBar {/*** A callback that notifies clients when the progress level has been* changed. This includes changes that were initiated by the user through a* touch gesture or arrow key/trackball as well as changes that were initiated* programmatically.*/public interface OnSeekBarChangeListener {/*** Notification that the progress level has changed. Clients can use the fromUser parameter* to distinguish user-initiated changes from those that occurred programmatically.* * @param seekBar The SeekBar whose progress has changed* @param progress The current progress level. This will be in the range 0..max where max*        was set by {@link ProgressBar#setMax(int)}. (The default value for max is 100.)* @param fromUser True if the progress change was initiated by the user.*/void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser);/*** Notification that the user has started a touch gesture. Clients may want to use this* to disable advancing the seekbar. * @param seekBar The SeekBar in which the touch gesture began*/void onStartTrackingTouch(SeekBar seekBar);/*** Notification that the user has finished a touch gesture. Clients may want to use this* to re-enable advancing the seekbar. * @param seekBar The SeekBar in which the touch gesture began*/void onStopTrackingTouch(SeekBar seekBar);}

示例:

seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {Toast.makeText(MainActivity.this, "onProgressChanged()", Toast.LENGTH_SHORT).show();}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {Toast.makeText(MainActivity.this, "onStartTrackingTouch()", Toast.LENGTH_SHORT).show();}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {Toast.makeText(MainActivity.this, "onStopTrackingTouch()", Toast.LENGTH_SHORT).show(); }});

这篇关于SeekBar使用方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结