Android處理視圖圓角和色彩的工具類
Android代碼處理視圖圓角和色彩的工具類,供大家參考,具體內(nèi)容如下
一直都用的.XML文件處理圓角與色彩或色彩漸變,覺得很不方便,后來發(fā)現(xiàn)了GradientDrawable這個(gè)類,就整了個(gè)工具類,用起來覺得挺方便
效果圖:

下面貼代碼:
public class DrawCorner {
/**
* 默認(rèn)繪制圓角函數(shù),背景白色,半徑20
* */
public static GradientDrawable drawCorner() {
GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadius(20);
drawable.setColor(Color.WHITE);
return drawable;
}
/**
* 默認(rèn)繪制圓角函數(shù),背景白色
* 參數(shù):
* radius:圓角半徑
* */
public static GradientDrawable drawCorner(int radius) {
GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadius(radius);
drawable.setColor(Color.WHITE);
return drawable;
}
/**
* 默認(rèn)繪制圓角函數(shù),背景白色
* 參數(shù):
* radii:四個(gè)圓角半徑,依次是左上x、左上y、右上x、右上y、右下x、右下y、左下x、左下y
* */
public static GradientDrawable drawCorner(float[] radii) {
if (radii == null || radii.length != 8) {
radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
}
GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadii(radii);
drawable.setColor(Color.WHITE);
return drawable;
}
/**
* 默認(rèn)繪制圓角函數(shù)
* 參數(shù):
* radius:圓角半徑
* color:背景色
* */
public static GradientDrawable drawCorner(int radius, int color) {
GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadius(radius);
drawable.setColor(color);
return drawable;
}
/**
* 默認(rèn)繪制圓角函數(shù)
* 參數(shù):
* radii:四個(gè)圓角半徑,依次是左上x、左上y、右上x、右上y、右下x、右下y、左下x、左下y
* color:背景色
* */
public static GradientDrawable drawCorner(float[] radii, int color) {
if (radii == null || radii.length != 8) {
radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
}
GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadii(radii);
drawable.setColor(color);
return drawable;
}
/**
* 默認(rèn)繪制圓角函數(shù)
* 參數(shù):
* radius:圓角半徑
* colors:漸變背景色
* */
public static GradientDrawable drawCorner(int radius, int[] colors) {
GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadius(radius);
drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
drawable.setColors(colors);
return drawable;
}
/**
* 默認(rèn)繪制圓角函數(shù)
* 參數(shù):
* radii:四個(gè)圓角半徑,依次是左上x、左上y、右上x、右上y、右下x、右下y、左下x、左下y
* colors:漸變背景色
* */
public static GradientDrawable drawCorner(float[] radii, int[] colors) {
if (radii == null || radii.length != 8) {
radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
}
GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadii(radii);
drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
drawable.setColors(colors);
return drawable;
}
/**
* 默認(rèn)繪制圓角函數(shù)
* 參數(shù):
* radius:圓角半徑
* colors:漸變背景色
* orientation:漸變類型( 0:上到下,1:右上到左下,2:右到左,3:右下到左上,4:下到上,5:左下到右上,6:左到右,7:左上到右下 )
* */
public static GradientDrawable drawCorner(int radius, int[] colors, int orientation) {
GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadius(radius);
drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
switch (orientation) {
case 0:
drawable.setOrientation(GradientDrawable.Orientation.TOP_BOTTOM);
break;
case 1:
drawable.setOrientation(GradientDrawable.Orientation.TR_BL);
break;
case 2:
drawable.setOrientation(GradientDrawable.Orientation.RIGHT_LEFT);
break;
case 3:
drawable.setOrientation(GradientDrawable.Orientation.BR_TL);
break;
case 4:
drawable.setOrientation(GradientDrawable.Orientation.BOTTOM_TOP);
break;
case 5:
drawable.setOrientation(GradientDrawable.Orientation.BL_TR);
break;
case 6:
drawable.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT);
break;
case 7:
drawable.setOrientation(GradientDrawable.Orientation.TL_BR);
break;
}
drawable.setColors(colors);
return drawable;
}
/**
* 默認(rèn)繪制圓角函數(shù)
* 參數(shù):
* radii:四個(gè)圓角半徑,依次是左上、右上、右下、左下
* colors:漸變背景色
* orientation:漸變類型( 0:上到下,1:右上到左下,2:右到左,3:右下到左上,4:下到上,5:左下到右上,6:左到右,7:左上到右下 )
* */
public static GradientDrawable drawCorner(float[] radii, int[] colors, int orientation) {
if (radii == null || radii.length != 8) {
radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
}
GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadii(radii);
drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
switch (orientation) {
case 0:
drawable.setOrientation(GradientDrawable.Orientation.TOP_BOTTOM);
break;
case 1:
drawable.setOrientation(GradientDrawable.Orientation.TR_BL);
break;
case 2:
drawable.setOrientation(GradientDrawable.Orientation.RIGHT_LEFT);
break;
case 3:
drawable.setOrientation(GradientDrawable.Orientation.BR_TL);
break;
case 4:
drawable.setOrientation(GradientDrawable.Orientation.BOTTOM_TOP);
break;
case 5:
drawable.setOrientation(GradientDrawable.Orientation.BL_TR);
break;
case 6:
drawable.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT);
break;
case 7:
drawable.setOrientation(GradientDrawable.Orientation.TL_BR);
break;
}
drawable.setColors(colors);
return drawable;
}
}
調(diào)用方式很簡(jiǎn)單,就是
View.setBackground(DrawCorner.drawCorner);
就行了
例如:
TextView textView = findViewById(R.id.test); textView.setBackground(DrawCorner.drawCorner());
Github地址
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android panellistview 圓角實(shí)現(xiàn)代碼
android panellistview 圓角是每一個(gè)android開發(fā)者都具備的一項(xiàng),對(duì)于新手朋友來說可能有點(diǎn)難度,接下來將詳細(xì)介紹,需要了解的朋友可以參考下2012-12-12
Kotlin創(chuàng)建一個(gè)好用的協(xié)程作用域
這篇文章主要介紹了Kotlin創(chuàng)建一個(gè)好用的協(xié)程作用域,kotlin中使用協(xié)程,是一定要跟協(xié)程作用域一起配合使用的,否則可能協(xié)程的生命周期無法被準(zhǔn)確控制,造成內(nèi)存泄漏或其他問題2022-07-07
Android 快速使用正則表達(dá)式,校驗(yàn)身份證號(hào)的實(shí)例
下面小編就為大家分享一篇Android 快速使用正則表達(dá)式,校驗(yàn)身份證號(hào)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01
MVVMLight項(xiàng)目的綁定及各種使用場(chǎng)景示例分析
這篇文章主要為大家介紹了MVVMLight項(xiàng)目中的綁定及綁定的各種使用場(chǎng)景示例源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步除夕快樂2022-01-01
Android中獲得手機(jī)屏幕大小實(shí)現(xiàn)代碼
這篇文章主要介紹了Android中獲得手機(jī)屏幕大小實(shí)現(xiàn)代碼,Android開發(fā)中經(jīng)常需要獲得屏幕的寬高,本文直接封裝成一個(gè)工具類,需要的朋友可以參考下2015-06-06
Android中Image的簡(jiǎn)單實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了Android中Image的簡(jiǎn)單實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
解決Android橫豎屏切換數(shù)據(jù)丟失問題的方法
這篇文章主要為大家詳細(xì)介紹了Android橫豎屏切換數(shù)據(jù)丟失問題的解決方法,感興趣的小伙伴們可以參考一下2016-05-05
Android使用http請(qǐng)求手機(jī)號(hào)碼歸屬地查詢代碼分享
這篇文章主要介紹了Android使用http請(qǐng)求手機(jī)號(hào)碼歸屬地查詢代碼分享的相關(guān)資料,需要的朋友可以參考下2016-06-06

