您的位置:首页 > 其它

selector实现按钮点击效果

2017-08-31 10:50 507 查看
    按钮点击效果在Android中经常用到,通常使用selector来实现,今天整理一下项目中用到的按钮点击效果,分享按钮以及GridView的点击效果。点击效果见"QQ"、"卫视",包括图片、文字变化效果。





"QQ"的背景是selector,包含state_pressed="false"、state_pressed="true"两种状态,每种状态都是一个layer-list,如下:

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

layer_list_share_item_qq_normal包含两层,下层是一个白色、圆形的shape,上层是qq图片,上层边界距离下层边界有8dp的距离,如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/shape_share_item_normal"
android:gravity="center"></item>
<item
android:bottom="8dp"
android:drawable="@drawable/share_qq"
android:gravity="center"
android:left="8dp"
android:right="8dp"
android:top="8dp"></item>
</layer-list>shape_share_item_normal如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- 内部颜色 -->
<solid android:color="#ffffff" />
<size
android:width="42dp"
android:height="42dp" />

</shape>

layer_list_share_item_qq_pressed同样包含两层,下层是qq图片,上层是黑色(有透明度)、圆形shape,下层边界距离上层边界有8dp的距离,如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="8dp"
android:drawable="@drawable/share_qq"
android:gravity="center"
android:left="8dp"
android:right="8dp"
android:top="8dp"></item>
<item
android:drawable="@drawable/shape_share_item_pressed"
android:gravity="center"></item>
</layer-list>

shape_share_item_pressed如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- 内部颜色 -->
<solid android:color="#55000000" />
<size
android:width="42dp"
android:height="42dp" />

</shape>ImageView使用selector:
<ImageView
android:id="@+id/share_qq_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/selector_share_item_qq" />

文字颜色变化也是使用selector,注意selector文件要放在res/color目录下
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#4E4E4E" android:state_pressed="false"></item>
<item android:color="#55000000" android:state_pressed="true"></item>
</selector>
<TextView
android:id="@+id/share_qq_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="@string/share_qq"
android:textColor="@color/share_item_txt"
android:textSize="12sp" />


上面即是分享按钮点击效果的实现过程,GridView Item的点击效果道理相同:未点击时,显示图片;点击时,显示一个layer-list,layer-list下层是图片、上层是一个黑色(有透明度)、方形(有圆角)shape,shape正好把图片盖住,代码如下。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/live_logo_weishi" android:state_pressed="false"></item>
<item android:drawable="@drawable/layer_list_live_weishi_pressed" android:state_pressed="true"></item>
</selector>

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/live_logo_weishi"></item>
<item android:drawable="@drawable/shape_live_logo_pressed"></item>
</layer-list>


代码地址:https://github.com/xiyy/TopNews,欢迎大家关注!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