Android處理視圖圓角和色彩的工具類
更新時間:2020年07月22日 17:09:11 作者:優(yōu)秀的哥斯拉
這篇文章主要為大家詳細介紹了Android處理視圖圓角和色彩的工具類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
Android代碼處理視圖圓角和色彩的工具類,供大家參考,具體內(nèi)容如下
一直都用的.XML文件處理圓角與色彩或色彩漸變,覺得很不方便,后來發(fā)現(xiàn)了GradientDrawable這個類,就整了個工具類,用起來覺得挺方便
效果圖:
下面貼代碼:
public class DrawCorner { /** * 默認繪制圓角函數(shù),背景白色,半徑20 * */ public static GradientDrawable drawCorner() { GradientDrawable drawable = new GradientDrawable(); drawable.setCornerRadius(20); drawable.setColor(Color.WHITE); return drawable; } /** * 默認繪制圓角函數(shù),背景白色 * 參數(shù): * radius:圓角半徑 * */ public static GradientDrawable drawCorner(int radius) { GradientDrawable drawable = new GradientDrawable(); drawable.setCornerRadius(radius); drawable.setColor(Color.WHITE); return drawable; } /** * 默認繪制圓角函數(shù),背景白色 * 參數(shù): * 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, 0, 0, 0, 0, 0, 0}; } GradientDrawable drawable = new GradientDrawable(); drawable.setCornerRadii(radii); drawable.setColor(Color.WHITE); return drawable; } /** * 默認繪制圓角函數(shù) * 參數(shù): * radius:圓角半徑 * color:背景色 * */ public static GradientDrawable drawCorner(int radius, int color) { GradientDrawable drawable = new GradientDrawable(); drawable.setCornerRadius(radius); drawable.setColor(color); return drawable; } /** * 默認繪制圓角函數(shù) * 參數(shù): * 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, 0, 0, 0, 0, 0, 0}; } GradientDrawable drawable = new GradientDrawable(); drawable.setCornerRadii(radii); drawable.setColor(color); return drawable; } /** * 默認繪制圓角函數(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; } /** * 默認繪制圓角函數(shù) * 參數(shù): * 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, 0, 0, 0, 0, 0, 0}; } GradientDrawable drawable = new GradientDrawable(); drawable.setCornerRadii(radii); drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT); drawable.setColors(colors); return drawable; } /** * 默認繪制圓角函數(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; } /** * 默認繪制圓角函數(shù) * 參數(shù): * radii:四個圓角半徑,依次是左上、右上、右下、左下 * 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)用方式很簡單,就是
View.setBackground(DrawCorner.drawCorner);
就行了
例如:
TextView textView = findViewById(R.id.test); textView.setBackground(DrawCorner.drawCorner());
Github地址
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android panellistview 圓角實現(xiàn)代碼
android panellistview 圓角是每一個android開發(fā)者都具備的一項,對于新手朋友來說可能有點難度,接下來將詳細介紹,需要了解的朋友可以參考下2012-12-12Kotlin創(chuàng)建一個好用的協(xié)程作用域
這篇文章主要介紹了Kotlin創(chuàng)建一個好用的協(xié)程作用域,kotlin中使用協(xié)程,是一定要跟協(xié)程作用域一起配合使用的,否則可能協(xié)程的生命周期無法被準確控制,造成內(nèi)存泄漏或其他問題2022-07-07- 事件是一種有用來收集用戶與應(yīng)用程序互動數(shù)據(jù)的互動組件,如按鍵或觸摸屏等放置事件,因為每個事件從Android框架維護事件隊列先入先出(FIFO)基礎(chǔ)上的隊列。可以在程序中捕獲這些事件,按要求并采取適當?shù)膭幼?/div> 2023-02-02
解決Android橫豎屏切換數(shù)據(jù)丟失問題的方法
這篇文章主要為大家詳細介紹了Android橫豎屏切換數(shù)據(jù)丟失問題的解決方法,感興趣的小伙伴們可以參考一下2016-05-05最新評論