Java Code Examples for android.graphics.drawable.StateListDrawable#addState()

The following examples show how to use android.graphics.drawable.StateListDrawable#addState() . These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may want to check out the right sidebar which shows the related API usage.
Example 1
Source Project: fingen   File: TagView.java    License: Apache License 2.0 6 votes vote down vote up
private Drawable getSelector(Tag tag) {
	if (tag.background!=null)return tag.background;
	StateListDrawable states = new StateListDrawable();
	GradientDrawable gd_normal = new GradientDrawable();
	gd_normal.setColor(tag.layoutColor);
	gd_normal.setCornerRadius(tag.radius);
	if (tag.layoutBorderSize>0){
		gd_normal.setStroke(Utils.dipToPx(getContext(),tag.layoutBorderSize), tag.layoutBorderColor);
	}
	GradientDrawable gd_press = new GradientDrawable();
	gd_press.setColor(tag.layoutColorPress);
	gd_press.setCornerRadius(tag.radius);
	states.addState(new int[] { android.R.attr.state_pressed }, gd_press);
	//must add state_pressed first,or state_pressed will not take effect
	states.addState(new int[] {}, gd_normal);
	return states;
}
 
Example 2
Source Project: QButton   File: QButton.java    License: MIT License 6 votes vote down vote up
private void notifyChanges() {

        Float factor = 0.8f, factorStorke = 0.9f;

        if (!isEnable) {
            //handling for button disable state
            setAlpha(0.6f);
        }

        if (mStrokeColor == 0) {
            mStrokeColor = manipulateColor(mBackgroundColor, factorStorke);
        }

        Drawable pressed = getDrawable1(manipulateColor(mBackgroundColor, factor), mRadius);
        Drawable normal = getDrawable1(mBackgroundColor, mRadius);

        StateListDrawable states = new StateListDrawable();
        states.addState(new int[]{android.R.attr.state_pressed}, pressed);
        states.addState(new int[]{}, normal);
        setBackground(states);

    }
 
Example 3
Source Project: TagView   File: TagView.java    License: Apache License 2.0 6 votes vote down vote up
private Drawable getSelector(Tag tag) {
    if (tag.getBackground() != null)
        return tag.getBackground();

    StateListDrawable states = new StateListDrawable();
    GradientDrawable gdNormal = new GradientDrawable();
    gdNormal.setColor(tag.getLayoutColor());
    gdNormal.setCornerRadius(tag.getRadius());
    if (tag.getLayoutBorderSize() > 0) {
        gdNormal.setStroke(Utils.dipToPx(getContext(), tag.getLayoutBorderSize()), tag.getLayoutBorderColor());
    }
    GradientDrawable gdPress = new GradientDrawable();
    gdPress.setColor(tag.getLayoutColorPress());
    gdPress.setCornerRadius(tag.getRadius());
    states.addState(new int[]{android.R.attr.state_pressed}, gdPress);
    //must add state_pressed first,or state_pressed will not take effect
    states.addState(new int[]{}, gdNormal);
    return states;
}
 
Example 4
private void setSelector(TypedArray a) {
    touchFeedbackDrawable = new StateListDrawable();
    touchFeedbackDrawable.addState(
            new int[]{android.R.attr.state_pressed},
            getColor(a)
    );
}
 
Example 5
private StateListDrawable createFillDrawable(float strokeWidth) {
  StateListDrawable drawable = new StateListDrawable();
  drawable.addState(new int[] { -android.R.attr.state_enabled }, createCircleDrawable(mColorDisabled, strokeWidth));
  drawable.addState(new int[] { android.R.attr.state_pressed }, createCircleDrawable(mColorPressed, strokeWidth));
  drawable.addState(new int[] { }, createCircleDrawable(mColorNormal, strokeWidth));
  return drawable;
}
 
Example 6
Source Project: SegmentedButton   File: RippleHelper.java    License: Apache License 2.0 5 votes vote down vote up
private static StateListDrawable getStateListDrawable(int pressedColor, Integer normalColor, int radius) {
    StateListDrawable states = new StateListDrawable();
    states.addState(
            new int[]{android.R.attr.state_pressed}
            , getDrawable(pressedColor, radius)
    );
    if (null != normalColor)
        states.addState(
                new int[]{}
                , getDrawable(normalColor, radius)
        );
    return states;
}
 
Example 7
Source Project: proteus   File: DrawableValue.java    License: Apache License 2.0 5 votes vote down vote up
@Override
public void apply(ProteusView view, Context context, ProteusLayoutInflater.ImageLoader loader, Callback callback) {
  final StateListDrawable stateListDrawable = new StateListDrawable();
  int size = states.length;
  for (int i = 0; i < size; i++) {
    stateListDrawable.addState(states[i], DrawableResourceProcessor.evaluate(values[i], view));
  }
  callback.apply(stateListDrawable);
}
 
