Android動態設置Shape

lan9liang 8年前發布 | 16K 次閱讀 XML 安卓開發 Android開發 移動開發

有過一些開發經驗的朋友,在做圓角按鈕的背景時可能不再需要.9的切圖了,而一般都是在drawable文件夾下面建立一個xml文件shape(其他狀態不變色)或者selector(按下、選中狀態變色),但是如果我們想在應用中動態的改變控件的顏色怎么辦?.

比如說這種需求,看圖

一些標簽類型的控件,數據都是從后臺獲取得到,當然也包括顏色值。在沒有選中的情況下邊框顏色和字體顏色一樣背景白色,選中后背景變色,字體變白色。這樣的動態修改控件的顏色怎么做?下面為大家介紹下GradientDrawable

官方對它的介紹是這樣的

Android.graphics.drawable

類 GradientDrawable

java.lang.Object

繼承者 android.graphics.drawable.Drawable

繼承者 android.graphics.drawable.GradientDrawable

public class GradientDrawable extends Drawable

A Drawable with a color gradient for buttons, backgrounds, etc.

通常可以用作Button或是背景圖形的

Drawable It can be defined in an XML file with the shape element.

可以在xml里面shape元素下定義的 (沒有了,只有這兩行。。。)

但是進入源碼我們可以了解到,

繪制圖形的種類有:LINE,OVAL,RECTANGLE或是RING

圖形的其它屬性有:Radius,startColor,centerColor,endColor,angle,centerX,centerY, Stroke_width,Stroke_color,Solid_color,Padding

由此我們大概的知道,該類能做到的事情有哪些了。它就相當于一個可以動態設置的shape,我們實例化一個出來后,再指定某些屬性,最后讓控件setBackground就可以了,很簡單。

TextView textView = new TextView(this);
GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadius(5);
drawable.setStroke(1, Color.parseColor("#cccccc"));
drawable.setColor(Color.parseColor("#eeeeee"));
textView.setBackgroundDrawable(drawable);

如果說要實現按下時(android:state_pressed)的狀態,可以實現控件的setOnTouchListener,在MotionEvent.ACTION_DOWN事件下再設置你想要實現的背景給控件就好了。

 

 

來自:http://www.jianshu.com/p/2467444d2664

 

 本文由用戶 lan9liang 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!