Android app开发学习笔记——通过xml文件修饰View

一、shapes(设置圆角、边框、填充色、渐变色)

1.总体功能

shapes用来控制控件的几何形状,又六个子标签

  • corners: 圆角
  • solid: 填充颜色
  • stroke: 描边
  • padding: 内边距
  • size: 宽高
  • gradien: 渐变
    在res/drawable目录下新建一个文件tv_shape.xml:
    例如
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!--圆角-->
    <corners android:radius="10dp"/>
    <!--宽高-->
    <size
        android:width="100dp"
        android:height="100dp"/>
    <!--填充颜色-->
    <solid android:color="@color/浅蓝"/>
    <!--描边-->
    <stroke
        android:width="2dp"
        android:color="@color/black"/>
    <!--内边距-->
    <padding android:top="10dp" android:bottom="10dp"
        android:left="10dp" android:right="10dp"/>
</shape>

然后在布局文件为TextView设置background,引用我们写的shape即可android:background="@drawable/tv_shape"

有时会出现右侧的预览无法显示,解决参考:
android studio 出现: Design editor is unavailable until a successful build 问题的处理

下面详细介绍每个子标签的用法

2.corners(圆角)

    <corners    //定义圆角   
    android:radius="dimension"      //统一定义四个圆角的半径   
    android:topLeftRadius="dimension"   //左上角的圆角半径   
    android:topRightRadius="dimension"  //右上角的圆角半径   
    android:bottomLeftRadius="dimension"    //左下角的圆角半径   
    android:bottomRightRadius="dimension" />    //右下角的圆角半径

若radius与其他四个同时使用,以写在后面的为标准执行

3.solid(填充颜色)

这个标签只有一个color标签,填入自己建立的颜色就行了

    <solid android:color="@color/浅蓝"/>

4.stroke(描边)

stroke标签内可以定义描边的宽度,颜色,虚实线等

    <stroke        
    android:width="dimension"   //描边的宽度   
    android:color="color"   //描边的颜色   
    // 以下两个属性设置虚线   
    android:dashWidth="dimension"   //虚线的宽度,值为0时是实线   
    android:dashGap="dimension" />      //虚线的间隔  

可以形象的理解为下图
在这里插入图片描述

5.size(宽高)

size就两个属性,设置宽度和高度

    <size
        android:width="100dp"
        android:height="100dp"/>

6.padding(内边距)

padding有四个属性,分别设置上下左右四个内边距

    <padding
        android:top="10dp" android:bottom="10dp"
        android:left="10dp" android:right="10dp"/>

7.gradient(渐变)

首先注意渐变和填充色不能同时使用

android:startColor 和 android:endColor 分别为起始和结束颜色,
android:angle 是变角度,必须为45的整数倍,仅对线性渐变有效,
另外,渐变默认的模式为 android:type=“linear”’ ,即线性渐变。
可以指定渐变为径向渐变,android:type=“radial”, 径向渐变需要指定半径
android:gradientRadius=“50”.
它还具有如下属性:

    <gradient  
    android:type=["linear" | "radial" | "sweep"]    //共有3中渐变类型,线性渐变(默认)/放射渐变/扫描式渐变   
    android:angle="integer"     //渐变角度,必须为45的倍数,0为从左到右,90为从上到下   
    android:centerX="float"     //渐变中心X的相当位置,范围为0~1   
    android:centerY="float"     //渐变中心Y的相当位置,范围为0~1   
    android:startColor="color"   //渐变开始点的颜色   
    android:centerColor="color"  //渐变中间点的颜色,在开始与结束点之间   
    android:endColor="color"    //渐变结束点的颜色   
    android:gradientRadius="float"  //渐变的半径,只有当渐变类型为radial时才能使用   
    android:useLevel=["true" | "false"] />  //使用LevelListDrawable时就要设置为true。设为false时才有渐变效果   

useLevel属性通常不使用。该属性用于指定是否将该shape当成一个LevelListDrawable来使用,默认值为false,可以参考:android levellistdrawable 基本使用

8.shape自身的属性

shape除了可以设置成上述默认情况下的矩形还可以设置成椭圆,线型,环形。
其中

  • rectangle的属性:
    首先,ractangle是默认值
    其没有额外的属性
  • oval的属性:
    其表示控件大小的矩形所对应的椭圆
  • line
    其表示线型
  • ring的属性:
    相对默认属性还增加了
    innerRadius 内环的半径
    innerRadiusRatio 浮点,以环的宽度比率来表示内环的半径
    thickness 环的厚度
    thicknessRatio 以环的宽度比率来表示环的厚度

部分内容参考自:Android中的shape属性详解

二、selector(设置点击选中效果)

1.android:state_pressed属性

在drawable目录下新建一个selector_test.xml文件

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <!--按住时背景颜色-->
    <item android:drawable="@color/浅蓝" android:state_pressed="true"/>
    <!--默认背景颜色-->
    <item android:drawable="@color/white"/>
</selector>

给按钮设置背景颜色为android:background="@drawable/selector_test"
注意:
1.带android:state_pressed="true"的子标签要写在,不带有这个属性的上面才会有效
2.想要给TextView添加如下效果应加上android:clickable="true"

2.android:state_checked属性

在drawable目录下新建一个selector_test2.xml文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--选中时的显示图片-->
    <item android:drawable="@color/浅蓝" android:state_checked="true"/>
    <!--未选中时的显示图片-->
    <item android:drawable="@color/white" android:state_checked="false"/>
</selector>

上述设置的背景不仅可以是颜色还可以是图片之类的东西
接着给Checkbox控件设置背景颜色为android:background="@drawable/selector_test2"

3.android state_selected

选中状态和未选中状态其实与android:state_checked类似。这个属性好处在于大部分控件都能使用,一般需要自己在代码中设置选中和未选中状态。
新建一个文件 selector_test3.xml,引用的图片与上一个属性图片一样。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--选中时的显示图片-->
    <item android:drawable="@mipmap/ic_launcher" android:state_selected="false"/>
    <!--未选中时的显示图片-->
    <item android:drawable="@color/white" android:state_selected="true"/>
</selector>

给ImageView 控件设置 android:background: android:background="@drawable/selector_test3"
在MainActivity 中设置ImageView点击事件,在点击事件设置选中状态。

@Override
public void onClick(View v) {
//获取状态,取反,设置取反后的状态
imageView.setSelected(!imageView.isSelected());
}

效果图和CheckBox的勾选效果一样,只不过用的控件以及selector的属性不一样,它的应用范围更广。

三、layer-list(把item按照顺序层叠显示)

使用layer-list可以将多个drawable按照顺序层叠显示在一起。最先定义的在最下方显示,后面的依次往上叠放

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

    <item android:width="300dp" android:height="300dp">
        <shape android:shape="oval" >
            <solid android:color="#0000ff"/>
        </shape>
    </item>

    <item android:bottom="25dp" android:top="25dp" android:left="25dp" android:right="25dp">
        <shape android:shape="oval" >
            <solid android:color="#00ff00"/>
        </shape>
    </item>

    <item android:bottom="50dp" android:top="50dp" android:left="50dp" android:right="50dp">
        <shape android:shape="oval" >
            <solid android:color="#ff0000" />
        </shape>
    </item>
</layer-list>

效果如图在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

for-nothing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值