Android模仿三星手机系统滑动条滑动时滑块变大的特效

2023-11-23 11:40

本文主要是介绍Android模仿三星手机系统滑动条滑动时滑块变大的特效,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用三星手机的过程中发现三星手机系统自带的滑动条有一个特效,比如调节亮度的滑动条,在滑动滑块的过程中,滑块会变大,功能很小但是体验却很好,于是决定做一个这样的效果出来,好了废话不多说了,下面开始实现

我们知道在SeekBar控件中有两个很重要的属性,一个是进度条(即android:progressDrawable属性),一个是滑块(即android:thumb属性),我们主要用到的是滑块的特效,这里就把进度条的配置稍微的介绍一下,先上代码:

在res/xml文件夹下创建seekbar_progress.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" ><item android:id="@android:id/background"><shape><corners android:radius="0dip" /><gradientandroid:angle="270"android:centerColor="#999999"android:centerY="0.75"android:endColor="#999999"android:startColor="#999999" /></shape></item><item android:id="@android:id/secondaryProgress"><clip><shape><corners android:radius="1dip" /><gradientandroid:angle="270"android:centerColor="#88803990"android:centerY="0.75"android:endColor="#88803990"android:startColor="#88803990" /></shape></clip></item><item android:id="@android:id/progress"><clip><shape><corners android:radius="1dip" /><gradientandroid:angle="270"android:centerColor="#803990"android:centerY="0.75"android:endColor="#803990"android:startColor="#803990" /></shape></clip></item></layer-list>

代码的内容很简单,主要是设置进度条的第一进度、第二进度和背景颜色,这里就不做具体介绍了。

接下来开始我们的滑块属性,要想实现三星的那种效果,我们必须要处理正常状态下和按下的事件,应该都想到了状态选择器,这里我们在res/drawable目录下创建滑块的状态选择器thum_selector.xml,然后设置去设置它的一些item属性,但是这时候发现我们的滑块还没有创建呢,这里的滑块我们不使用图片,而是通过绘制的方式来实现(至于具体的怎么去创建,我们可以在Android源码中找到thum的配置文件,改改就行了),在xml文件夹下创建seekbar_thum_normal.xml文件:


<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle" ><gradientandroid:angle="270"android:endColor="#ff585858"android:startColor="#ffffffff" /><sizeandroid:height="15dp"android:width="15dp" /><stroke  android:width="5dp"  android:color="#00000000" /><corners  android:radius="8dp" /><solid android:color="#dcdcdc"/>
</shape>

按压状态下滑块的配置文件seekbar_thum_pressed.xml:


<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle" ><gradientandroid:angle="270"android:endColor="#ff585858"android:startColor="#ffffffff" /><sizeandroid:height="15dp"android:width="15dp" /><corners  android:radius="8dp" /><solid android:color="#dcdcdc"/>
</shape>


仔细看会发现这两个文件主要的区别就是上一个文件多了一个stroke属性,它表示在滑块的外围进行描边,我们将背景设置为透明效果,这样处理的效果是使滑块的大小一致,不至于在滑动的过程中出现进度条上下跳动的问题

接下来就是我们滑块的状态选择器的布局thum_selector.xml了

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:state_window_focused="true" android:drawable="@xml/seekbar_thum_pressed" /> <item android:state_focused="true" android:state_window_focused="true" android:drawable="@xml/seekbar_thum_pressed" /> <item android:state_selected="true" android:state_window_focused="true" android:drawable="@xml/seekbar_thum_pressed" /> <item android:drawable="@xml/seekbar_thum_normal" /></selector>

最后贴一下seekbar的布局文件,说明一下可以通过调节 android:thumbOffset属性,让进度条的进度在滑块的中心点

<SeekBarandroid:id="@+id/seekBar1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:progressDrawable="@xml/seekbar_progress"android:thumb="@drawable/thum_selector"android:thumbOffset="10dp"android:minHeight="5dp"android:maxHeight="5dp"></SeekBar>

到此,我们模仿的效果就结束了,Demo的下载链接:https://github.com/hiyounglee/SamsungDemo  看一下三星手机的效果图




这篇关于Android模仿三星手机系统滑动条滑动时滑块变大的特效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Prometheus+cpolar如何在手机上也能监控服务器状态?

《Prometheus+cpolar如何在手机上也能监控服务器状态?》本文强调了通过Cpolar这一内网穿透工具,轻松突破Prometheus仅限于局域网访问的限制,实现外网随时随地访问监控数据,教你... 目录前言1.安装prometheus2.安装cpolar实现随时随地开发3.配置公网地址4.保留固定

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom