菜鸟懒人一枚
目的:复制这一个java文件就可以在java代码中一句代码设置Button的圆角弧度、选择器,不用再写XML文件
初学者只考虑简单,不考虑其他什么性能不性能的问题哈。
希望得到各位大神的指点,帮助修改、更新其他功能。
package com.yxz.firstcode.view;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.StateListDrawable;
import android.util.AttributeSet;
import android.widget.Button;
import com.yxz.firstcode.util.Log;
public class ButtonDiy extends Button {
int mDefaultColorResId;//默认状态的颜色-资源id
int mPressedColorResId;//按下状态的颜色-资源id
private float mRadius;//圆角角度
private String mDefaultColorStr;//默认状态的颜色-String
private String mPressedColorStr;//按下状态的颜色-String
public ButtonDiy(Context context) {
super(context, null);
}
public ButtonDiy(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
/**
* 初始化
*/
private void init() {
mDefaultColorStr = "#FFCCCCCC";
mPressedColorStr = "#FF333333";
mRadius = 10F;
addColorSelector(mDefaultColorStr, mPressedColorStr, mRadius);
}
/**
* 设置选择器和圆角角度
*
* @param defaultColor 默认的颜色
* @param pressedColor 按下的颜色
* @param radius 圆角角度
*/
public void addColorSelector(String defaultColor, String pressedColor, float radius) {
/*判断参数是否可用*/
mDefaultColorStr = defaultColor == null ? mDefaultColorStr : defaultColor;
mPressedColorStr = pressedColor == null ? mPressedColorStr : pressedColor;
mRadius = radius < 0 ? mRadius : radius;
/*设置圆角和填充色*/
GradientDrawable drawableDefault = new GradientDrawable();
drawableDefault.setColor(Color.parseColor(mDefaultColorStr));
drawableDefault.setCornerRadius(mRadius);
GradientDrawable drawablePressed = new GradientDrawable();
drawablePressed.setColor(Color.parseColor(mPressedColorStr));
drawablePressed.setCornerRadius(mRadius);
StateListDrawable drawable = new StateListDrawable();//设置选择器
//按下状态
drawable.addState(new int[]{android.R.attr.state_pressed}, drawablePressed);
//普通状态
drawable.addState(new int[]{-android.R.attr.state_focused, -android.R.attr.state_selected,
-android.R.attr.state_pressed}, drawableDefault);
this.setBackground(drawable);
}
/**
* 设置选择器和圆角角度
*
* @param defaultColorResId 默认颜色的资源id
* @param pressedColorResId 按下颜色的资源id
* @param radius 圆角的角度
*/
public void addColorSelector(int defaultColorResId, int pressedColorResId, float radius) {
/*设置圆角和填充色*/
GradientDrawable drawableDefault = new GradientDrawable();
GradientDrawable drawablePressed = new GradientDrawable();
mRadius = radius;
mDefaultColorResId = defaultColorResId;
mPressedColorResId = pressedColorResId;
try {
drawableDefault.setColor(getResources().getColor(mDefaultColorResId));
drawablePressed.setColor(getResources().getColor(mPressedColorResId));
} catch (Exception e) {
Log.e(ButtonDiy.class, "传递的参数未能找到资源文件。", e);
}
drawableDefault.setCornerRadius(mRadius);
drawablePressed.setCornerRadius(mRadius);
StateListDrawable drawable = new StateListDrawable();//设置选择器
//按下状态
drawable.addState(new int[]{android.R.attr.state_pressed}, drawablePressed);
//普通状态
drawable.addState(new int[]{-android.R.attr.state_focused, -android.R.attr.state_selected,
-android.R.attr.state_pressed}, drawableDefault);
this.setBackground(drawable);
}
}
点击查看更多内容
3人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