Android自己定义矩形及selector、shape的使用

【声明】转载请注明出处。此文出自指尖飞落的博客:http://blog.csdn.net/huntersnail

——每天写一篇博客。每天做一点技术积累!

因为项目开发须要,曾经尽管用过selector、shape可是都没有好好去研究过,仅仅知道用。不知道它们的属性详细有哪些作用。

尽管网上一查就都知道了,感觉还是要自己去弄懂一下。

以下咱们一起去研究下:

一、xml布局文件

/測试Demo/res/layout/check_box.xml

<?

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:orientation="vertical" >

    <LinearLayout
        android:id="@+id/order_meth"
        style="@style/style_padding"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:background="@drawable/selector_mine"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="送达方式"
            android:textSize="18sp" />

        <RadioGroup
            android:id="@+id/type"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal" >

            <RadioButton
                android:id="@+id/rb_one"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/sku_rd"
                android:layout_marginLeft="20dp"
                android:gravity="center"
                android:checked="true"
                android:padding="10dp"
                android:text="一小时达" />

            <RadioButton
                android:id="@+id/rb_two"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/sku_rd"
                android:layout_marginLeft="10dp"
                android:gravity="center"
                android:padding="10dp"
                android:text="预定送达" />
        </RadioGroup>
    </LinearLayout>

</LinearLayout>

二、点击时背景颜色处理

1、style样式

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="sku_rd">
        <item name="android:textColor">@color/selector_text</item>
        <item name="android:background">@drawable/check_boxs</item>
        <item name="android:button">@null</item><!--去掉RadioButton的那个圆形-->
    </style>
</resources>

2、点击RadioButton边框背景颜色变换的关键xml

属性解读

“true”表示按下状态使用(比如button按下)。“false”表示非按下状态使用。

android:state_focused="true/false"

“true”表示聚焦状态使用(比如使用滚动球/D-pad聚焦Button);“false”表示非聚焦状态使用。

android:state_selected="true/false"

“true”表示选中状态使用(比如Tab打开);“false”表示非选中状态使用。

android:state_active="true/false"

“true”表示可勾选状态时使用;“false”表示非可勾选状态使用。

(仅仅对能切换可勾选—非可勾选的构件实用。)

android:state_checkable="true/false"

“true”表示勾选状态使用。“false”表示非勾选状态使用。

android:state_checked="true/false"

true”表示勾选状态使用;“false”表示非勾选状态使用。

android:state_enabled="true/false"

“true”表示可用状态使用(能接收触摸/点击事件)。“false”表示不可用状态使用。

android:state_window_focused="true/false"

“true”表示应用程序窗体有焦点时使用(应用程序在前台);“false”表示无焦点时使用(比如Notification栏拉下或对话框显示)。

/測试Demo/res/drawable/check_boxs.xml

<?

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

3、文字颜色的变化

/測试Demo/res/color/selector_text.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 文字选中时的背景-->
    <item android:state_focused="true" android:color="#DB251F"/>
    <!-- 文字单击时的背景 -->
    <item android:state_pressed="true" android:color="#DB251F"/>
    <item android:state_checked="true" android:color="#DB251F"/>
    <item android:state_selected="true" android:color="#DB251F"/>
    <!-- 文字默认的背景 -->
    <item android:color="#969696"/>
</selector>

三、以下是自己定义的两个矩形

属性解读

corners:圆角

android:radius为角的弧度,值越大角越圆。

我们还能够把四个角设定成不同的角度。同一时候设置五个属性。则Radius属性无效

android:Radius="20dp"                          设置四个角的半径

android:topLeftRadius="20dp"              设置左上角的半径

android:topRightRadius="20dp"           设置右上角的半径

android:bottomLeftRadius="20dp"       设置右下角的半径

android:bottomRightRadius="20dp"    设置左下角的半径

stroke:描边

android:width="2dp" 描边的宽度

android:color 描边的颜色。

我们还能够把描边弄成虚线的形式,设置方式为:

android:dashWidth="5dp"

android:dashGap="3dp"

当中android:dashWidth表示‘-‘这样一个横线的宽度,android:dashGap表示之间隔开的距离。

solid:填充

android:color指定填充的颜色

/測试Demo/res/drawable/shape_sku_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <stroke android:width="1dp" android:color="#C8C8C8"/>
    <corners android:radius="3dp"/>
    <solid android:color="@android:color/white"/>
</shape>

/測试Demo/res/drawable/shape_sku.xml

<?

xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <stroke android:width="1dp" android:color="#DB251F"/>
    <corners android:radius="3dp"/>
    <solid android:color="@android:color/white"/>
</shape>

四、效果图

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