Example 8
private void setSelector(TypedArray a) {
    touchFeedbackDrawable = new StateListDrawable();
    touchFeedbackDrawable.addState(
            new int[]{android.R.attr.state_pressed},
            getColor(a)
    );
}
 
Example 9
Source Project: SimpleProject   File: ViewBgUtil.java    License: MIT License 5 votes vote down vote up
public static Drawable getDrawable(int state, int shape, GradientDrawable.Orientation[] orientation,
                                   int[][] bgColor, int[] borderColor, int borderWidth, float[] radius) {
	if (bgColor == null || bgColor.length < MIN_RESOURCE_COUNT) {
		throw new IllegalArgumentException();
	}
	StateListDrawable drawable = new StateListDrawable();
	drawable.addState(new int[] {state}, getDrawable(shape, orientation[1], bgColor[1], borderColor[1], borderWidth, radius));
	drawable.addState(new int[] {}, getDrawable(shape, orientation[0], bgColor[0], borderColor[0], borderWidth, radius));

	return drawable;
}
 
Example 10
private StateListDrawable createFillDrawable(float strokeWidth) {
  StateListDrawable drawable = new StateListDrawable();
  drawable.addState(new int[] { -android.R.attr.state_enabled }, createCircleDrawable(mColorDisabled, strokeWidth));
  drawable.addState(new int[] { android.R.attr.state_pressed }, createCircleDrawable(mColorPressed, strokeWidth));
  drawable.addState(new int[] { }, createCircleDrawable(mColorNormal, strokeWidth));
  return drawable;
}
 
Example 11
Source Project: uPods-android   File: UIHelper.java    License: Apache License 2.0 5 votes vote down vote up
private static StateListDrawable getStateListDrawable(
        int normalColor, int pressedColor) {
    StateListDrawable states = new StateListDrawable();
    states.addState(new int[]{android.R.attr.state_pressed},
            new ColorDrawable(pressedColor));
    states.addState(new int[]{android.R.attr.state_focused},
            new ColorDrawable(pressedColor));
    states.addState(new int[]{android.R.attr.state_activated},
            new ColorDrawable(pressedColor));
    states.addState(new int[]{},
            new ColorDrawable(normalColor));
    return states;
}
 
Example 12
Source Project: TagFlowLayout   File: DefaultTagView.java    License: Apache License 2.0 5 votes vote down vote up
protected Drawable getBackgroundDrawable() {
    //设置字体颜色的选择器
    ColorStateList colorSateList = mContext.getResources().getColorStateList(R.color.secondary_text);
    setTextColor(colorSateList);

    GradientDrawable normal = new GradientDrawable();
    normal.setShape(GradientDrawable.RECTANGLE);
    normal.setCornerRadius(DensityUtils.dp2px(mContext, getTagRadius()));
    if (isSolid()) {
        normal.setColor(getNormalBackgroundColor());
    } else {
        normal.setStroke(DensityUtils.dp2px(mContext, getStrokeWidth()), getNormalBackgroundColor());
        normal.setColor(getBackgroundColor());
    }

    GradientDrawable pressed = new GradientDrawable();
    pressed.setShape(GradientDrawable.RECTANGLE);
    pressed.setCornerRadius(DensityUtils.dp2px(mContext, getTagRadius()));
    if (isSolid()) {
        pressed.setColor(getPressedBackgroundColor());
    } else {
        pressed.setStroke(DensityUtils.dp2px(mContext, getStrokeWidth()), getPressedBackgroundColor());
        pressed.setColor(getPressedBackgroundColor());
    }

    StateListDrawable selector = new StateListDrawable();
    selector.addState(new int[]{android.R.attr.state_pressed}, pressed);
    selector.addState(new int[]{}, normal);
    return selector;
}
 
Example 13
Source Project: timecat   File: CircularProgressButton.java    License: Apache License 2.0 5 votes vote down vote up
private void initErrorStateDrawable() {
    int colorPressed = getPressedColor(mErrorColorState);

    StrokeGradientDrawable drawablePressed = createDrawable(colorPressed);
    mErrorStateDrawable = new StateListDrawable();

    mErrorStateDrawable.addState(new int[]{android.R.attr.state_pressed}, drawablePressed.getGradientDrawable());
    mErrorStateDrawable.addState(StateSet.WILD_CARD, background.getGradientDrawable());
}
 
