Android利用selector(选择器)实现图片动态点击效果

举报
计蒙不吃鱼 发表于 2025/05/27 19:14:35 2025/05/27
【摘要】 Android中如果是给图片设置点击事件,为了用户的体验有必要添加动态点击效果

前景与背景

知识点是来自于ImageView中XML的两个属性:src与background
src(前景):存放的是原图的大小,不会进行拉伸,图片是多大就显示多大(scaleType只对src起作用)
background(背景): 能根据ImageView组件中设置的长宽进行拉伸

Demo例子如下:

效果图

代码如下

其中前景图片与背景图片分别为
前景:(scaleType只对src起作用,android:scaleType="center"效果为:在视图中心显示图片,且不缩放图片)

背景:

进入主题

在Android中如果是给图片设置点击事件,为了用户的体验有必要添加动态点击效果

效果图如下:

主要代码如下

实现:

第一步:

在控件中设置背景为selector_setting:(记得加clickable标签----->设置是否可以点击)

第二步:创建selector_setting.xml文件:

第三步,找两张不同的图片(博主是用shape实现的):如下:

setting_press.xml

实现的效果:

setting_normal.xml

实现的效果:

源码如下:

selector_setting.xml:

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

setting_press.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!--shape:图片形状 oval:椭圆-->
<!--尺寸大小-->
<size android:width="32dp"
    android:height="32dp"/>
<!--弧度-->
<corners android:radius="10dp"/>
<!--填充色-->
<solid android:color="#99ffffff"/>
<!--渐变色-->
<solid android:color="#99ffffff"/>
</shape>

setting_normal.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!--shape:图片形状 oval:椭圆-->
<!--尺寸大小-->
<size android:width="32dp"
    android:height="32dp"/>
<!--弧度-->
<corners android:radius="10dp"/>
<!--填充色-->
<solid android:color="#99ffffff"/>
<!--渐变色-->
<gradient android:startColor="#ff0000"
    android:centerColor="#00ff00"
    android:endColor="#0000ff"
    android:angle="-90"/>
</shape>
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。