android学习—SeekBar和RatingBar

android学习—SeekBar和RatingBar

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

SeekBar 拖动条:拖动条和滚动栏类似,当是拖动条能够拖动滑块改变进度

RatingBar 星级评分条:星级评分条与拖动条相似

SeekBar特有的xml属性

android:thumb    指定一个Arawable对象,作为之定义滑块

android学习---SeekBar和RatingBar

RatingBar特有的xml属性

android:isIndicator   是否同意用户改变(true为不同意改动)

android:numStars   共同拥有多少个星级

android:rating   默认的星级

android:stepSize   每次至少改变多少个星级

android学习---SeekBar和RatingBar

为了知道改变的进度而做对应的操作,我们须要加入监听

SeekBar 的监听 OnSeekBarChangeListener

RatingBar的监听 OnRatingBarChangeListener

以下我们通过实例来熟悉它们

(1)编写布局文件   activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout" 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <ImageView 
        android:id="@+id/imgView1"
        android:layout_width="120dp"
        android:layout_height="100dp"
        android:src="@drawable/ic_launcher"/>
    <SeekBar 
        android:id="@+id/seekBar"
        android:layout_width="180dp"
        android:layout_height="wrap_content"
        android:thumb="@drawable/ic_launcher"
        android:max="255"
        android:progress="255"/>
      <ImageView 
        android:id="@+id/imgView2"
        android:layout_width="120dp"
        android:layout_height="100dp"
        android:src="@drawable/img01"/>
      <RatingBar 
          android:id="@+id/reatingBar"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:max="255"
          android:progress="255"
          android:rating="5"
          android:stepSize="0.5"
          android:numStars="5"/>
    
</LinearLayout>

(2)编写 MainActivity.java

package com.example.bar;

import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class MainActivity extends Activity {
	
	private ImageView imgViewSB = null; //定义ImageView
	private ImageView imgViewRB = null;
	private SeekBar seekBar = null;  //定义SeekBar
	private RatingBar ratingBar = null; //定义RatingBar

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//布局组件
		this.imgViewSB = (ImageView) findViewById(R.id.imgView1);
		this.imgViewRB = (ImageView) findViewById(R.id.imgView2);
		this.seekBar = (SeekBar) findViewById(R.id.seekBar);
		this.ratingBar = (RatingBar) findViewById(R.id.reatingBar);
		
		//seekBar设置监听,改变图片透明度
		this.seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
			
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				Log.i("onStopTrackingTouch", "停止拖动触发的方法");
				
			}
			
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
				Log.i("onStartTrackingTouch", "開始拖动触发的方法");
				
			}
			
			
			/**
			 * seekBar: SeekBar对象
			 * progress:拖动条的进度
			 * fromUser:是否用户手动改变
			 */
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				imgViewSB.setAlpha(progress);  //设置图片的透明度
				Log.i("onProgressChanged", "拖动滑块位置发生改变时触发的方法");
				
			}
		});
		
		//ratingBar设置监听,改变图片透明度
		this.ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
			
			
			/**
			 * ratingBar:RatingBar对象
			 * rating :星级的大小
			 * fromUser:是否用户手动改变
			 */
			@Override
			public void onRatingChanged(RatingBar ratingBar, float rating,
					boolean fromUser) {
				imgViewRB.setAlpha((int)(rating*255/5));
				
			}
		});
		
		
	}

	@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;
	}

}

同意之后,效果例如以下:

android学习---SeekBar和RatingBar

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117977.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu14.04 64bit 安装 &amp;&amp; 破解quartus13.0 记录

    ubuntu14.04 64bit 安装 &amp;&amp; 破解quartus13.0 记录

    2021年11月23日
    38
  • modbus协议讲解及实现_MODBUS功能码

    modbus协议讲解及实现_MODBUS功能码Modbus是一种单主站的主/从通信模式。Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,从站的地址范围为0-247,其中0为广播地址,从站的实际地址范围为1-247。Modbus通信标准协议可以通过各种传输方式传播,如RS232C、RS485、光纤、无线电等。Modbus具有两种串行传输模式,ASCII和RTU。它们定义了数据如何打包、解码的…

    2025年8月25日
    2
  • java h2 数据库_H2数据库介绍「建议收藏」

    java h2 数据库_H2数据库介绍「建议收藏」一、H2数据库简介1、H2数据库是一个开源的关系型数据库。H2是一个嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准的sql标准,支持集群2、提供JDBC、ODBC访问接口,提供了非常友好的基于web的数据库管理界面二、在Java中操作H2数据库1、以嵌入式(本地)连接方式连接H2数据库这种连接方式默认情况下只允许有一个客户端连接到…

    2022年10月12日
    2
  • Linux pstack命令[通俗易懂]

    Linux pstack命令[通俗易懂]概要打印运行进程的栈信息(快照),包括一个进程下的所有线程的栈信息。语法pstackpid解释pstack是封装了gdb功能的shell脚本,通过”threadapplyallbt”的命令获得输出所有的线程堆栈信息,再用sed进行替换和过滤#RunGDB,stripoutunwantednoise.$GDB–quiet$readnever-nx/proc/$1/exe$1<<EOF2>&1|

    2022年9月14日
    2
  • RNN学习笔记(一)-简介及BPTT RTRL及Hybrid(FP/BPTT)算法[通俗易懂]

    RNN学习笔记(一)-简介及BPTT RTRL及Hybrid(FP/BPTT)算法[通俗易懂]RNN网络的学习算法-BPTT笔记本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗Ctrl+B斜体Ctrl+I引

    2022年6月23日
    31
  • WebApp 开发框架推荐以及优缺点分析[通俗易懂]

    WebApp 开发框架推荐以及优缺点分析[通俗易懂]不用盲目的百度和问大神们WebApp开发使用哪个框架最好?等等问题。在此,小编尽量解答各位的WebApp 问题。根据国内js大神以及有过WebApp 开发经验的前辈们分析,小编推荐下面6款常用的WebApp 开发框架。第一款:Sencha TouchSenchaTouch是世界上第一个支持HTML5和CSS3标准的移动应用框架,你可以使用HTML5来编写音频和视频组件,还可以使用…

    2022年6月24日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号