1. 程式人生 > 程式設計 >Android處理檢視圓角和色彩的工具類

Android處理檢視圓角和色彩的工具類

Android程式碼處理檢視圓角和色彩的工具類,供大家參考,具體內容如下

一直都用的.XML檔案處理圓角與色彩或色彩漸變,覺得很不方便,後來發現了GradientDrawable這個類,就整了個工具類,用起來覺得挺方便

效果圖:

Android處理檢視圓角和色彩的工具類

下面貼程式碼:

public class DrawCorner {
 
 /*
 * 預設繪製圓角函式,背景白色,半徑20
 * */
 public static GradientDrawable drawCorner() {
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadius(20);
 drawable.setColor(Color.WHITE);
 return drawable;
 }
 
 /*
 * 預設繪製圓角函式,背景白色
 * 引數:
 * radius:圓角半徑
 * */
 public static GradientDrawable drawCorner(int radius) {
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadius(radius);
 drawable.setColor(Color.WHITE);
 return drawable;
 }
 
 /*
 * 預設繪製圓角函式,背景白色
 * 引數:
 * radii:四個圓角半徑,依次是左上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};
 }
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadii(radii);
 drawable.setColor(Color.WHITE);
 return drawable;
 }
 
 /*
 * 預設繪製圓角函式
 * 引數:
 * radius:圓角半徑
 * color:背景色
 * */
 public static GradientDrawable drawCorner(int radius,int color) {
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadius(radius);
 drawable.setColor(color);
 return drawable;
 }
 
 /*
 * 預設繪製圓角函式
 * 引數:
 * radii:四個圓角半徑,依次是左上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};
 }
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadii(radii);
 drawable.setColor(color);
 return drawable;
 }
 
 /*
 * 預設繪製圓角函式
 * 引數:
 * 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;
 }
 
 /*
 * 預設繪製圓角函式
 * 引數:
 * radii:四個圓角半徑,依次是左上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};
 }
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadii(radii);
 drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
 drawable.setColors(colors);
 return drawable;
 }
 
 /*
 * 預設繪製圓角函式
 * 引數:
 * 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;
 }
 
 /*
 * 預設繪製圓角函式
 * 引數:
 * radii:四個圓角半徑,依次是左上、右上、右下、左下
 * colors:漸變背景色
 * orientation:漸變型別( 0:上到下,1:右上到左下,2:右到左,3:右下到左上,4:下到上,5:左下到右上,6:左到右,7:左上到右下 )
 * */
 public static GradientDrawable drawCorner(float[] radii,int orientation) {
 if (radii == null || radii.length != 8) {
  radii = new float[]{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;
 }
 
}

呼叫方式很簡單,就是

View.setBackground(DrawCorner.drawCorner);

就行了

例如:

TextView textView = findViewById(R.id.test);
textView.setBackground(DrawCorner.drawCorner());

Github地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。