学习Android的第十二天

这篇具有很好参考价值的文章主要介绍了学习Android的第十二天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Android SeekBar:拖动条控件

SeekBar 属性

SeekBar 事件

SeekBar 定制

范例:

参考文档

Android RatingBar 星级评分条

RatingBar 属性

RatingBar 样式

RatingBar 事件

范例:

官方文档

Android ScrollView 滚动视图

ScrollView

滚动到底部或顶部

设置滚动的滑块图片

隐藏滑块

设置滚动速度

官方文档


Android SeekBar:拖动条控件

SeekBar(拖动条)是Android中常用的用户界面控件之一,通常用于控制音乐播放器或视频播放器的音量、播放进度等。作为 ProgressBar 的子类,SeekBar 继承了 ProgressBar 的所有属性,并且还具有一些自己特有的属性和方法。

SeekBar 属性

SeekBar 控件的简单属性包括:

  • android:max="100":设置滑动条的最大值为 100。
  • android:progress="60":设置滑动条的当前值为 60。这表示默认情况下滑动条显示的进度位置。
  • android:secondaryProgress="70":设置二级滑动条的进度为 70。某些场景下,SeekBar 可以展示两种进度,比如下载进度和缓冲进度,此属性用于设置缓冲进度。
  • android:thumb="@mipmap/sb_icon":设置滑块的 drawable 为指定的图像资源 sb_icon。滑块是用户可以拖动的部分,该属性允许你自定义滑块的外观。

SeekBar 事件

SeekBar 内置了 SeekBar.OnSeekBarChangeListener 事件监听器,其中包含三个方法:

  • onProgressChanged(SeekBar seekBar, int progress, boolean fromUser):当拖动条的进度发生改变时触发。参数 seekBar 是触发该事件的 SeekBar 对象,progress 是当前的进度值,fromUser 表示进度是否是由用户手动操作触发的。
  • onStartTrackingTouch(SeekBar seekBar):当用户开始按住 SeekBar 拖动时触发。参数 seekBar 是触发该事件的 SeekBar 对象。
  • onStopTrackingTouch(SeekBar seekBar):当用户停止拖动 SeekBar 时触发。参数 seekBar 是触发该事件的 SeekBar 对象。

SeekBar 定制

SeekBar提供了两个属性来定制它的外观:

1、android:progressDrawable:用于设置 SeekBar 轨道的 Drawable。通过设置这个属性,你可以自定义 SeekBar 的轨道样式,可以是颜色、图片等。例如:

<SeekBar
    android:id="@+id/seekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="0"
    android:progressDrawable="@drawable/custom_progress_drawable" />

2、android:thumb:用于设置 SeekBar 拖动条的 Drawable。这个属性用于自定义 SeekBar 的拖动按钮的外观。你可以使用一个图片作为滑块,也可以使用自定义的形状。例如:

<SeekBar
    android:id="@+id/seekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="0"
    android:thumb="@drawable/custom_thumb" />

范例:

1、在 XML 布局文件中定义 SeekBar

<?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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:gravity="center">

        <SeekBar
            android:id="@+id/seekBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:max="100"
            android:progress="60"
            android:thumb="@drawable/seekbar_thumb_pressed" />

        <TextView
            android:id="@+id/text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="当前音量: 60/100" />

</LinearLayout>

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 星级评分条

Android 中的 RatingBar 是一个用户界面控件,用于允许用户通过选择星级评分来表示对某个项目或内容的喜好程度。它显示一行星形图标,用户可以在图标中选择一个评分,通常是从1到5颗星。

RatingBar 属性

在 Android 中,RatingBar 控件有几个常用的属性:

  • android:isIndicator:该属性用于指示 RatingBar 是否仅用于显示评分,而用户无法更改。默认值为 false,即用户可以点击选择评分。如果将其设置为 true,则 RatingBar 将变为只读模式,用户不能更改评分。
  • android:numStars:该属性指定了 RatingBar 显示的星星数量。它必须是一个整数值,表示星星的数量。例如,如果设置为 5,则 RatingBar 将显示 5 颗星。
  • android:rating:这是 RatingBar 的默认评分值。它必须是一个浮点数值,表示 RatingBar 初始化时显示的评分。默认值为 0.0。
  • android:stepSize:该属性指定评分每次增加的值。它必须是一个浮点数值,表示每次用户点击时评分增加的量。例如,如果设置为 0.5,则每次点击评分增加 0.5。默认值为 0.5。

RatingBar 样式

在 Android 中,除了默认的 RatingBar 样式外,还提供了两个其他样式,但是它们并不常用,因为它们可能在某些设备上显示不一致,或者看起来不够美观。这两个样式是:

  • style="?android:attr/ratingBarStyleSmall":这个样式适用于小尺寸的 RatingBar,通常用于较小的控件或者嵌入到其他控件中。它可能在不同设备上的显示效果会有所不同。
  • style="?android:attr/ratingBarStyleIndicator":这个样式用于指示性的 RatingBar,通常用于显示当前评分的状态,而不允许用户进行交互。这种样式的 RatingBar 是只读的,用户不能改变评分。

RatingBar 事件

RatingBar 提供了 OnRatingBarChangeListener 事件监听器,用于监听评分变化事件。这个监听器包含一个方法:

  • onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser):当用户改变评分时触发该方法。参数 ratingBar 是触发事件的 RatingBar 对象,rating 是当前的评分值,fromUser 表示评分是否是由用户触发的。在这个方法中,可以响应用户的评分变化,并进行相应的处理。

范例:

<?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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:gravity="center">

        <RatingBar
            android:id="@+id/ratingBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:isIndicator="false"
            android:numStars="5"
            android:rating="3.5"
            android:stepSize="0.5" />

        <TextView
            android:id="@+id/tv_rating"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="当前评分:3.5" />

