В разработке Android мы часто используем пользовательские стили нарисованных стилей, настройки стилей форм или селекторов селекторов в Drawables, но иногда, если в одном XML необходимы несколько стилей для натяжных стилей, а стили, установленные в них, лишь немного отличаются, а затем настройка нескольких стилей натяжных стилей появляется раздутым, что делает нарисованные слишком много файлов XML, что трудно управлять, поэтому иногда я думаю, что я могу создавать Draitablablablablablablablableablablablablables.
Использование StateListDrawable и GradientDrawable
Селектор реализации Java:
/** * Установить фоновый селектор * * @param presseddraw * @param normaldraw * @return */private statelistdrawable getSelector (Drawable normaldraw, Dravable PressedDraw) {StateLDrawable statelistDrawable = new StatelistDrawable (); statelistdrawable.addstate (new int [] {android.r.attr.state_selected}, presseddraw); statelistdrawable.addState (new int [] {}, normaldraw); вернуть StatelistDrawable;}Это для создания селектора в коде. Созданный тип является стабилизатором. Вы можете добавить состояние в селектор через AddState (). Однако следует отметить, что при добавлении состояния есть заказ. StatelistDrawable сначала выполнит последнее добавленное состояние. Если это не состояние, выполните следующее состояние. Если крупномасштабное состояние находится впереди, оно непосредственно выполнит крупномасштабное состояние без выполнения последующего состояния. Кроме того, при добавлении состояния добавьте знак « -» до состояния, указывая на то, что это состояние является false (например: -Android.r.attr.state_selected), в противном случае оно верно.
/** * Установите форму * * @param Radius * @param fillcolor * @param width * @param rokecolor * @return */private gradientdrawable Getdrawable (int radius, int fillColor, int width, int strokecolor) {gradientDrawable GradientDrawable = new GradientDrawable (); GradientDrawable.setCornerradius (радиус); gradientDrawable.setColor (FillColor); gradientDrawable.setStroke (ширина, StrokeColor); return GradientDrawable;}Динамически создайте GradientDrawable в коде, что может реализовать функцию стиля формы в стиле нарисовании. SetColor равен цвету заполнения в форме. SetCornerradius должен установить радиан закругленного угла в форму. Если вы хотите установить радиан одного угла, вы можете использовать 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, нажатие); TextView.setBackground (селектор);
Суммировать
Выше приведено код Java, введенный редактором, чтобы установить цвет фона селектора в разных состояниях. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!