【android基础知识】【android_shape学习】

该博客项目来源及参考文档:http://blog.csdn.net/bear_huangzhen/article/details/24488337

首先看一下结果:

MainActivity.java

package com.example.shapedemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

 

那么首先来看activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button"
        android:text="TestShapeButtondfasfafasdfas" />

</RelativeLayout>

Button试用了selector button.xml

button.xml文件如下:

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

    <item android:drawable="@drawable/button_pressed_bg" android:state_pressed="true"></item>
    <item android:drawable="@drawable/button_bg"></item>

</selector>

两种状态为 button_pressed_bg.xml和button_bg.xml文件。

button_pressed_bg.xml文件中试用了shape,如下:

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

    <!-- 渐变 -->
    <gradient
        android:endColor="#FFFFFF"
        android:gradientRadius="50"
        android:startColor="#ff8c00"
        android:type="radial" />
    
    <!-- 描边 -->
    <stroke
        android:dashGap="3dp"
        android:dashWidth="5dp"
        android:width="2dp"
        android:color="#dcdcdc" />
    
    <!-- 圆角 -->
    <corners android:radius="5dp" />
    
    <!-- 间隔  -->
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />

</shape>

button_bg.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <!-- 填充 -->
    <solid android:color="#ff9d77" /> <!-- 定义填充的颜色值 -->
    
    <!-- 描边 -->
    <stroke
        android:width="2dp"    
        android:color="#fad3cf" /> <!-- 定义描边的宽度和描边的颜色值 -->
    
    <!-- 圆角 -->
    <corners
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp" /> <!-- 设置四个角的半径 -->
    
      <!-- 间隔 -->
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" /> <!-- 设置各个方向的间隔 -->

</shape>

 

 

例子看完了来看一下shape的属性:

"

在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,首先我们了解一下Shape下面有哪些标签,都代表什么意思:

solid:填充
android:color指定填充的颜色

 

gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,

android:angle是渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,

可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。

angle值对应的位置如图:

 

 

stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp" 
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离

 

corners:圆角
android:radius为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,

同时设置五个属性,则Radius属性无效

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

android:topLeftRadius="20dp"              设置左上角的半径 
android:topRightRadius="20dp"           设置右上角的半径 
android:bottomLeftRadius="20dp"      设置右下角的半径 
android:bottomRightRadius="20dp"    设置左下角的半径

 

padding:间隔
可以设置上下左右四个方向的间隔

"

 

这里需要说明的是:间隔是指内部填充内容到四周的间隔。

posted @ 2014-12-24 14:47  比企谷雪乃  阅读(148)  评论(0编辑  收藏  举报