Android中的自定义按钮背景和shap形状资源的应用

按钮按下和平常两个状态的背景图片是不一样的,这样才会有按下的效果,更换这两个图片的原理很简单。

1.在res目录下创建drawable目录

2.在这个目录下创建button的xml,写select选择器

<?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/button_pressed" /> <!-- pressed -->
          
    <item android:state_focused="true"
          android:drawable="@drawable/button_pressed" /> <!-- focused -->
          
  
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

其中,有pressed,focused等状态,对应不同的图片,这个配置文件就是一个选择器的作用

3.在布局文件中通过android:background来调用这个button这个配置文件

 android:background="@drawable/button"


让我长知识的还有这次联系中,知道了textView也是可以当成按钮来使用的

1.把textView的clickable设置成true,这样,这个按钮就能剑姬了,并且写上被点击的时候的方法,但是这样点击是看不出来被点击的

<TextView
	android:background="@drawable/shape_selector"
        android:clickable="true"
        android:onClick="reEnterSetup"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dip"
        android:layout_marginTop="8dip"
        android:text="重新进入设置向导"
        android:textColor="#000000"
        android:textSize="20sp" />

2.写shap形状配置文件,同样放到drawable目录下

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <corners android:radius="5dip" />
    <!--
    渐变 
    <gradient android:startColor="#ff0000"  android:endColor="#00ffff"/>
    -->


    <!-- 固定色 -->
    <solid android:color="#ffffff" />

   <!--  <stroke
        android:dashWidth="3dip"
        android:width="2dip"
        android:color="#000000"
        android:dashGap="15dip" /> -->

</shape>

shap是指什么图形,radius是边角弧度,gradient是渐变色,solid是固定色,这里选择固定色。

写两个这样的文件,我命名为gradient_box_normal gradient_box_pressed,再写一个select选择器进行选择,然后在组建立设置这个选择器当背景。


综上,个人感觉选择器是做配置来实现背景改变,只不过Textview是通过两个shap配置,而不是图片。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值