Android动态封装圆角,按下效果的背景

原创 2015年07月08日 17:04:15
/**

* @param RADIUS
*            角度
* @param normalFileName
*            正常颜色
* @param pressFileName
*            点击颜色
* @param type
*            -1:left 0:center 1:right 2:四角圆角
* @return
*/
public static StateListDrawable addDrawable(int RADIUS, int normalFileName,
int pressFileName, int type) {
StateListDrawable sd = new StateListDrawable();


if (RADIUS != 0) {
float[] float1 = null;


if (type == -1) {
float1 = new float[] { 0, 0, 0, 0, 0, 0, RADIUS, RADIUS };


} else if (type == 0) {
float1 = new float[] { 0, 0, 0, 0, 0, 0, 0, 0 };


} else if (type == 1) {
float1 = new float[] { 0, 0, 0, 0, RADIUS, RADIUS, 0, 0 };


} else if (type == 2) { // 设置四个角为圆角
float1 = new float[] { RADIUS, RADIUS, RADIUS, RADIUS, RADIUS,
RADIUS, RADIUS, RADIUS };


} else {
float1 = new float[] { 0, 0, 0, 0, RADIUS, RADIUS, RADIUS,
RADIUS };
}


GradientDrawable gd = new GradientDrawable();
gd.setCornerRadii(float1);
gd.setColor(normalFileName);
GradientDrawable gd2 = new GradientDrawable();
gd2.setCornerRadii(float1);
gd2.setColor(pressFileName);


int pressed = android.R.attr.state_pressed;
int window_focused = android.R.attr.state_window_focused;
int focused = android.R.attr.state_focused;
int selected = android.R.attr.state_selected;
sd.addState(new int[] { pressed, window_focused }, gd2);
sd.addState(new int[] { pressed, -focused }, gd2);
sd.addState(new int[] { selected }, gd2);
sd.addState(new int[] { focused }, gd2);
sd.addState(new int[] {}, gd);
return sd;


} else {
GradientDrawable gd = new GradientDrawable();
gd.setColor(normalFileName);
GradientDrawable gd2 = new GradientDrawable();
gd2.setColor(pressFileName);
int pressed = android.R.attr.state_pressed;
int window_focused = android.R.attr.state_window_focused;
int focused = android.R.attr.state_focused;
int selected = android.R.attr.state_selected;
sd.addState(new int[] { pressed, window_focused }, gd2);
sd.addState(new int[] { pressed, -focused }, gd2);
sd.addState(new int[] { selected }, gd2);
sd.addState(new int[] { focused }, gd2);
sd.addState(new int[] {}, gd);
return sd;
}


}

相关文章推荐

android selector背景选择器,按下有不同效果

方法一:代码实现 1. 自定义状态效果可以通过代码实现,也可以通过xml定义style实现。 2. 下面先介绍代码实现,通过StateListDrawable定义Button背景。 ...

Android使用XML的方式为背景添加渐变,描边,圆角的效果

使用XML的方式为背景添加渐变的效果 首先,在res/Drawable 文件夹里面添加一个jbshape.xml文件,然后写入如下代码: shape 节点配置的是图形的形式,主要包...

Android使用XML的方式为背景添加渐变,描边,圆角的效果

使用XML的方式为背景添加渐变的效果 首先,在res/Drawable 文件夹里面添加一个jbshape.xml文件,然后写入如下代码: shape 节点配置的是图形的形式,主要包...
  • jdsjlzx
  • jdsjlzx
  • 2012年07月23日 23:28
  • 8925

Android button 圆角动态更改背景颜色

圆角button实现(左下角和右下角为圆角) 如果有背景图片切换,可以定义属性             android:id="@+id/ok_btn"             android:l...

[android]so easy实现根据viewpager、edittext、时间使背景动态渐变色效果~

一、前言 *本文是紧接着上文(奇思妙想之实用类ArgbEvaluator)写的。 在这简单回顾下,上文主要提到了一个叫做ArgbEvaluator的一个类,通过他可以灵活实现一些渐变色效果,虽然好...

Android毛玻璃(磨砂)效果(静态&动态背景图模糊 收集)

果然前人栽树,后人乘凉.google搜索”Android实现动态高斯模糊效果”发现2016年转载的博客居多(或者试试英文搜索,可能时间会提前很多.),看来2016年想实现这种效果的产品多; 2014年...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android动态封装圆角,按下效果的背景
举报原因:
原因补充:

(最多只允许输入30个字)