新思想

Button

Button

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.xiesir.example06button.MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="确定"
        android:textColor="@color/text_font_white"
        android:background="@drawable/bbuton_danger_rounded" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ok"
        android:background="@drawable/ovalbg"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ok"
        android:background="@drawable/shape_bcg" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ok" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ok"
        android:background="@drawable/buttonimg" />

    <Button
        android:id="@+id/btnClip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ok"
        android:background="@drawable/clipbg"
        android:onClick="click" />

    <!--<ImageView-->
        <!--android:id="@+id/demo_img"-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content" />-->
</LinearLayout>

buttonimg.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 触摸时并且当前窗口处于交互状态 -->
    <item android:state_pressed="true" android:state_window_focused="true" android:drawable= "@drawable/btnblue" />
    <!--  触摸时并且没有获得焦点状态 -->
    <item android:state_pressed="true" android:state_focused="false" android:drawable="@drawable/btngreen" />
    <!--选中时的图片背景-->
    <item android:state_selected="true" android:drawable="@drawable/btnyellow" />
    <!--获得焦点时的图片背景-->
    <item android:state_focused="true" android:drawable="@drawable/btnblue" />
    <!-- 窗口没有处于交互时的背景图片 -->
    <item android:drawable="@drawable/btnyellow" />
</selector>

bbuton_danger_rounded.xml:

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

    <item android:state_pressed="true">
        <shape>
            <solid android:color="@color/bbutton_danger_pressed" />
            <stroke android:width="1dp" android:color="@color/bbutton_danger_edge" />
            <corners android:radius="@dimen/bbuton_rounded_corner_radius"/>
        </shape>
    </item>


    <item android:state_enabled="false">
        <shape>
            <solid android:color="@color/bbutton_danger_disabled" />
            <stroke android:width="1dp" android:color="@color/bbutton_danger_disabled_edge" />
            <corners android:radius="@dimen/bbuton_rounded_corner_radius"/>
        </shape>
    </item>


    <item>
        <shape>
            <solid android:color="@color/bbutton_danger" />
            <stroke android:width="1dp" android:color="@color/bbutton_danger_edge" />
            <corners android:radius="@dimen/bbuton_rounded_corner_radius"/>
        </shape>
    </item>

</selector>

clipbg.xml:

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="horizontal"
    android:gravity="left"
    android:drawable="@drawable/btnblue" >
</clip>

ovalbg.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <gradient
        android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

shape_bcg.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
    <!--边角弧度-->
    <corners
        android:topLeftRadius="15dp"
        android:bottomRightRadius="15dp"
        />
    <!--渐变 angle是渐变角度,必须为45的整数倍-->
    <gradient
        android:angle="45"
        android:startColor="@color/colorAccent"
        android:endColor="@color/blue"
        android:type="linear"
        />
    <!--内边距-->
    <padding
        android:left="2dp"
        android:right="2dp"
        android:top="2dp"
        android:bottom="2dp"
        />
    <!--形状的大小-->
    <size
        android:width="80dp"
        android:height="50dp"
        />
    <!--定义填充<solid
        android:color="@null"
        />-->
    <!--定义边框-->
    <stroke
        android:width="2dp"
        android:color="#FF0000"
        />
</shape>

MainActivity.java:

package com.xiesir.example06button;

import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.ClipDrawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RoundRectShape;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

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

        Button btn = (Button) findViewById(R.id.btn);
        float[] outerRadii = {20, 20, 40, 40, 60, 60, 80, 80};      //外矩形 左上、右上、右下、左下 圆角半径
        //float[] outerRadii = {20, 20, 20, 20, 20, 20, 20, 20};    //外矩形 左上、右上、右下、左下 圆角半径
        RectF inset = new RectF(100, 100, 200, 200);                //内矩形距外矩形,左上角x,y距离, 右下角x,y距离
        float[] innerRadii = {20, 20, 20, 20, 20, 20, 20, 20};      //内矩形 圆角半径
        RoundRectShape roundRectShape = new RoundRectShape(outerRadii, inset, innerRadii);
        //RoundRectShape roundRectShape = new RoundRectShape(outerRadii, null, innerRadii); //无内矩形
        ShapeDrawable drawable = new ShapeDrawable(roundRectShape);
        drawable.getPaint().setColor(Color.GREEN);
        drawable.getPaint().setAntiAlias(true);
        drawable.getPaint().setStyle(Paint.Style.STROKE);//描边
        drawable.getPaint().setStrokeWidth(20);
        drawable.setIntrinsicWidth(200);
        drawable.setIntrinsicHeight(100);
        drawable.setPadding(new Rect(4, 4, 4, 4));
        //drawable.setShape(Shape s);
        btn.setBackground(drawable);
    }

    public void click(View v) {
        Button btn_btn = (Button) v;
        ClipDrawable drawable = (ClipDrawable) btn_btn.getBackground();
        drawable.setLevel(drawable.getLevel() + 1000);
    }
}

 

源程序下载

参考:

http://blog.csdn.net/coder_pig/article/details/47016775

http://www.mobile-open.com/2016/922726.html

http://itfish.net/article/56489.html

http://www.chenglong.ren/2016/03/17/android%E4%B8%ADselector%E7%9A%84%E4%BD%BF%E7%94%A8/

posted on 2016-05-09 01:12  新思想  阅读(357)  评论(0)    收藏  举报

导航