五、源代码地址点击打开链接

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆转载请注明出处?指尖飞落的博客☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

时间: 2024-11-14 17:38:46

Android自己定义矩形及selector、shape的使用的相关文章

Android自定义矩形及selector、shape的使用

[声明]转载请注明出处,此文出自指尖飞落的博客:http://blog.csdn.net/huntersnail --每天写一篇博客,每天做一点技术积累! 由于项目开发需要,以前虽然用过selector.shape但是都没有好好去研究过,只知道用,不知道它们的属性具体有哪些作用.虽然网上一查就都知道了,感觉还是要自己去弄懂一下. 下面咱们一起去研究下: 一.xml布局文件 /测试Demo/res/layout/check_box.xml <?xml version="1.0" e

Android:自定义控件样式(Selector)

前言 在开发一个应用程序过程中不可避免的要去修改组件的样式,比如按钮.输入框等.现在就看下如何通过Seletor实现样式的自定义.先看下简单的效果对比 概要实现 首先写这个Selector XML文件,叫做button_selector,放到了drawable文件夹下,大概内容如下所示 1 <?xml version="1.0" encoding="utf-8"?> 2 <selector xmlns:android="http://sc

android 自己定义控件

Android自己定义View实现非常easy 继承View,重写构造函数.onDraw.(onMeasure)等函数. 假设自己定义的View须要有自己定义的属性.须要在values下建立attrs.xml. 在当中定义你的属性. 在使用到自己定义View的xml布局文件里须要增加xmlns:前缀="http://schemas.android.com/apk/res/你的应用所在的包路径". 在使用自己定义属性的时候.使用前缀:属性名,如my:textColor="#FF

【android基础知识】【selector】【自定义控件】

项目demo源码:http://download.csdn.net/detail/mcdullsin/8291231 虽然自己还是一个学的比较多的新人,但是真心希望所有博客都附上源码,像我这类人也能缩短学习路程. 效果: 好了,首先来看一下图片选择器selector. btn.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas

Android-----使用Button特效 selector+shape

当然除了使用drawable这样的图片外今天谈下自定义图形shape的方法,对于Button控件Android上支持以下几种属性shape.gradient.stroke.corners等. 我们就以目前系统的Button的selector为例说下: Java代码 <shape> <gradient android:startColor="#ff8c00" android:endColor="#FFFFFF" android:angle="

Android菜鸟成长记9 -- selector的用法

在项目开发的时候,由于系统给出的控件不够美观,因此开发时领导常常要我更改下界面,用美工给的图片取代系统图片.开始时,我只是给按钮等设置一下背景图片,这样做虽然美观了,但界面看起来却比较死板,比如用户点击了按钮后,按钮没一点反应.于是我就再给控件添加上onTouch监听事件,按下后改变背景颜色,松手后再恢复原来颜色.但后来发现了selector这个利器,真是喜出望外,不用再添加onTouch监听事件了,用起来也方便灵活.不得不说,多和其他开发人员交流技术经验等还是很有必要的,特别是像我这样独自负责

Android自己定义控件皮肤

Android自己定义控件皮肤 对于Android的自带控件,其外观仅仅能说中规中矩,而我们平时所示Android应用中,一个简单的button都做得十分美观.甚至于很多button在按下时的外观都有一定变化,用户体验十分好. 这当中,就涉及到了Android自己定义控件属性的操作方法,下面操作以实现自己定义button皮肤为例. 1. 我们要自己定义将要实现的外观状态.能够是图片或者是自己定义的xml,这是我们直接自己定义不同状态的颜色xml,在values文件夹下新建colors.xml,代

Android 自己定义ViewGroup 实战篇 -&amp;gt; 实现FlowLayout

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38352503 .本文出自[张鸿洋的博客] 1.概述 上一篇已经基本给大家介绍了怎样自己定义ViewGroup.假设你还不了解,请查看:Android 手把手教您自定ViewGroup ,本篇将使用上篇介绍的方法,给大家带来一个实例:实现FlowLayout,何为FlowLayout,假设对Java的Swing比較熟悉的话一定不会陌生.就是控件依据ViewGroup的宽,自己主动

Android 自己定义控件实现刮刮卡效果 真的就仅仅是刮刮卡么

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40162163 , 本文出自:[张鸿洋的博客] 非常久以前也过一个html5的刮刮卡效果~~上次看到有人写Android的刮刮卡效果~~于是乎产生了本篇博客~~此类样例也比較多了,大家能够百度看看~只是还是通过本样例,带大家发掘一下.里面隐含的知识~ 1.Xfermode以及PorterDuff 假设大家还记得,以前在博客:完美实现图片圆角和圆形 简介过圆角的实现原理也是基于这个