FileDocCategorySizeDatePackage
CustomBar.javaAPI DocAndroid 5.1 API8521Thu Mar 12 22:22:44 GMT 2015com.android.layoutlib.bridge.bars

CustomBar

public abstract class CustomBar extends android.widget.LinearLayout
Base "bar" class for the window decor around the the edited layout. This is basically an horizontal layout that loads a given layout on creation (it is read through {@link Class#getResourceAsStream(String)}). The given layout should be a merge layout so that all the children belong to this class directly. It also provides a few utility methods to configure the content of the layout.

Fields Summary
private final int
mSimulatedPlatformVersion
Constructors Summary
protected CustomBar(android.content.Context context, int orientation, String layoutPath, String name, int simulatedPlatformVersion)

        super(context);
        mSimulatedPlatformVersion = simulatedPlatformVersion;
        setOrientation(orientation);
        if (orientation == LinearLayout.HORIZONTAL) {
            setGravity(Gravity.CENTER_VERTICAL);
        } else {
            setGravity(Gravity.CENTER_HORIZONTAL);
        }

        LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
                Context.LAYOUT_INFLATER_SERVICE);

        XmlPullParser parser = ParserFactory.create(getClass().getResourceAsStream(layoutPath),
                name);

        BridgeXmlBlockParser bridgeParser = new BridgeXmlBlockParser(
                parser, (BridgeContext) context, false /*platformFile*/);

        try {
            inflater.inflate(bridgeParser, this, true);
        } finally {
            bridgeParser.ensurePopped();
        }
    
Methods Summary
private com.android.ide.common.rendering.api.ResourceValuegetResourceValue(java.lang.String reference)

        BridgeContext bridgeContext = (BridgeContext) mContext;
        RenderResources res = bridgeContext.getRenderResources();

        // find the resource
        ResourceValue value = res.findResValue(reference, false /*isFramework*/);

        // resolve it if needed
        return res.resolveResValue(value);
    
protected abstract android.widget.TextViewgetStyleableTextView()

protected voidloadIcon(int index, java.lang.String iconName, com.android.resources.Density density)

        loadIcon(index, iconName, density, false);
    
protected voidloadIcon(int index, java.lang.String iconName, com.android.resources.Density density, boolean isRtl)

        View child = getChildAt(index);
        if (child instanceof ImageView) {
            ImageView imageView = (ImageView) child;

            LayoutDirection dir = isRtl ? LayoutDirection.RTL : null;
            IconLoader iconLoader = new IconLoader(iconName, density, mSimulatedPlatformVersion,
                    dir);
            InputStream stream = iconLoader.getIcon();

            if (stream != null) {
                density = iconLoader.getDensity();
                String path = iconLoader.getPath();
                // look for a cached bitmap
                Bitmap bitmap = Bridge.getCachedBitmap(path, true /*isFramework*/);
                if (bitmap == null) {
                    try {
                        bitmap = Bitmap_Delegate.createBitmap(stream, false /*isMutable*/, density);
                        Bridge.setCachedBitmap(path, bitmap, true /*isFramework*/);
                    } catch (IOException e) {
                        return;
                    }
                }

                if (bitmap != null) {
                    BitmapDrawable drawable = new BitmapDrawable(getContext().getResources(),
                            bitmap);
                    imageView.setImageDrawable(drawable);
                }
            }
        }
    
protected voidsetStyle(java.lang.String themeEntryName)


        BridgeContext bridgeContext = (BridgeContext) mContext;
        RenderResources res = bridgeContext.getRenderResources();

        ResourceValue value = res.findItemInTheme(themeEntryName, true /*isFrameworkAttr*/);
        value = res.resolveResValue(value);

        if (!(value instanceof StyleResourceValue)) {
            return;
        }

        StyleResourceValue style = (StyleResourceValue) value;

        // get the background
        ResourceValue backgroundValue = res.findItemInStyle(style, "background",
                true /*isFrameworkAttr*/);
        backgroundValue = res.resolveResValue(backgroundValue);
        if (backgroundValue != null) {
            Drawable d = ResourceHelper.getDrawable(backgroundValue, bridgeContext);
            if (d != null) {
                setBackground(d);
            }
        }

        TextView textView = getStyleableTextView();
        if (textView != null) {
            // get the text style
            ResourceValue textStyleValue = res.findItemInStyle(style, "titleTextStyle",
                    true /*isFrameworkAttr*/);
            textStyleValue = res.resolveResValue(textStyleValue);
            if (textStyleValue instanceof StyleResourceValue) {
                StyleResourceValue textStyle = (StyleResourceValue) textStyleValue;

                ResourceValue textSize = res.findItemInStyle(textStyle, "textSize",
                        true /*isFrameworkAttr*/);
                textSize = res.resolveResValue(textSize);

                if (textSize != null) {
                    TypedValue out = new TypedValue();
                    if (ResourceHelper.parseFloatAttribute("textSize", textSize.getValue(), out,
                            true /*requireUnit*/)) {
                        textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
                                out.getDimension(bridgeContext.getResources().getDisplayMetrics()));
                    }
                }


                ResourceValue textColor = res.findItemInStyle(textStyle, "textColor",
                        true /*isFrameworkAttr*/);
                textColor = res.resolveResValue(textColor);
                if (textColor != null) {
                    ColorStateList stateList = ResourceHelper.getColorStateList(
                            textColor, bridgeContext);
                    if (stateList != null) {
                        textView.setTextColor(stateList);
                    }
                }
            }
        }
    
protected android.widget.TextViewsetText(int index, java.lang.String string, boolean reference)

        View child = getChildAt(index);
        if (child instanceof TextView) {
            TextView textView = (TextView) child;
            setText(textView, string, reference);
            return textView;
        }

        return null;
    
private voidsetText(android.widget.TextView textView, java.lang.String string, boolean reference)

        if (reference) {
            ResourceValue value = getResourceValue(string);
            if (value != null) {
                string = value.getValue();
            }
        }
        textView.setText(string);