addState()源码实例Demo

android.graphics.drawable.StateListDrawable#addState()源码实例Demo

下面列出了android.graphics.drawable.StateListDrawable#addState() 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: fingen   文件: TagView.java
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;
}
 
源代码2 项目: QButton   文件: QButton.java
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);

    }
 
源代码3 项目: TagView   文件: TagView.java
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;
}
 
源代码4 项目: UltimateAndroid   文件: RelativeLayoutFeedback.java
private void setSelector(TypedArray a) {
    touchFeedbackDrawable = new StateListDrawable();
    touchFeedbackDrawable.addState(
            new int[]{android.R.attr.state_pressed},
            getColor(a)
    );
}
 
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;
}
 
源代码6 项目: SegmentedButton   文件: RippleHelper.java
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;
}
 
源代码7 项目: proteus   文件: DrawableValue.java
@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);
}
 
源代码8 项目: ListBuddies   文件: RelativeLayoutFeedback.java
private void setSelector(TypedArray a) {
    touchFeedbackDrawable = new StateListDrawable();
    touchFeedbackDrawable.addState(
            new int[]{android.R.attr.state_pressed},
            getColor(a)
    );
}
 
源代码9 项目: SimpleProject   文件: ViewBgUtil.java
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;
}
 
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;
}
 
源代码11 项目: uPods-android   文件: UIHelper.java
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;
}
 
源代码12 项目: TagFlowLayout   文件: DefaultTagView.java
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;
}
 
源代码13 项目: timecat   文件: CircularProgressButton.java
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());
}
 
源代码14 项目: RetroMusicPlayer   文件: ViewUtil.java
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;
}
 
源代码15 项目: Genius-Android   文件: EditText.java
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;
}
 
源代码16 项目: iTab   文件: MainActivity.java
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;
}
 
源代码17 项目: UIWidget   文件: RadiusTextDelegate.java
/**
 * 设置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]);
}
 
@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;
}
 
源代码19 项目: AppUpdate   文件: UpdateDialog.java
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());
}
 
源代码20 项目: Aurora   文件: DrawableProvider.java
/**
 * 获得选择器
 *
 * @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;
}