CustomBarpublic 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.ResourceValue | getResourceValue(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.TextView | getStyleableTextView()
| protected void | loadIcon(int index, java.lang.String iconName, com.android.resources.Density density)
loadIcon(index, iconName, density, false);
| protected void | loadIcon(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 void | setStyle(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.TextView | setText(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 void | setText(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);
|
|