Example 14
public static Drawable createSelectorDrawable(Context context, @ColorInt int color) {
    final StateListDrawable baseSelector = new StateListDrawable();
    baseSelector.addState(new int[]{android.R.attr.state_activated}, new ColorDrawable(color));

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        return new RippleDrawable(ColorStateList.valueOf(color), baseSelector, new ColorDrawable(Color.WHITE));
    }

    baseSelector.addState(new int[]{}, new ColorDrawable(Color.TRANSPARENT));
    baseSelector.addState(new int[]{android.R.attr.state_pressed}, new ColorDrawable(color));
    return baseSelector;
}
 
Example 15
Source Project: Genius-Android   File: EditText.java    License: Apache License 2.0 5 votes vote down vote up
private static StateListDrawable createStateListDrawable(Drawable drawable[]) {
    if (drawable == null || drawable.length < 4)
        return null;
    StateListDrawable states = new StateListDrawable();
    states.addState(new int[]{android.R.attr.state_pressed, android.R.attr.state_enabled}, drawable[0]);
    states.addState(new int[]{android.R.attr.state_focused, android.R.attr.state_enabled}, drawable[1]);
    states.addState(new int[]{android.R.attr.state_enabled}, drawable[2]);
    states.addState(new int[]{-android.R.attr.state_enabled}, drawable[3]);
    return states;
}
 
Example 16
Source Project: iTab   File: MainActivity.java    License: Apache License 2.0 4 votes vote down vote up
private Drawable createTabDrawable(int resId) {
	Resources res = getResources();
	StateListDrawable states = new StateListDrawable();

	final Options options = new Options();
	options.inPreferredConfig = Config.ARGB_8888;
	
	Bitmap icon = BitmapFactory.decodeResource(res, resId, options);
	
	Bitmap unselected = TabBitmap.createUnselectedBitmap(res, icon);
	Bitmap selected = TabBitmap.createSelectedBitmap(res, icon);
	
	icon.recycle();
	
	states.addState(new int[] { android.R.attr.state_selected }, new BitmapDrawable(res, selected));
	states.addState(new int[] { android.R.attr.state_enabled }, new BitmapDrawable(res, unselected));
	
	return states;
}
 
Example 17
Source Project: UIWidget   File: RadiusTextDelegate.java    License: Apache License 2.0 4 votes vote down vote up
/**
 * 设置TextView的Left、Top、Right、Bottom Drawable属性
 *
 * @param normal
 * @param checked
 * @param selected
 * @param pressed
 * @param disabled
 * @param gravity
 */
private void setTextDrawable(Drawable normal, Drawable checked, Drawable selected, Drawable pressed,
                             Drawable disabled, int gravity) {
    int index = 0;
    int width = mLeftDrawableWidth;
    int height = mLeftDrawableHeight;
    float radius = mLeftDrawableColorCircleEnable ? width + height / 2 : mLeftDrawableColorRadius;
    switch (gravity) {
        case Gravity.TOP:
            index = 1;
            width = mTopDrawableWidth;
            height = mTopDrawableHeight;
            radius = mTopDrawableColorCircleEnable ? width + height / 2 : mTopDrawableColorRadius;
            break;
        case Gravity.RIGHT:
            index = 2;
            width = mRightDrawableWidth;
            height = mRightDrawableHeight;
            radius = mRightDrawableColorCircleEnable ? width + height / 2 : mRightDrawableColorRadius;
            break;
        case Gravity.BOTTOM:
            index = 3;
            width = mBottomDrawableWidth;
            height = mBottomDrawableHeight;
            radius = mBottomDrawableColorCircleEnable ? width + height / 2 : mBottomDrawableColorRadius;
            break;
    }
    Drawable[] drawables = mTextView.getCompoundDrawables();
    if (normal == null && pressed == null && disabled == null
            && selected == null && checked == null) {
        drawables[index] = null;
    } else {
        StateListDrawable stateDrawable = new StateListDrawable();
        if (checked != null) {
            stateDrawable.addState(new int[]{mStateChecked}, getStateDrawable(checked, radius, width, height));
        }
        if (selected != null) {
            stateDrawable.addState(new int[]{mStateSelected}, getStateDrawable(selected, radius, width, height));
        }
        if (pressed != null) {
            stateDrawable.addState(new int[]{mStatePressed}, getStateDrawable(pressed, radius, width, height));
        }
        if (disabled != null) {
            stateDrawable.addState(new int[]{mStateDisabled}, getStateDrawable(disabled, radius, width, height));
        }
        if (normal != null) {
            stateDrawable.addState(new int[]{}, getStateDrawable(normal, radius, width, height));
        }
        DrawableUtil.setDrawableWidthHeight(stateDrawable, width, height);
        drawables[index] = stateDrawable;
    }
    mTextView.setCompoundDrawables(drawables[0], drawables[1], drawables[2], drawables[3]);
}
 
