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/
浙公网安备 33010602011771号