</LinearLayout>
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);
            }
        });
    }
}

官方文档

  1. RatingBar

Android ScrollView 滚动视图

在 Android 中,ScrollView 是一个常用的滚动视图容器,用于在屏幕空间不足以容纳所有内容时,允许用户在垂直方向上滚动内容。ScrollView 可以包含一个子视图,这个子视图可以是单个组件,也可以是一个布局包含的复杂层次结构。

ScrollView 主要用于处理以下情况:

  1. 当内容超出屏幕范围时,允许用户通过滚动操作来查看隐藏部分的内容。
  2. 当需要在垂直方向上滚动显示内容时,例如长列表或大段文字等。

ScrollView

例子:

<?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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:gravity="center">

        <ScrollView
            android:id="@+id/scrollview"
            android:layout_width="match_parent"
            android:layout_height="500dp">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/extralongtext" />
        </ScrollView>
</LinearLayout>

滚动到底部或顶部

方法 fullScroll(int direction) 可以用于将 ScrollView 滚动到底部或顶部。这个方法接受一个参数 direction,指定滚动的方向。常量 ScrollView.FOCUS_DOWN 表示滚动到底部,而常量 ScrollView.FOCUS_UP 则表示滚动到顶部。

// 滚动到底部
scrollView.fullScroll(ScrollView.FOCUS_DOWN);

// 滚动到顶部
scrollView.fullScroll(ScrollView.FOCUS_UP);

例子:

<?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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:gravity="center">

        <Button
            android:id="@+id/btn_down"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="滚动到底部" />
        <ScrollView
            android:id="@+id/scrollview"
            android:layout_width="match_parent"
            android:layout_height="500dp">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/extralongtext" />
        </ScrollView>
        <Button
            android:id="@+id/btn_up"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="滚动到顶部" />
</LinearLayout>
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" 来隐藏滚动条滑块。

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="none">

    <!-- ScrollView 内容 -->

</ScrollView>

方法二:通过 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) 方法来实现。在重写的方法中,可以调整滚动速度。文章来源地址https://www.toymoban.com/news/detail-830330.html

@Override
public void fling(int velocityY) {
    super.fling(velocityY / 2);    //速度变为原来的一半
}

官方文档

  1. Android ScrollView

到了这里,关于学习Android的第十二天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学习c#的第二天

    目录 C# 基本语法 using class C# 中的注释 成员变量 成员函数 类的实例化 标识符 C# C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。 例如

    2024年02月04日
    浏览(38)
  • 学习Bootstrap 5的第二天

    ​​​​​​​ 目录 前言  网格系统 网格类 网格系统规则 网格的基本结构 网格选项 从堆叠到水平 自动布局列 超小型设备 超小型设备网格实例 自动布局列 小型设备 小型设备网格实例 自动布局列 中型设备 中型设备网格实例 自动布局列 大型设备 大型设备网格实例 自动

    2024年02月10日
    浏览(50)
  • 学习Android的第十四天

    目录 Android DatePicker 日期选择器 DatePicker 属性 和 事件 DatePicker 事件 获得 DatePicker 的值 Android TimePicker 时间选择器 TimePicker 属性 TimePicker 事件 获得 TimePicker 的值 Android CalendarView 日历视图 CalendarView 属性 CalendarView 事件 获得 CalendarView 的值 在Android中,DatePicker是一个用户界面组件

    2024年02月21日
    浏览(50)
  • 学习Android的第十一天

    目录 Android ProgressBar 进度条 ProgressBar ProgressBar 外观 ProgressBar 属性 ProgressBar 方法 Android ProgressBar 动图替代圆形进度条 范例 Android ProgressBar 自定义圆环进度条 例子: 参考文档 在Android中,ProgressBar(进度条)是用于显示任务进度的UI组件,通常用于耗时操作的过程中以及需要显

    2024年02月19日
    浏览(48)
  • 大数据学习第十二天(hadoop概念)

    1、服务器之间数据文件传递         1)服务器之间传递数据,依赖ssh协议         2)http协议是web网站之间的通讯协议,用户可已通过http网址访问到对应网站数据         3)ssh协议是服务器之间,或windos和服务器之间传递的数据的协议。支持shell指令的传输         4)在

    2024年04月14日
    浏览(40)
  • 【80天学习完《深入理解计算机系统》】第十二天3.6数组和结构体

    专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格: 红色文字表示:重难点★✔ 蓝色文字表示:思路以及想法★✔ 如果大家觉得有帮助的话,感谢大家帮

    2024年02月10日
    浏览(52)
  • 学习Bootstrap 5的第十六天

    目录 Flex(弹性)布局 弹性盒子(flexbox) 水平方向 垂直方向 对齐内容 等宽 伸展 顺序 自动外边距 包裹 对齐内容 子元素对齐 指定子元素对齐 响应式 Flex 类 Bootstrap 3 和 Bootstrap 4 5 的最大区别在于 Bootstrap 5 现在使用 flexbox 而不是浮动来处理布局。 弹性的框布局模块,可以更轻

    2024年02月06日
    浏览(40)
  • 构建你的第一个Android应用

    一、Android的核心组件 Android是一种基于Linux的开源操作系统,主要用于移动设备,如智能手机和平板电脑。Android的设计目标是为用户提供一个统一、灵活和丰富的用户体验,同时保持开放性和兼容性。 Android的核心组件 包括: 应用程序框架:提供了一套用于开发和运行应用程

    2024年02月01日
    浏览(56)
  • 学C的第三十二天【动态内存管理】

    ========================================================================= 相关代码gitee自取 :C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 学C的第三十一天【通讯录的实现】_高高的胖子的博客-CSDN博客  ======================================

    2024年02月14日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包