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

Commit f619ffcc authored by Selim Cinek's avatar Selim Cinek
Browse files

Adapted the measuring of notification content view

We are now measuring all notifications content views
with AT_MOST but with an upperboundary. This allows us
to put custom views inside our normal views and still not
blow up the small size. Also adapted the dimens not to
clamp the templates

Bug: 24866646
Change-Id: If9053d84a9d91e6bc9964f64b170e3c3260a807d
parent 593610c2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@
    <item name="status_bar_icon_scale_factor" format="float" type="dimen">1.0</item>

    <!-- Height of a small notification in the status bar-->
    <dimen name="notification_min_height">84dp</dimen>
    <dimen name="notification_min_height">86dp</dimen>

    <!-- Height of a small notification in the status bar which was used before android N -->
    <dimen name="notification_min_height_legacy">64dp</dimen>
+16 −11
Original line number Diff line number Diff line
@@ -240,7 +240,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
                != com.android.internal.R.id.status_bar_latest_event_content;
        int headsUpheight = headsUpCustom && beforeN ? mMaxHeadsUpHeightLegacy
                : mMaxHeadsUpHeight;
        mMaxViewHeight = mNotificationMaxHeight;
        mPrivateLayout.setHeights(minHeight, headsUpheight, mNotificationMaxHeight);
        mPublicLayout.setHeights(minHeight, headsUpheight, mNotificationMaxHeight);
    }
@@ -542,16 +541,23 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
    }

    private void initDimens() {
        mNotificationMinHeightLegacy =  getResources().getDimensionPixelSize(
                R.dimen.notification_min_height_legacy);
        mNotificationMinHeight =  getResources().getDimensionPixelSize(
                R.dimen.notification_min_height);
        mNotificationMaxHeight =  getResources().getDimensionPixelSize(
                R.dimen.notification_max_height);
        mMaxHeadsUpHeightLegacy =  getResources().getDimensionPixelSize(
        mNotificationMinHeightLegacy = getFontScaledHeight(R.dimen.notification_min_height_legacy);
        mNotificationMinHeight = getFontScaledHeight(R.dimen.notification_min_height);
        mNotificationMaxHeight = getFontScaledHeight(R.dimen.notification_max_height);
        mMaxHeadsUpHeightLegacy = getFontScaledHeight(
                R.dimen.notification_max_heads_up_height_legacy);
        mMaxHeadsUpHeight =  getResources().getDimensionPixelSize(
                R.dimen.notification_max_heads_up_height);
        mMaxHeadsUpHeight = getFontScaledHeight(R.dimen.notification_max_heads_up_height);
    }

    /**
     * @param dimenId the dimen to look up
     * @return the font scaled dimen as if it were in sp but doesn't shrink sizes below dp
     */
    private int getFontScaledHeight(int dimenId) {
        int dimensionPixelSize = getResources().getDimensionPixelSize(dimenId);
        float factor = Math.max(1.0f, getResources().getDisplayMetrics().scaledDensity /
                getResources().getDisplayMetrics().density);
        return (int) (dimensionPixelSize * factor);
    }

    /**
@@ -561,7 +567,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
    public void reset() {
        super.reset();
        final boolean wasExpanded = isExpanded();
        mMaxViewHeight = 0;
        mExpandable = false;
        mHasUserChangedExpansion = false;
        mUserLocked = false;
+0 −4
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.android.systemui.R;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;

import java.util.ArrayList;
@@ -35,7 +34,6 @@ import java.util.ArrayList;
public abstract class ExpandableView extends FrameLayout {

    protected OnHeightChangedListener mOnHeightChangedListener;
    protected int mMaxViewHeight;
    private int mActualHeight;
    protected int mClipTopAmount;
    private boolean mActualHeightInitialized;
@@ -49,8 +47,6 @@ public abstract class ExpandableView extends FrameLayout {

    public ExpandableView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mMaxViewHeight = getResources().getDimensionPixelSize(
                R.dimen.notification_max_height);
    }

    @Override
+2 −2
Original line number Diff line number Diff line
@@ -144,11 +144,11 @@ public class NotificationContentView extends FrameLayout {
        }
        if (mContractedChild != null) {
            int heightSpec;
            if (shouldContractedBeFixedSize()) {
            int size = Math.min(maxSize, mSmallHeight);
            if (shouldContractedBeFixedSize()) {
                heightSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
            } else {
                heightSpec = MeasureSpec.makeMeasureSpec(maxSize, MeasureSpec.AT_MOST);
                heightSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.AT_MOST);
            }
            mContractedChild.measure(widthMeasureSpec, heightSpec);
            int measuredHeight = mContractedChild.getMeasuredHeight();