android selector设置button点击效果(详细)以及常见问题

button的点击效果学习起来事实上比较容易,此点对开发者来说也是使用的比较频繁的一个知识点,与它相关的还有编辑框的获取焦点时改变背景颜色、选择button选择时改变字体颜色等等。这些其实都是用到的drawable的seletor。

当然drawable中还有很多其他效果可以实现,具体的可以参考笔者的另一篇博客:

android修改控件外观(使用drawable资源)

效果:(不点击时显示白色,点击时显示灰色)

实现这个效果其实很简单,在drawable中创建一个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="@android:color/darker_gray"/>
    <item android:drawable="@android:color/white"/>

</selector>

然后直接在button的background中设置这个xml文件即可,代码如下:

activity_main:

<?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"
    android:fitsSystemWindows="true"
>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="button测试"
        android:background="@drawable/simple_button_style"
        />
</LinearLayout>

常见问题:

在selector中设置了点击效果和初始状态效果时,点击却没有反应,错误效果以及代码如下:

读者可以发现,与正确的代码相比,后者只是改变了两行代码的顺序。

这里就涉及到seletor选择图片的机制了。一旦选择到了合适的图片,那么就不会进行之后的判断了。

拿正确的代码举例来说,首先是判断button是否有被点击,如果没有,就不显示灰色,往下继续选择,然后就到了第二行,第二行提供的背景为白色,即显示白色。

在错误的代码中,第一行没有条件,即直接选择白色,跳出选择,就不会进行之后是否有被点击的判断,所以点击效果不会显示。

如笔者有的不清楚的地方,欢迎读者私信或者评论。对drawable有兴趣的读者可以参考笔者的另一篇博客:android修改控件外观(使用drawable资源)

时间: 2024-08-05 06:59:40

android selector设置button点击效果(详细)以及常见问题的相关文章

Android 纯代码添加点击效果

项目中很多的Button, 同时配置很多按钮切图,Selector是不是很烦, 使用下面这个类,就可以直接为Button增加点击效果. 不用多个图片,不用Selector. 用法:Button.setOnTouchListener(Effect_Click.getInstance()); 效果图:    源码: class Effect_Click implements OnTouchListener { private static Effect_Click Effect_Click; pub

android 按钮背景 圆角+点击效果

今天做了个按钮,不想麻烦美工做图片,又不喜欢方角的图片,就用xml做了圆角的图片,做好之后发现,点击的时候看不出点击效果了,xml可以定义点击效果, 就想怎么能两个一起实现,网上找了下大致看了一遍都不是我想要的,就慢慢的试了试,结果两者一结合就OK了. 1 <Button 2 android:id="@+id/repeat" 3 android:layout_width="fill_parent" 4 android:layout_height="w

Android GridView中Button点击事件onItemClick不能响应

今天在捣鼓一个类似于百度贴吧的东西.布局:上面是个ActionBar标题栏,然后是一个GridView布局,在Java代码中动态加载关注的贴吧,一切就绪中,很愉快的弄好了! 现在需要点击选项进入某个贴吧,那么问题来了—— GridView中Button点击事件onItemClick不能响应. 所以,主要的猫腻还是在com.android.internal.R.attr.buttonStyle这个里面,查看这个xml文件,Button设置多了两个属性如下:<item name="androi

Android仿Win8界面的button点击

今天没事的时候,感觉Win8的扁平化的button还是挺好看的,就研究了下怎样在安卓界面实现Win8的扁平化button点击效果. 发现了一个自己定义的View能够实现扁平化button效果,话不多说,我们直接上代码. 1.首先要自己定义自己的View.创建一个自己定义的MyImageView类继承ImageView,并实现点击效果的设定. public class MyImageView extends ImageView { private boolean onAnimation = tru

Android--Button点击效果

Button点击效果 状态选择器:select 首先会设置一张默认的图面,点击,会换一张图片. 1.把两张图片拷贝到drawable里面 2.右键drawable文件夹,如图: 点击就会自动生成状态选择器.

【Android UI】案例04配置控件点击效果(selector)

本例采用XML(selector),配置控件点击效果的实现,即当控件被触发或点击获取到焦点时,出现样式上的改变,以便给以较好的用户体验与操作感.本例需要引入的核心知识点的selector.xml.请参考学习:http://blog.csdn.net/mahoking/article/details/23690857.本例用于演示点击效果的控件为TextView.Button. [转载使用,请注明出处:http://blog.csdn.net/mahoking] 首先需要配置selector.xm

android求助:关于播放器中的“播放/暂停”键: 用ImageButton来设置点击效果时的问题

============问题描述============ 大家好,我最近遇到个问题: 大家都知道,播放器中的播放/暂停键是这样的逻辑:当用户点击了这个键,如果当前显示的是"播放"图案,会变为"暂停"图案:反之,如果当前是"暂停"图案,会变为"播放"图案 , 如此反复... 现在我正在实现这个效果,我是这样做的: 在以上的基本效果的基础上,我还添加了点击过程中的效果,就是当点下还木有松开时,会有一个点击效果(比如给当前图片加个光

王立平--Button背景,点击效果设置

1.新建....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/ic_launcher

实现类知乎android客户端关注和取消关注的按钮点击效果

先说明一下,项目代码已上传至github,不想看长篇大论的也可以先去下代码,对照代码,哪里不懂点哪里. 代码在这https://github.com/zgzczzw/ZHFollowButton 前几天发现知乎关注的点击效果确实赞,查了一下实现方式,刚好看到这个问题,花了一天时间终于把这个效果实现了,现在来回答一下,很不幸,楼上各位的答案都不全对,且听我一一道来. 首先,我先详细观察了一些知乎的效果,其中有一个很神奇的地方,如图: 注意看第二张图,这个圆形在扩散的时候,圆形底下的字还在,而且新的