Android--自定义Button的样式以及动态渐变效果
2017-05-31 16:56
337 查看
之前开发使用过自定义样式的Button,使用挺简单的,但也很常用,因此总结一下。
1,使用drawable文件自定义静态的Button样式
首先,自定义一个drawable文件custombutton.xml:
style="?android:attr/borderlessButtonStyle
2,Button实现动态渐变效果
先写一个选择器内容是:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<!-- 定义当button 处于pressed 状态时的形态。-->
<shape>
<gradient android:startColor="#8600ff" /><!--内容实现渐变-->
<stroke android:width="2dp" android:color="#000000" /><!--边框宽度和颜色-->
<corners android:radius="5dp" /><!--圆弧半径-->
<padding android:left="10dp" android:top="10dp"
android:bottom="10dp" android:right="10dp" />
</shape>
</item>
<item android:state_focused="true">
<!-- 定义当button获得focus时的形态-->
<shape>
<gradient android:endColor="#eac100" />
<stroke android:width="2dp" android:color="#333333" />
<corners android:radius="8dp" />
<padding android:left="10dp" android:top="10dp"
android:bottom="10dp" android:right="10dp" />
</shape>
</item>
</selector>为button添加选择器,布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.a51ckck.custombutton.MainActivity">
<TextView
android:id="@+id/tv_main_show"
android:background="#f0f000"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="你好习哥!!"
android:textColor="#ff0000"
android:gravity="center"
/>
<Button
android:id="@+id/bt_main_click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:background="@drawable/dynamic"
android:text="点击按钮"
android:layout_centerInParent="true"
/>
</RelativeLayout>最后需要在Activity中为Button添加焦点:
public class MainActivity extends AppCompatActivity {
private TextView mTextView;
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView= (TextView) findViewById(R.id.tv_main_show);
mButton= (Button) findViewById(R.id.bt_main_click);
setData();
}
private void setData() {
mButton.setFocusable(true);
mButton.setFocusableInTouchMode(true);
mButton.requestFocus();
mButton.requestFocusFromTouch();
}
public void click(View view) {
if(view!=null){
mTextView.setText("你好彭嫂!!!");
}
}
}虽然不复杂,但是确是常使用的,所以掌握它是非常有必要的,最终来看一下效果图:
1,使用drawable文件自定义静态的Button样式
首先,自定义一个drawable文件custombutton.xml:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 边框颜色值--> <item> <shape> <!--圆角 --> <corners android:radius="20dp"></corners> <!--边框颜色--> <solid android:color="#fff"></solid> </shape> </item> <!-- 主题背景颜色值--> <item android:bottom="1dp" android:right="1dp" android:top="1dp" android:left="1dp"><!--设置四个边框(根据需要选择对应边框)--> <shape> <gradient android:centerX="0.5" android:centerY="0.5" /><!--与底层的垂直距离(阴影的效果)--> <padding android:left="2dp" android:top="2dp" android:right="2dp android:bottom="2dp" /> <!-- 圆角 --> <corners android:radius="20dp"/> <solid android:color="ffffff"/><!--设置button的边框里内容的背景色--> </shape> </item> </layer-list>然后在xml布局文件中:
<Button android:layout_width="wrap_content" style="?android:attr/borderlessButtonStyle" android:layout_height="wrap_content" android:background="@drawable/custombutton" android:text="这是测试按钮"/>如果添加下边这一句会去掉Button的默认底色,只留下文字,我们使用自定义的话不需要添加这一句,只需要给Button的背景添加我们自定义的custombutton。
style="?android:attr/borderlessButtonStyle
2,Button实现动态渐变效果
先写一个选择器内容是:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<!-- 定义当button 处于pressed 状态时的形态。-->
<shape>
<gradient android:startColor="#8600ff" /><!--内容实现渐变-->
<stroke android:width="2dp" android:color="#000000" /><!--边框宽度和颜色-->
<corners android:radius="5dp" /><!--圆弧半径-->
<padding android:left="10dp" android:top="10dp"
android:bottom="10dp" android:right="10dp" />
</shape>
</item>
<item android:state_focused="true">
<!-- 定义当button获得focus时的形态-->
<shape>
<gradient android:endColor="#eac100" />
<stroke android:width="2dp" android:color="#333333" />
<corners android:radius="8dp" />
<padding android:left="10dp" android:top="10dp"
android:bottom="10dp" android:right="10dp" />
</shape>
</item>
</selector>为button添加选择器,布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.a51ckck.custombutton.MainActivity">
<TextView
android:id="@+id/tv_main_show"
android:background="#f0f000"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="你好习哥!!"
android:textColor="#ff0000"
android:gravity="center"
/>
<Button
android:id="@+id/bt_main_click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:background="@drawable/dynamic"
android:text="点击按钮"
android:layout_centerInParent="true"
/>
</RelativeLayout>最后需要在Activity中为Button添加焦点:
public class MainActivity extends AppCompatActivity {
private TextView mTextView;
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView= (TextView) findViewById(R.id.tv_main_show);
mButton= (Button) findViewById(R.id.bt_main_click);
setData();
}
private void setData() {
mButton.setFocusable(true);
mButton.setFocusableInTouchMode(true);
mButton.requestFocus();
mButton.requestFocusFromTouch();
}
public void click(View view) {
if(view!=null){
mTextView.setText("你好彭嫂!!!");
}
}
}虽然不复杂,但是确是常使用的,所以掌握它是非常有必要的,最终来看一下效果图:
相关文章推荐
- Android中使用自定义selector来实现view的点击效果以及view的显示样式
- android button自定义触摸前以及触摸时的样式
- android问题之Button自定义样式selector后,点击无效果
- Android自定义button的实现,未选中,按下,选中效果
- Android中的Button自定义点击效果
- Android自定义Button按钮显示样式
- Android shape自定义button样式
- Android中的Button自定义点击效果
- Android 自定义Button按钮显示样式(正常、按下、获取焦点)
- Android 自定义Button按钮显示样式(正常、按下、获取焦点)
- Android自定义Button按钮显示样式
- Android中ImageButton自定义按钮的按下效果的代码实现方法
- Android Button 中绚丽渐变效果的设置 如此简单。。。
- Android Button 中绚丽渐变效果的设置 如此简单。。。
- Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。
- android自定义button样式
- Android 自定义Button按钮显示样式(正常、按下、获取焦点)
- Android 自定义Button按钮显示样式(正常、按下、获取焦点)
- Android 自定义Button按钮显示样式(正常、按下、获取焦点)
- Android Button 中绚丽渐变效果的设置 如此简单。。。