我们在开发网站时,会发现当我们添加<a/>标签后,标签有一个点击效果,比如颜色变化,这样开看起来用户体验会很棒,那么在我们的Android开发中如何加入这样的效果呢?本篇就为大家揭开它的神秘面纱。

  既然是点击事件的变化,我们就要监控用户是否点击,这里我有两种实现方式:1、通过改变背景图片达到上述效果;2、通过改变背景颜色来达到上述效果。

  两者各有千秋,比如当我们设计按钮(Button)的点击事件时,建议使用第一种;而当我们设计诸如Item时,建议使用第二种。好了下面开始为大家进行代码分析:

  首先为大家介绍第一种:通过改变背景图片来达到上述效果,既然是通过改变背景图片,所以我们需要事先准备好2张图片,一张作为未点击时,一张作为点击时。

  然后我们需要在res下新建一个drawable文件夹,在里面新建一个btn_bg.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 点击时 -->
<item android:drawable="@drawable/img_1" android:state_pressed="true"/>
<!-- 未点击时 -->
<item android:drawable="@drawable/img_2" android:state_pressed="false"/> </selector>

  我们的布局文件(main_activity.xml):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" > <Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn_bg"
android:text="点击变化"
/> </RelativeLayout>

  特别注意红色标注处。好了我们的第一个效果就实现了,大家感觉如何。下面我们来一起学习一下第二种方法:

  第二种方法无需准备图片,我们通过改变背景的颜色来达到上述效果,既然这里需要使用到颜色,先为大家分享一下16进制的颜色对照表:

  有了颜色对照表,我们就开始进行代码解析吧:

  第一步在value文件夹下新建一个col.xml文件,把我么可能使用到的颜色添加进去:

<?xml version="1.0" encoding="utf-8"?>
<resources> <drawable name="write">#fff</drawable> <drawable name="gray">#aaa</drawable> </resources>

  第二步修改res下drawable文件夹下的btn_bg.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 点击时 -->
<item android:drawable="@drawable/gray" android:state_pressed="true"/>
<!-- 未点击时 -->
<item android:drawable="@drawable/write" android:state_pressed="false"/> </selector>

  最后一步我们Item标签设置:

<RelativeLayout
android:id="@+id/relative1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn_bg">
<ImageView
android:id="@+id/img1"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/img_1"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:layout_centerVertical="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:textColor="#fff"
android:text="第一个item"
android:layout_toRightOf="@id/img1"
android:layout_centerVertical="true"
/>
</RelativeLayout>

  这样我们Item也添加上了点击事件变化,最后总结一下这两种方法,第一种方法我们需要事先准备材料,而第二种方法,相对来说就灵活许多,我们可以随心所欲的进行修改,非常的方便。

Android点击效果的更多相关文章

  1. 让低版本的 Android 项目显示出 Material 风格的点击效果

    每天都被不同的需求纠缠的生活是幸福而又不幸的,这不我们家亲爱的设计师们又让我们在低版本的 Android 平台上实现一下类似于 Material Design 的点击效果. 虽然大家都知道 Mater ...

  2. android 按钮点击效果实现

    在其他人的博客里看到其实实现按钮点击效果的方法有很多,这里提到的只是其中一个办法 图片素材(我自己用截图截的,可以自己搞) 放到mipmap目录下(studio是在这个目录下 , eclipse 直接 ...

  3. Android之Button自定义点击效果

    我们在界面上经常会用到button按钮,但通常button点击后看不到点击的效果,如果用户连续点击了两次,就会报NAR错误,这样交互性就比较差了.如果我们自定义了button点击效果,比如我们点击了b ...

  4. Android给控件添加默认点击效果

    Android控件点击效果 Android中Button控件是有点击效果的,但是像TextView.ImageView.各种Layout是没有点击效果的,给TextView设置点击事件后,加个点击效果 ...

  5. Android ImageView点击效果

    ImageView设置点击效果需要注意两点,第一个设置android:clickable="true",第二个 <item android:drawable="@d ...

  6. Android设置常见控件点击效果

    一. Imageview的点击效果——图片稍微变暗突出点击效果 public class ClickImageView extends AppCompatImageView { public Clic ...

  7. Android之水波纹点击效果(RippleView)

    Android5.0后各种炫的效果纷纷出来,写这篇博客主要是讲的是按钮点击效果带有的水波纹(波浪式). 当然我写的这个是自定义来实现的,在低版本(5.0一下)也可以实现点击效果.看看效果图: 上图可看 ...

  8. Android点击Button水波纹效果

    先上图,看看接下来我要向大家介绍的是个什么东西,例如以下图: 接下来要介绍的就是怎样实现上述图中的波纹效果.这样的效果假设大家没有体验过的话,能够看看百度手机卫士或者360手机卫士,里面的按钮点击效果 ...

  9. android selector设置button点击效果(具体)以及常见问题

    button的点击效果学习起来其实比較easy,此点对开发人员来说也是使用的比較频繁的一个知识点,与它相关的还有编辑框的获取焦点时改变背景颜色.选择button选择时改变字体颜色等等.这些其实都是用到 ...

随机推荐

  1. IOS中CoreData浅析

    CoreData简介: 什么是CoreData? Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中, ...

  2. dataview将excel表格的数据导出成txt文件

    有时候需要处理大量的数据,且这些数据又存在于excel表格内,在平时的时候,我是非常喜欢这样的数据的,因为只要是excel表格内的数据,处理起来的方法就很方便.也可能我平时遇见的数据总是以一种杂乱无章 ...

  3. JavaScript 基础第十天

    学习总结 1定时器 ①.setTimeout() // 间隔多长时间执行一次(会返回一个数字型的标识) ②.setInterval() // 间隔多长时间执行,是不断地执行. ③.clearTimeo ...

  4. 用php创建mysql数据库

    接触php就等于向后台更近了一步,之前一直在做前端,不过也在学php,但一直没敢写博客,现在终于有勇气迈向了这一步,还请各位博友多多担待. 服务器是后台开发的必备工具,但对于一般初学者来说是没有自己的 ...

  5. [leetcode 25]Reverse Nodes in k-Group

    1 题目: Given a linked list, reverse the nodes of a linked list k at a time and return its modified li ...

  6. ubuntu共享文件配置

    目标:实现windows和linux混合组成的操作 系统中可以共享文件,并可以通过机器名互相访问 安装文件共享服务 0.更改本机主机名,修改 /etc/hostname文件和/etc/hosts文件中 ...

  7. 错误 "sgen.exe" exited with code 1.解决方法(转)

    原文出自 http://blog.sina.com.cn/s/blog_8411d3f401015u1w.html VS中有时候编译项目会出现这样的错误: 错误   "sgen.exe&qu ...

  8. Java语法糖4:内部类

    内部类 最后一个语法糖,讲讲内部类,内部类指的就是在一个类的内部再定义一个类. 内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功 ...

  9. Silverlight中文本框添加回车事件后,换行无法清除的解决方法

    在开发Silverlight的项目中,为了更好的用户体验,我们常要给一些控件添加一些快捷键.然而,在Silverlight中当用户回车提交后,光标停留在文本框的第二行怎么也清除不掉,经过一段时间研究, ...

  10. channel vs mutex

    记录许总演讲PPT指出的实践: channel– 本质上是一个 MessageQueue– 非常正统的执行体间通讯设施• sync.Mutex/RWMutex/Cond/etc– 不要把 channe ...