API Demos 2.3 学习笔记 (13)-- Views->Seek Bar

简介:

更多精彩内容,请点击阅读:《API Demos 2.3 学习笔记》


SeekBar 是基于ProgressBar的扩展,可以理解为添加了滑动条的ProgressBar。用户可以左右移动滑动条或者左右移动轨迹球来设置当前的进度值。最好不要在SeekBar左边或者右边放置一个可以聚焦的控件。

SeekBar 控件最经典的应用是在播放器中用于显示/改变播放进度的进度条。下面是一个简单的SeekBar 控件:

	 <SeekBar android:id="@+id/seek"
       	      android:layout_width="match_parent"
       	      android:layout_height="wrap_content"
       	      android:max="100"
       	      android:progress="50"
       	      android:secondaryProgress="75" />
注:android:max="100" 属性表示该SeekBar 的最大值为100,即取值范围为0~100
android:progress="50" 属性表示当前初始的进度值为50

android:secondaryProgress="75"  属性表示当前初始的第二进度值为 75


在播放器的进度条中, android:progress常用来表示当前播放的进度,而 android:secondaryProgress则常用来表示当前音频/视频文件缓冲的进度。

SeekBar 主要通过设置监听器OnSeekBarChangeListener来响应用户点击的。具体使用方法如下:

       // 通过findViewById方法获得RatingBar对象
        SeekBar mSeekBar = (SeekBar) findViewById(R.id.seekbar);
                 
         //创建SeekBar 监听器
        mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
			
			public void onStopTrackingTouch(SeekBar seekBar) {
				// TODO 用户停止对seekbar进行触屏操作时触发响应
				
			}
			
			public void onStartTrackingTouch(SeekBar seekBar) {
				// TODO 用户开始对seekbar进行触屏操作时触发响应
				
			}
			
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				// TODO 用户移动滑动条,导致进度值改变时,触发响应
				
			}
		});
注:创建 SeekBar 监听器时,需要注意的是,3个参数以及它们对应的含义如下:
seekBar:   由于多个SeekBar可以同时指定同一个SeekBar 监听器 。该参数就是当前触发SeekBar 监听器的那一个SeekBar 对象。
progress:  当前进度值。取值范围从0到android:max属性所设定的最大值。

fromUser:  如果触发监听器的是来自用户触屏点击或轨迹球左右移动,则为true。


下面我们进行实例代码解析:

res-layout-seekbar_1.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- 一个SeekBar对象-->
    <!-- android:max="100" 表示seekbar最大值是100,即取值范围0~100-->
    <!-- android:progress="50" 表示seekbar当前进度取值是50-->
    <!-- android:secondaryProgress="75"  表示seekbar当前第二进度取值是75-->
    <SeekBar android:id="@+id/seek"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="50"
        android:secondaryProgress="75" />

    <!-- 一个TextView对象,用于显示当前的progress进度值 -->
    <TextView android:id="@+id/progress"
       	android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    
    <!-- 一个TextView对象,用于显示用户当前是否在对Seek Bar进行触屏操作 -->
    <TextView android:id="@+id/tracking"
       	android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>


src-com.example.android.apis.view-SeekBar1.java

package com.example.android.apis.view;

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

import com.example.android.apis.R;


/**
 * 演示如何使用seek bar
 */
public class SeekBar1 extends Activity implements SeekBar.OnSeekBarChangeListener {
    
    SeekBar mSeekBar;
    TextView mProgressText;
    TextView mTrackingText;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.seekbar_1);
        
        // 通过findViewById方法获得一个SeekBar对象和两个用于提示作用的TextView
        mSeekBar = (SeekBar)findViewById(R.id.seek);
        mSeekBar.setOnSeekBarChangeListener(this); //设置Seek Bar监听器
        mProgressText = (TextView)findViewById(R.id.progress);
        mTrackingText = (TextView)findViewById(R.id.tracking);
    }

    //当用户用手移动滑动条,改变进度值时,触发该响应。progress表示当前进度值。
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
        mProgressText.setText(progress + " " + 
                getString(R.string.seekbar_from_touch) + "=" + fromTouch); 
    }

    //用户开始对SeekBar进行触屏操作时触发响应
    public void onStartTrackingTouch(SeekBar seekBar) {
        mTrackingText.setText(getString(R.string.seekbar_tracking_on));
    }

    //用户停止对SeekBar进行触屏操作时触发响应
    public void onStopTrackingTouch(SeekBar seekBar) {
        mTrackingText.setText(getString(R.string.seekbar_tracking_off));
    }
}

知识点1:关于如何自定义SeekBar的颜色,大小,图片等进阶知识,请点击阅读《SeekBar自定义(颜色,大小,图片)》


预览效果:


相关文章
|
7月前
|
jenkins API 持续交付
jenkins学习笔记之十五:SonarSQube API使用
jenkins学习笔记之十五:SonarSQube API使用
|
7月前
|
人工智能 监控 安全
F5社区学习笔记:API和AI如何改变应用安全?
F5社区学习笔记:API和AI如何改变应用安全?
75 1
|
10月前
|
XML API 数据格式
【Qt 学习笔记】QWidget的enable属性 | API的介绍
【Qt 学习笔记】QWidget的enable属性 | API的介绍
235 0
|
前端开发 API
前端学习笔记202305学习笔记第三十天-什么是mvc-c层api 前后端联动1
前端学习笔记202305学习笔记第三十天-什么是mvc-c层api 前后端联动1
92 0
|
前端开发 API
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 前后端联动3
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 前后端联动3
66 0
|
前端开发 API
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结3
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结3
79 0
|
前端开发 API
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结4
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结
86 0
|
8天前
|
存储 缓存 监控
如何高效爬取天猫商品数据?官方API与非官方接口全解析
本文介绍两种天猫商品数据爬取方案:官方API和非官方接口。官方API合法合规,适合企业长期使用,需申请企业资质;非官方接口适合快速验证需求,但需应对反爬机制。详细内容涵盖开发步骤、Python实现示例、反爬策略、数据解析与存储、注意事项及扩展应用场景。推荐工具链包括Playwright、aiohttp、lxml等。如需进一步帮助,请联系作者。
|
9天前
|
机器学习/深度学习 JSON 算法
淘宝拍立淘按图搜索API接口系列的应用与数据解析
淘宝拍立淘按图搜索API接口是阿里巴巴旗下淘宝平台提供的一项基于图像识别技术的创新服务。以下是对该接口系列的应用与数据解析的详细分析
|
21天前
|
JSON API 数据格式
淘宝商品评论数据API接口详解及JSON示例返回
淘宝商品评论数据API接口是淘宝开放平台提供的一项服务,旨在帮助开发者通过编程方式获取淘宝商品的评论数据。这些数据包括评论内容、评论时间、评论者信息、评分等,对于电商分析、用户行为研究、竞品分析等领域都具有极高的价值。