效果图:
normal状态: pressed状态:
1. 关键文件 drawable下 btn_login_selecter.xml:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <!-- pressed the button status --> <shape> <!-- 开始颜色="" 结束颜色="" 颜色渐变="" --> <gradient android:angle="270" android:endColor="#888888" android:startColor="#888888" /> <!-- //渐变方向 按钮边缘="" 边缘宽="" --> <stroke android:width="1sp" android:color="#fad3cf" /> <!-- //边缘颜色 按钮四个圆角="" --> <corners android:radius="30dp" /> <!-- //半径 内边距="" 按钮文字和边缘距离="" --> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape></item> <item android:state_focused="true"> <!-- get the focus button sttaus --> <shape> <gradient android:angle="270" android:endColor="#ffc2b7" android:startColor="#ffc2b7" /> <stroke android:width="1sp" android:color="#dcdcdc" /> <corners android:radius="30dp" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape></item> <item> <!-- no focus the button status(the normal status button) --> <shape> <gradient android:angle="270" android:endColor="#00000000" android:startColor="#00000000" /> <stroke android:width="1sp" android:color="#fad3cf" /> <corners android:radius="30dp" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape></item> </selector>
2. activity_login.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#eeeeee" android:orientation="vertical" > <Button android:id="@+id/test_shape_btn" android:layout_width="match_parent" android:layout_height="50dip" android:layout_centerInParent="true" android:layout_marginLeft="60dip" android:layout_marginRight="60dip" android:background="@drawable/btn_login_selecter" /> </RelativeLayout>
3. Activity文件内容:
package com.jun.activity; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class LoginActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.login, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }