国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

JAVA代碼設置selector不同狀態下的背景顏色

2024-07-14 08:40:40
字體:
來源:轉載
供稿:網友
  • 代碼實現Shape
  • 代碼實現Selector
  • StateListDrawable與GradientDrawable 的運用

在Android開發中,我們時常會用到自定義drawable樣式,在drawable中設置shape樣式或是selector選擇器,但是有時如果一個xml中需要用到多個drawable樣式,并且里面設置的樣式只是有細微的差別改變,那么自定義多個drawable樣式會顯得比較臃腫,使得drawable的xml文件太多,管理麻煩,所以有時本星覺得可以在代碼中創建drawable。

StateListDrawable與GradientDrawable 的運用

java實現selector:

/** * 設置背景選擇器 * * @param pressedDraw * @param normalDraw * @return*/private StateListDrawable getSelector(Drawable normalDraw, Drawable pressedDraw) {    StateListDrawable stateListDrawable = new StateListDrawable();    stateListDrawable.addState(new int[]{android.R.attr.state_selected}, pressedDraw);    stateListDrawable.addState(new int[]{}, normalDraw);    return stateListDrawable;}

  這是在代碼中創建selector,創建的類型是StateListDrawable,可以通過addState()為selector添加狀態,但是要注意一點添加state時,是有順序的,stateListDrawable會先執行最新添加的state,如果不是該state,在執行下面的state,如果把大范圍的state放到前面添加,會導致直接執行大范圍的state,而不執行后面的state。此外,在添加state中,在state前添加“-”號,表示此state為false(例如:-android.R.attr.state_selected),否則為true。

/** * 設置shape * * @param radius * @param fillColor * @param width * @param strokeColor * @return */private GradientDrawable getDrawable(int radius, int fillColor, int width, int strokeColor) {  GradientDrawable gradientDrawable = new GradientDrawable();  gradientDrawable.setCornerRadius(radius);  gradientDrawable.setColor(fillColor);  gradientDrawable.setStroke(width, strokeColor);  return gradientDrawable;}

  在代碼中動態創建GradientDrawable ,可實現drawable樣式中shape樣式的功能,setColor等于shape中的填充色,setCornerRadius是設置shape中的圓角半徑,如果要設置單個角的弧度,可以用setCornerRadii()設置每個角的弧度,setStroke()是描邊,需要填寫描邊的寬和邊的顏色。

最后簡單使用:

GradientDrawable normal = getDrawable(0, Color.WHITE, 1, getResources().getColor(R.color.app_line_color));GradientDrawable press = getDrawable(0, Color.WHITE, 1, getResources().getColor(Config.currentThemeColorId));StateListDrawable selector = getSelector(normal, press);textView.setBackground(selector);

總結

以上所述是小編給大家介紹的JAVA代碼設置selector不同狀態下的背景顏色,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 托克逊县| 邢台市| 平南县| 临夏市| 山西省| 宜兰县| 凌云县| 枣庄市| 南昌市| 托克逊县| 临安市| 吉首市| 玛曲县| 白城市| 瓦房店市| 项城市| 巴中市| 吉隆县| 奈曼旗| 葫芦岛市| 库尔勒市| 利辛县| 和顺县| 武隆县| 泰顺县| 岚皋县| 诏安县| 长武县| 耿马| 阿城市| 三明市| 岚皋县| 安平县| 潍坊市| 高淳县| 杭锦旗| 莆田市| 通许县| 泰宁县| 施甸县| 铁岭市|