java类android.graphics.drawable.ScaleDrawable的实例源码

MaterialProgressDrawable.java 文件源码 项目:ActionBarProgress 阅读 38 收藏 0 点赞 0 评论 0
public static MaterialProgressDrawable create(@NonNull Context context) {
    Drawable[] layers = new Drawable[3];

    layers[0] = new ColorDrawable(ThemeUtils.getDisabledThemeAttrColor(context, R.attr.colorControlNormal));

    Drawable secondaryProgress = new ColorDrawable(ThemeUtils.getDisabledThemeAttrColor(context, R.attr.colorControlActivated));
    layers[1] = new ScaleDrawable(secondaryProgress, Gravity.START, 1f, -1f);

    Drawable progress = new ColorDrawable(ThemeUtils.getThemeAttrColor(context, R.attr.colorControlActivated));
    layers[2] = new ScaleDrawable(progress, Gravity.START, 1f, -1f);

    return new MaterialProgressDrawable(layers);
}
ClassDescScaleDrawable.java 文件源码 项目:itsnat_droid 阅读 18 收藏 0 点赞 0 评论 0
@Override
public ElementDrawableChildRoot createElementDrawableChildRoot(DOMElemDrawable rootElem, AttrDrawableContext attrCtx)
{
    ElementDrawableChildRoot elementDrawableRoot = new ElementDrawableChildRoot();

    XMLInflaterContext xmlInflaterContext = attrCtx.getXMLInflaterContext();

    XMLInflaterDrawable xmlInflaterDrawable = attrCtx.getXMLInflaterDrawable();
    xmlInflaterDrawable.processChildElements(rootElem, elementDrawableRoot,attrCtx);
    ArrayList<ElementDrawableChildBase> childList = elementDrawableRoot.getElementDrawableChildList();

    Drawable childDrawable = getDrawableChild("drawable", rootElem, xmlInflaterContext, childList);

    XMLInflaterRegistry xmlInflaterRegistry = classMgr.getXMLInflaterRegistry();

    DOMAttr attrGravity = rootElem.getDOMAttribute(NamespaceUtil.XMLNS_ANDROID, "scaleGravity");
    int gravity = attrGravity != null ? AttrDesc.parseMultipleName(attrGravity.getValue(), GravityUtil.nameValueMap) : Gravity.LEFT; // Valor concreto no puede ser un recurso

    DOMAttr attrScaleHeight = rootElem.getDOMAttribute(NamespaceUtil.XMLNS_ANDROID, "scaleHeight");
    float scaleHeight = attrScaleHeight != null ? getPercent(xmlInflaterRegistry.getDimensionOrString(attrScaleHeight.getResourceDesc(), xmlInflaterContext)) : -1; // Se puede poner en un values/ como un <string> o como un <dimen> (aunque luego se procese como un String)

    DOMAttr attrScaleWidth = rootElem.getDOMAttribute(NamespaceUtil.XMLNS_ANDROID, "scaleWidth");
    float scaleWidth = attrScaleWidth != null ? getPercent(xmlInflaterRegistry.getDimensionOrString(attrScaleWidth.getResourceDesc(),xmlInflaterContext)) : -1;

    ScaleDrawable drawable = new ScaleDrawable(childDrawable,gravity,scaleWidth,scaleHeight);

    setCallback(childDrawable,drawable);

    elementDrawableRoot.setDrawable(drawable);

    return elementDrawableRoot;
}
SeekBarWidget.java 文件源码 项目:android_ui 阅读 35 收藏 0 点赞 0 评论 0
/**
 * <b>Note, that on pre {@link android.os.Build.VERSION_CODES#LOLLIPOP LOLLIPOP} Android versions
 * this method will return an instance of {@link TintDrawable TintDrawable} if tint has been applied
 * via {@link #setThumbTintList(ColorStateList)}.</b>
 * <p>
 * The original wrapped drawable can be obtained via {@link TintDrawable#getDrawable()}.
 */
@Override
public Drawable getThumb() {
    if (mThumb instanceof ScaleDrawable) return ((ScaleDrawable) mThumb).getDrawable();
    return mThumb;
}
SeekBarWidget.java 文件源码 项目:android_ui 阅读 27 收藏 0 点赞 0 评论 0
/**
 * Updates a scale level of the given <var>drawable</var> according to the specified scale
 * value.
 *
 * @param drawable The drawable of which scale level to update.
 * @param scale    The scale value from the range {@code [0.0, 1.0]}.
 */
private void updateDrawableScale(Drawable drawable, float scale) {
    if (drawable instanceof ScaleDrawable) drawable.setLevel(Math.round(scale * MAX_LEVEL));
}


问题


面经


文章

微信
公众号

扫码关注公众号