android中如何为设置了背景图的按钮自定义动画

本文介绍了在Android开发中如何为设置了背景图的按钮(Button或ImageButton)自定义按下动画,包括去除ImageButton默认灰色边框的方法,以及通过创建selector XML文件实现按钮按下和松开时的不同状态效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在android开发中一般有两种方式创建带图片的按钮(Button),创建普通Button并通过android:background设置需要的背景图;或者直接创建ImageButton通过android:src设置资源图片。这两种方式略有不同,ImageButton从继承关系上来看继承于ImageView,而Button继承于TextView。笔者仅从自己的经验出发总结了以下几点,欢迎网友补充指正。

    1、Button是没有src属性的,而ImageButton既有src属性又有background属性。但需要注意的是,安卓开发中,纵然某组件没有某一属性,在xml中添加了这一属性之后也不会报错,只是没有任何效果而已。

    2、ImageButton创建并指定了资源图片后,默认会带有灰色边框,非常影响美观,这时候就可以通过设置background属性为透明色去除边框。

    通过android:background="#0000"设置背景色为透明

    

    3、ImageButton不支持android:text属性

    4、在TableLayout中,通过设置背景图片android:background实现的效果往往图片会变形。

    但当把ImageButton背景设置为透明或者设置Button的背景为某资源图片时候,会发现点击按钮的动画效果都消失了,如何解决这一问题是本博客接下来要讨论的!方法其实

很简单。

     

    如上图,我们通过photoshop工具打开按钮图片,使用曲线工具将按钮颜色调深一些作为按下按钮时的效果保存为png格式命名为pressed(使用ps或者其他工具都可以,只要达到效果即可)

    之后在drawable下创建一个selector的xml文件myselector

    <!--指定松开时的图片-->

    <item android:state_pressed="false"  android:drawable="@drawable/unpressed"/>

    <!--指定按下时的图片-->

    <item android:state_pressed="true"  android:drawable="@drawable/pressed"/>

    接下来只需要将ImageButton的src指定为"@drawable/myselector"或者将Button的background指定为"@drawable/myselector"就可以实现我们自定义的动画效果了!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值