Android 仿京东商城底部布局的选择效果(Selector 选择器的实现)

发布时间 - 2026-01-11 00:46:12    点击率:

京东商城的底部布局的选择效果看上去很复杂,其实很简单,这主要是要感谢 selector 选择器,本文将讲解仿照京东商城的底部布局的选择效果,如何实现 selector 选择器,在不同的状态下,给 view 设置不同的背景。
京东商城底部布局的选择效果如下。

View主要的几种状态

主要状态有8种,设置状态的代码以及相应的含义如下。

 android:state_pressed = "true/false" //true表示按下状态,false表示非按下状态。
 android:state_focused = "true/false" //true表示焦点聚集状态,false表示非焦点聚集状态。
 android:state_selected = "true/false" //true表示选中状态,false表示非选中状态。
 android:state_activated = "true/false" //true表示激活状态,false表示非激活状态。
 android:state_checkable = "true/false" //true表示可以勾选状态,false表示不可以勾选。
 android:state_checked = "true/false" //true表示被勾选状态,false表示未被勾选状态。
 android:state_enabled = "true/false" //true表示可用状态,fasle表示不可用状态。
 android:state_window_focused = "true/false" //true表示应用程序窗口获取焦点状态,false表示应用程序窗口非获取焦点状态。

 设置不同状态下的图标背景

首先准备好不同状态下的同一类型的图标分别两张,复制到 mipmap 文件下,然后在 drawable 文件下新建 Drawable resource file 文件,命名为 selector_icon_home.xml。

之后在 selector 下写入不同状态下的背景图,这里是首页模块的 Selector 设置的源代码。其他模块的 Selector 图标设置和首页模块一致。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- Non focused states -->
  <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@mipmap/icon_home" />
  <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@mipmap/icon_home_press" />
  <!-- Focused states -->
  <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@mipmap/icon_home_press" />
  <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@mipmap/icon_home_press" />
  <!-- Pressed -->
  <item android:state_selected="true" android:state_pressed="true" android:drawable="@mipmap/icon_home_press" />
  <item android:state_pressed="true" android:drawable="@mipmap/icon_home_press" />
 </selector>

 所有模块下的 Selector 图片文件都添加完成后,最后设置 ImageView 的背景为 R.drawable.selector_icon_home,代码如下。

 imageView.setBackgroundResource(R.drawable.selector_icon_home);

运行后得到效果图如下。

设置不同状态下的文字颜色

新建 color 文件,然后新建 Color resource file 文件,命名为 selector_tab_text.xml。

这里各个模块的选择效果下文本颜色变化是一样的,只需要在该文件中写入不同状态下的文字的颜色就可以了,其源代码如下。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- Selected -->
  <item android:state_selected="true" android:color="#eb4f38" />
  <!-- Active -->
  <item android:state_active="true" android:color="#eb4f38"/>
  <item android:state_selected="false" android:color="#a9b7b7" />
  <item android:state_active="false" android:color="#a9b7b7"/>
</selector>

然后在布局文件 layout 中设置 TextView 的文字颜色为 R.color. selector_tab_text 就大功到成了。

 android:textColor="@color/selector_tab_text

运行后得到效果图如下。

最终效果

selector 选择器在点击事件状态变化时基本上都会使用到,既开发方便,又交互效果好,已经是必不可少的,更多的用处和用法可以参考 Android developer 官方文档。

以上所述是小编给大家介绍的Android 仿京东商城底部布局的选择效果(Selector 选择器的实现),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# android  # 底部布局选择效果  # 底部布局  # Android仿Boss直聘文本日期混合滚轮选择器示例  # Android 实现IOS 滚轮选择控件的实例(源码下载)  # Android滚轮选择时间控件使用详解  # Android高仿IOS 滚轮选择控件  # 轻松实现可扩展自定义的Android滚轮时间选择控件  # Android实现底部图片选择Dialog  # Android 实现IOS选择拍照相册底部弹出的实例  # Android开发中实现IOS风格底部选择器(支持时间 日期 自定义)  # Android实现底部滚轮式选择弹跳框  # 状态下  # 勾选  # 京东  # 选择器  # 按下  # 首页  # 命名为  # 小编  # 源代码  # 应用程序  # 成了  # 在此  # 不可以  # 只需  # 要在  # 给大家  # 几种  # 会使  # 上都  # 两张 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: js实现获取鼠标当前的位置  Laravel如何实现一对一模型关联?(Eloquent示例)  如何将凡科建站内容保存为本地文件?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  Laravel如何使用Blade模板引擎?(完整语法和示例)  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  javascript中闭包概念与用法深入理解  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  html如何与html链接_实现多个HTML页面互相链接【互相】  Python结构化数据采集_字段抽取解析【教程】  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel如何记录自定义日志?(Log频道配置)  如何在阿里云购买域名并搭建网站?  Python面向对象测试方法_mock解析【教程】  香港服务器租用每月最低只需15元?  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  长沙企业网站制作哪家好,长沙水业集团官方网站?  简历没回改:利用AI润色让你的文字更专业  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  北京企业网站设计制作公司,北京铁路集团官方网站?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  如何续费美橙建站之星域名及服务?  浅析上传头像示例及其注意事项  高防服务器租用指南:配置选择与快速部署攻略  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  PHP 500报错的快速解决方法  如何做网站制作流程,*游戏网站怎么搭建?  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  Laravel中的Facade(门面)到底是什么原理  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  新三国志曹操传主线渭水交兵攻略  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  简单实现jsp分页  如何用虚拟主机快速搭建网站?详细步骤解析  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Java解压缩zip - 解压缩多个文件或文件夹实例  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何在万网开始建站?分步指南解析  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  如何基于PHP生成高效IDC网络公司建站源码?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  android nfc常用标签读取总结  *服务器网站为何频现安全漏洞?