SeekBar 和RatingBar --MarsChen Android 开发教程学习笔记

2023-10-13 03:58

本文主要是介绍SeekBar 和RatingBar --MarsChen Android 开发教程学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



SeekBar 和RatingBar 是ProgressBar 的子类,分别用于可拖拽进度条和星形进度条。

SeekBar 的主要属性
最大值max 、当前进度值progress 和当前第二进度值SecondaryProgress

OnSeekBarChangeListener
是SeekBar 的监听器,主要有三个方法:
进度变化后触发的onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 、用户开始拖拽调用的onStartTrackingTouch(SeekBar seekBar) 、用户停止拖拽调用的onStopTrackingTouch(SeekBar seekBar) 。
方法中SeekBar seekBar 用于确定是哪个进度条触发,int Progress 指向该进度条的进度,boolean 用于确定是否为用户直接改变的进度,既是用户手直接触摸进度条小圆改变的进度,如果通过按钮或者其他方式改变的返回值为false 。
Seekbar 的用法
在XML文件中添加SeekBar 组件,并在JAVA文件中声明。XML文件中可以用max 、progress 和SecondaryProgress ,命令设置属性,也可在JAVA代码中调用setMax(int i) 、setProgress(int i)和setSecondaryProgress(int i)方法达到相同目的。
设定继承自OnSeekBarChangeListener 的监听器,内含有onProgressChange(SeekBar, int progress, boolean fromeUser)、onStartTrackingTouch(SeekBar seeBar) 和onStopTrackingTouch(SeekBar seeBar) 方法。

RatingBar的主要属性
用于显示星星个数的numStars 、当前等级progress 和每前进一格代表的分数setpSize 。

OnRatingBarChangeListener
用于监听RatingBar 的改变,内有onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) 方法,RatingBar ratingBar 用于判定是哪个进度条发生改变,float rating 用于显示进度条的值,boolean fromUser 用于判定是否为用户通过直接触摸进度条改变值。
在XML 文件中的代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.shumin.lbs06.MainActivity" >

<SeekBar
android:id="@+id/seekbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
/>

<RatingBar
android:id="@+id/ratingbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/seekbar"
android:numStars="5"
android:progress="2"
android:stepSize="0.5" />

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/ratingbar"
android:text="BUTTON"/>
</RelativeLayout>



在JAVA 文件中的代码:

package com.shumin.lbs06;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;


public class MainActivity extends ActionBarActivity {

private SeekBar seekbar;
private RatingBar ratingbar;
private Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekbar=(SeekBar)findViewById(R.id.seekbar);
ratingbar=(RatingBar)findViewById(R.id.ratingbar);
button=(Button)findViewById(R.id.button);
seekbar.setProgress(15);
seekbar.setSecondaryProgress(18);
SeekBarListener seekBarListener=new SeekBarListener();
seekbar.setOnSeekBarChangeListener(seekBarListener);
RatingBarListener ratingbarlistener=new RatingBarListener();
ratingbar.setOnRatingBarChangeListener(ratingbarlistener);
ButtonListener buttonlistener=new ButtonListener();
button.setOnClickListener(buttonlistener);
}


class ButtonListener implements OnClickListener{

@Override
public void onClick(View v) {
float i=ratingbar.getRating();
ratingbar.setRating(i+1);
}

}
class RatingBarListener implements OnRatingBarChangeListener{

@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
System.out.println("星级"+rating+"是否来自用户"+fromUser);
}

}
class SeekBarListener implements OnSeekBarChangeListener{

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
System.out.println(progress+"进度"+fromUser);
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
System.out.println("开始啦!!!");

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
System.out.println("停下啦!!!");

}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}




这篇关于SeekBar 和RatingBar --MarsChen Android 开发教程学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期