目录
Android SeekBar:拖动条控件
SeekBar 属性
SeekBar 事件
SeekBar 定制
范例:
参考文档
Android RatingBar 星级评分条
RatingBar 属性
RatingBar 样式
RatingBar 事件
范例:
官方文档
Android ScrollView 滚动视图
ScrollView
滚动到底部或顶部
设置滚动的滑块图片
隐藏滑块
设置滚动速度
官方文档
SeekBar(拖动条)是Android中常用的用户界面控件之一,通常用于控制音乐播放器或视频播放器的音量、播放进度等。作为 ProgressBar 的子类,SeekBar 继承了 ProgressBar 的所有属性,并且还具有一些自己特有的属性和方法。
SeekBar 控件的简单属性包括:
SeekBar 内置了 SeekBar.OnSeekBarChangeListener 事件监听器,其中包含三个方法:
SeekBar提供了两个属性来定制它的外观:
1、android:progressDrawable:用于设置 SeekBar 轨道的 Drawable。通过设置这个属性,你可以自定义 SeekBar 的轨道样式,可以是颜色、图片等。例如:
2、android:thumb:用于设置 SeekBar 拖动条的 Drawable。这个属性用于自定义 SeekBar 的拖动按钮的外观。你可以使用一个图片作为滑块,也可以使用自定义的形状。例如:
1、在 XML 布局文件中定义 SeekBar
2、修改 MainActivity.java 给 SeekBar 添加一个 SeekBar.OnSeekBarChangeListener
package com.example.myapplication;
import android.os.Bundle;
import android.util.Log;
import android.widget.SeekBar;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SeekBar seekBar = findViewById(R.id.seekBar);
TextView text1 = findViewById(R.id.text);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// 当进度发生变化时调用
Log.d("SeekBar", "当前值:" + progress);
text1.setText("当前音量:"+ progress+"/100" );
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 当用户开始拖动SeekBar时调用
Log.d("SeekBar", "开始拖动");
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 当用户停止拖动SeekBar时调用
Log.d("SeekBar", "停止拖动");
}
});
}
}
官方文档: SeekBar
Android 中的 RatingBar 是一个用户界面控件,用于允许用户通过选择星级评分来表示对某个项目或内容的喜好程度。它显示一行星形图标,用户可以在图标中选择一个评分,通常是从1到5颗星。
在 Android 中,RatingBar 控件有几个常用的属性:
在 Android 中,除了默认的 RatingBar 样式外,还提供了两个其他样式,但是它们并不常用,因为它们可能在某些设备上显示不一致,或者看起来不够美观。这两个样式是:
RatingBar 提供了 OnRatingBarChangeListener 事件监听器,用于监听评分变化事件。这个监听器包含一个方法:
package com.example.myapplication;
import android.os.Bundle;
import android.widget.RatingBar;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RatingBar ratingBar = findViewById(R.id.ratingBar);
TextView ratingTextView = findViewById(R.id.tv_rating);
// 设置 RatingBar 的当前评分值
float currentRating = ratingBar.getRating();
// 显示当前评分值
ratingTextView.setText("当前评分值: " + currentRating);
// 设置 RatingBar 的评分变化监听器
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
// 当评分发生变化时更新评分文本
ratingTextView.setText("当前评分值: " + rating);
}
});
}
}
在 Android 中,ScrollView 是一个常用的滚动视图容器,用于在屏幕空间不足以容纳所有内容时,允许用户在垂直方向上滚动内容。ScrollView 可以包含一个子视图,这个子视图可以是单个组件,也可以是一个布局包含的复杂层次结构。
ScrollView 主要用于处理以下情况:
例子:
方法 fullScroll(int direction) 可以用于将 ScrollView 滚动到底部或顶部。这个方法接受一个参数 direction,指定滚动的方向。常量 ScrollView.FOCUS_DOWN 表示滚动到底部,而常量 ScrollView.FOCUS_UP 则表示滚动到顶部。
// 滚动到底部
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
// 滚动到顶部
scrollView.fullScroll(ScrollView.FOCUS_UP);
例子:
package com.example.myapplication;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取按钮和 ScrollView 对象
Button btnDown = findViewById(R.id.btn_down);
Button btnUp = findViewById(R.id.btn_up);
ScrollView scrollView = findViewById(R.id.scrollview);
// 滚动到底部按钮点击事件
btnDown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
});
// 滚动到顶部按钮点击事件
btnUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scrollView.fullScroll(ScrollView.FOCUS_UP);
}
});
}
}
在 Android 中,可以使用 android:scrollbarThumbVertical 和 android:scrollbarThumbHorizontal 属性来设置 ScrollView 或 HorizontalScrollView 的滚动条的滑块图片。
要隐藏 ScrollView 或 HorizontalScrollView 的滚动条滑块,可以使用两种方法:
方法一:通过 XML 属性设置
可以在 XML 布局文件中直接设置 android:scrollbars 属性为 "none" 来隐藏滚动条滑块。
方法二:通过 Java 代码设置
也可以在 Java 代码中调用 setVerticalScrollBarEnabled(false) 或 setHorizontalScrollBarEnabled(false) 方法来隐藏滚动条滑块。
ScrollView scrollView = findViewById(R.id.scrollview);
scrollView.setVerticalScrollBarEnabled(false);
或者对于 HorizontalScrollView:
HorizontalScrollView horizontalScrollView = findViewById(R.id.horizontal_scrollview);
horizontalScrollView.setHorizontalScrollBarEnabled(false);
虽然 ScrollView 并没有直接提供设置滚动速度的方法,但是可以通过继承 ScrollView 并重写其 fling(int velocityY) 方法来实现。在重写的方法中,可以调整滚动速度。
@Override
public void fling(int velocityY) {
super.fling(velocityY / 2); //速度变为原来的一半
}