Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9600c98 authored by Deepanshu Gupta's avatar Deepanshu Gupta Committed by Android Git Automerger
Browse files

am 7eb81868: am b1ad4a15: LayoutLib: Fix true transparency in status bar. [DO NOT MERGE]

* commit '7eb81868':
  LayoutLib: Fix true transparency in status bar. [DO NOT MERGE]
parents 5769732e 7eb81868
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.graphics.Bitmap_Delegate;
@@ -227,16 +228,18 @@ abstract class CustomBar extends LinearLayout {
     * Find the background color for this bar from the theme attributes. Only relevant to StatusBar
     * and NavigationBar.
     * <p/>
     * Returns 0 if not found.
     * Returns null if not found.
     *
     * @param colorAttrName the attribute name for the background color
     * @param translucentAttrName the attribute name for the translucency property of the bar.
     *
     * @throws NumberFormatException if color resolved to an invalid string.
     */
    protected int getBarColor(@NonNull String colorAttrName, @NonNull String translucentAttrName) {
    @Nullable
    protected Integer getBarColor(@NonNull String colorAttrName,
            @NonNull String translucentAttrName) {
        if (!Config.isGreaterOrEqual(mSimulatedPlatformVersion, LOLLIPOP)) {
            return 0;
            return null;
        }
        RenderResources renderResources = getContext().getRenderResources();
        // First check if the bar is translucent.
@@ -251,10 +254,11 @@ abstract class CustomBar extends LinearLayout {
        if (transparent) {
            return getColor(renderResources, colorAttrName);
        }
        return 0;
        return null;
    }

    private static int getColor(RenderResources renderResources, String attr) {
    @Nullable
    private static Integer getColor(RenderResources renderResources, String attr) {
        // From ?attr/foo to @color/bar. This is most likely an ItemResourceValue.
        ResourceValue resource = renderResources.findItemInTheme(attr, true);
        // Form @color/bar to the #AARRGGBB
@@ -275,7 +279,7 @@ abstract class CustomBar extends LinearLayout {
                }
            }
        }
        return 0;
        return null;
    }

    private ResourceValue getResourceValue(String reference) {
+2 −2
Original line number Diff line number Diff line
@@ -62,8 +62,8 @@ public class NavigationBar extends CustomBar {
        super(context, orientation, "/bars/navigation_bar.xml", "navigation_bar.xml",
                simulatedPlatformVersion);

        int color = getBarColor(ATTR_COLOR, ATTR_TRANSLUCENT);
        setBackgroundColor(color == 0 ? 0xFF000000 : color);
        Integer color = getBarColor(ATTR_COLOR, ATTR_TRANSLUCENT);
        setBackgroundColor(color == null ? 0xFF000000 : color);

        // Cannot access the inside items through id because no R.id values have been
        // created for them.
+3 −2
Original line number Diff line number Diff line
@@ -71,8 +71,9 @@ public class StatusBar extends CustomBar {
        // FIXME: use FILL_H?
        setGravity(Gravity.START | Gravity.TOP | Gravity.RIGHT);

        int color = getBarColor(ATTR_COLOR, ATTR_TRANSLUCENT);
        setBackgroundColor(color == 0 ? Config.getStatusBarColor(simulatedPlatformVersion) : color);
        Integer color = getBarColor(ATTR_COLOR, ATTR_TRANSLUCENT);
        setBackgroundColor(
                color == null ? Config.getStatusBarColor(simulatedPlatformVersion) : color);

        // Cannot access the inside items through id because no R.id values have been
        // created for them.
+1 −2
Original line number Diff line number Diff line
@@ -421,8 +421,7 @@ public class RenderSessionImpl extends RenderAction<SessionParams> {
                    gc.setComposite(AlphaComposite.Src);

                    gc.setColor(new Color(0x00000000, true));
                    gc.fillRect(0, 0,
                            mMeasuredScreenWidth, mMeasuredScreenHeight);
                    gc.fillRect(0, 0, mMeasuredScreenWidth, mMeasuredScreenHeight);

                    // done
                    gc.dispose();