Android学习笔记——TextView点击效果

前言

本类文章是我在学习过程中所遇到已经解决过的问题(Q.Q),把这些自己已经解决过问题发出来,如果有新手遇到和我类似的问题以便能快速解决,节省自己的时间。因为本人还是菜鸟,如有错误希望指正。

Android 中 Selector 的用法

Selector 用法例子说明

在做项目的过程中有遇到过这样一个问题:在点击一个 TextView 或者 Button 之类的控件时,需要给出点击的效果。比如在一个 Textview 在点击前文本文字是白色的,在手指按下时颜色发生改变(比如颜色变浅),之后当手指松开时文本的颜色恢复原来的颜色,这里的效果图用的是亮色(蓝色和绿色)想用其他颜色直接替换即可,效果图如下:
首先是手指没有点下去的时候:


手指没有点下去.png

之后便是手指点下去的时候:


手指点下去了保持不动.png

最后就是手指离开屏幕:
手指离开屏幕.png

也上的效果能够给客户比较好的点击反馈,提高体验。

如何使用 Selector

以 selector_text_color.xml 为例
首先在 res 目录下新建 drawable 文件夹,再在新建的 drawable 文件夹中新建selector_text_color.xml ,其目录结构为:res/drawable/selector_text_color.xml 。
这样就把 selector 给建立好了,后面要根据具体的需求要编写里面的内容。

Selector 常用的属性

android:state_pressed 如果是 true,当被点击时显示该图片,如果是 false 没被按下时显示默认。
android:state_focused 如果是 true,获得焦点时显示;如果是 false 没获得焦点显示默认。                  
android:state_selected 如果是 true,当被选择时显示该图片;是 false 未被选择时显示该图片。                  
android:state_checkable 如果值为 true,当 CheckBox 能使用时显示该图片;false,当 CheckBox 不能使用时显示该片。                  
android:state_checked 如果值为 true,当 CheckBox 选中时显示该图片;false,当 CheckBox 为选中时显示该图片。                  
android:state_enabled 如果值为 true,当该组件能使用时显示该图片;false,当该组件不能使用时显示该图片。                   
android:state_window_focused 如果值为 true,当此 activity 获得焦点在最前面时显示该图片; false,当没在最前面时显示该图片。

Selector 用法的实例

首先在 res/values/colors.xml 下把颜色的代码写进去(引用代码而不是直接写入颜色的代码,要不然会报错) 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="textBlue">#2196F3</color>
<color name="textGreen">#86cd3e</color>
</resources>

上面三个是系统自带的,下面三个是我自己写入的。 之后便是在 drawable 中创建 XML 文件了,因为这里只是演示,主要还是根据个人的需求来写,这里是当被点击时显示该文字颜色发生改变。创建好的文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
 <item android:state_pressed="false" android:color="@color/textBlue"/>
 <item android:state_pressed="true" android:color="@color/textGreen"/>
</selector>

之后便是在布局文件中写入设置好的属性,如果是用的是 TextView 只要在 Texview 属性里面把 android:textColor="XXXXXXX" 里面的改成你原先写好 drawable 下文件的名字就好,如果是 Button 则修改android:background="XXXXXX" ,这里用的是Textview 则属性应该为 android:textColor="@drawable/selector_text_color"。下面贴上布局文件的代码(这个比较简单,实际还是根据个人需求来做)。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/activity_main"     
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
 <TextView android:id="@+id/text"   
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content"                 
 android:text="我是可以变色的噢"     
 android:layout_centerInParent="true"      
 android:textColor="@drawable/selector_text_color"/>
</RelativeLayout>

最后只要在 Activity 中初始化 Textview 和添加点击事件就行了,代码如下:

package com.example.xiaozhang.myapplication;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
  private TextView mTextView;  
@Override 
 protected void onCreate(Bundle savedInstanceState) {    
super.onCreate(savedInstanceState);   
setContentView(R.layout.activity_main); 
mTextView = (TextView) findViewById(R.id.text);    
mTextView.setOnClickListener(new View.OnClickListener() { 
     @Override public void onClick(View view) {
      } 
   }); 
 }
}

总结

利用这种方法就可以给客户提供良好的体验效果,让客户知道了已经点击了该按钮,也不需要在代码中设置多次点击切换的图片,减少代码量,也减少美工妹子的制作图片的工作。菜鸟写作,如有错误望指正。

参考内容

Android中的Selector的用法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,183评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,850评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,766评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,854评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,871评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,457评论 1 311
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,999评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,914评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,465评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,543评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,675评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,354评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,029评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,514评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,616评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,091评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,685评论 2 360

推荐阅读更多精彩内容