Example 18
@Override
public boolean updateStyle(List<PXRuleSet> ruleSets, List<PXStylerContext> contexts) {
    if (!super.updateStyle(ruleSets, contexts)) {
        return false;
    }
    // Apply the toggle Drawables wrapped in a LayerDrawable. The drawable
    // that will go into this LayerDrawable has to be a StateListDrawable,
    // so we construct it using the 'on' and 'off' states to provide the
    // toggle images in its different states.
    if (!contexts.isEmpty()) {
        // same styleable for all contexts
        Object styleable = contexts.get(0).getStyleable();
        if (styleable instanceof ToggleButton) {
            // prepare the StateListDrawable
            StateListDrawable toggleDrawable = new StateListDrawable();
            for (PXStylerContext context : contexts) {
                Drawable drawable = context.getBackgroundImage();
                if (drawable != null) {
                    if (ON.equals(context.getActiveStateName())) {
                        toggleDrawable.addState(new int[] { android.R.attr.state_checked },
                                drawable);
                    } else {
                        toggleDrawable.addState(new int[] { -android.R.attr.state_checked },
                                drawable);
                    }
                }
            }
            ToggleButton toggleButton = (ToggleButton) styleable;
            Drawable background = toggleButton.getBackground();
            if (toggleDrawable != null) {
                if (background instanceof LayerDrawable) {
                    LayerDrawable layerDrawable = (LayerDrawable) background;
                    layerDrawable.setDrawableByLayerId(android.R.id.toggle, toggleDrawable);
                } else if (background instanceof StateListDrawable) {
                    // just replace it
                    toggleButton.setBackgroundDrawable(toggleDrawable);
                }
            }
        }
    }
    return true;
}
 
Example 19
Source Project: AppUpdate   File: UpdateDialog.java    License: Apache License 2.0 4 votes vote down vote up
private void initView(View view) {
    View ibClose = view.findViewById(R.id.ib_close);
    ImageView ivBg = view.findViewById(R.id.iv_bg);
    TextView title = view.findViewById(R.id.tv_title);
    TextView size = view.findViewById(R.id.tv_size);
    TextView description = view.findViewById(R.id.tv_description);
    progressBar = view.findViewById(R.id.np_bar);
    progressBar.setVisibility(forcedUpgrade ? View.VISIBLE : View.GONE);
    update = view.findViewById(R.id.btn_update);
    update.setTag(0);
    View line = view.findViewById(R.id.line);
    update.setOnClickListener(this);
    ibClose.setOnClickListener(this);
    //自定义
    if (dialogImage != -1) {
        ivBg.setBackgroundResource(dialogImage);
    }
    if (dialogButtonTextColor != -1) {
        update.setTextColor(dialogButtonTextColor);
    }
    if (dialogButtonColor != -1) {
        StateListDrawable drawable = new StateListDrawable();
        GradientDrawable colorDrawable = new GradientDrawable();
        colorDrawable.setColor(dialogButtonColor);
        colorDrawable.setCornerRadius(DensityUtil.dip2px(context, 3));
        drawable.addState(new int[]{android.R.attr.state_pressed}, colorDrawable);
        drawable.addState(new int[]{}, colorDrawable);
        update.setBackgroundDrawable(drawable);
    }
    if (dialogProgressBarColor != -1) {
        progressBar.setReachedBarColor(dialogProgressBarColor);
        progressBar.setProgressTextColor(dialogProgressBarColor);
    }
    //强制升级
    if (forcedUpgrade) {
        line.setVisibility(View.GONE);
        ibClose.setVisibility(View.GONE);
        setOnKeyListener(new OnKeyListener() {
            @Override
            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                //屏蔽返回键
                return keyCode == KeyEvent.KEYCODE_BACK;
            }
        });
    }
    //设置界面数据
    if (!TextUtils.isEmpty(manager.getApkVersionName())) {
        String newVersion = context.getResources().getString(R.string.dialog_new);
        title.setText(String.format(newVersion, manager.getApkVersionName()));
    }
    if (!TextUtils.isEmpty(manager.getApkSize())) {
        String newVersionSize = context.getResources().getString(R.string.dialog_new_size);
        size.setText(String.format(newVersionSize, manager.getApkSize()));
        size.setVisibility(View.VISIBLE);
    }
    description.setText(manager.getApkDescription());
}
 
Example 20
Source Project: Aurora   File: DrawableProvider.java    License: Apache License 2.0 3 votes vote down vote up
/**
 * 获得选择器
 *
 * @param normalDrawable
 * @param pressDrawable
 * @return
 */
public static Drawable getStateListDrawable(Drawable normalDrawable, Drawable pressDrawable) {
    StateListDrawable stateListDrawable = new StateListDrawable();
    stateListDrawable.addState(new int[]{android.R.attr.state_checked}, pressDrawable);
    stateListDrawable.addState(new int[]{}, normalDrawable);
    return stateListDrawable;
}