Skip to content
This repository was archived by the owner on Sep 3, 2024. It is now read-only.

Commit c14e524

Browse files
OneUI4: App Bar, Edge Effect (#48)
Signed-off-by: BlackMesa123 <[email protected]> Co-authored-by: BlackMesa123 <[email protected]>
1 parent 743cbda commit c14e524

File tree

29 files changed

+509
-307
lines changed

29 files changed

+509
-307
lines changed
-314 Bytes
Loading
154 Bytes
Loading

yanndroid/oneui/src/main/java/androidx/viewpager/widget/SeslViewPager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1309,8 +1309,8 @@ public void initViewPager() {
13091309
this.mMaximumVelocity = var2.getScaledMaximumFlingVelocity();
13101310
this.mLeftEdge = new SamsungEdgeEffect(var1);
13111311
this.mRightEdge = new SamsungEdgeEffect(var1);
1312-
this.mLeftEdge.setSeslHostView(this);
1313-
this.mRightEdge.setSeslHostView(this);
1312+
this.mLeftEdge.setHostView(this, false);
1313+
this.mRightEdge.setHostView(this, false);
13141314
this.mFlingDistance = (int) (25.0F * var3);
13151315
this.mCloseEnough = (int) (2.0F * var3);
13161316
this.mDefaultGutterSize = (int) (var3 * 16.0F);

yanndroid/oneui/src/main/java/de/dlyt/yanndroid/oneui/layout/ToolbarLayout.java

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public class ToolbarLayout extends LinearLayout {
7676
public static final int MAIN_CONTENT = 6;
7777
public static final int FOOTER_CONTENT = 7;
7878
private static String TAG = "ToolbarLayout";
79+
private boolean mIsOneUI4;
7980
public ViewGroup navigationBadgeBackground;
8081
public TextView navigationBadgeText;
8182
public ViewGroup moreOverflowBadgeBackground;
@@ -170,6 +171,8 @@ public ToolbarLayout(Context context, @Nullable AttributeSet attrs) {
170171
mContext = context;
171172
mActivity = getActivity();
172173

174+
mIsOneUI4 = context.getTheme().obtainStyledAttributes(new int[]{R.attr.isOneUI4}).getBoolean(0, false);
175+
173176
TypedArray attr = mContext.getTheme().obtainStyledAttributes(attrs, R.styleable.ToolBarLayout, 0, 0);
174177

175178
try {
@@ -283,10 +286,17 @@ public LayoutParams generateLayoutParams(AttributeSet attrs) {
283286
return new Drawer_Toolbar_LayoutParams(getContext(), attrs);
284287
}
285288

289+
@Override
290+
public void onAttachedToWindow() {
291+
super.onAttachedToWindow();
292+
resetToolbarHeight();
293+
}
294+
286295
@Override
287296
protected void onConfigurationChanged(Configuration newConfig) {
288297
super.onConfigurationChanged(newConfig);
289298
refreshLayout(newConfig);
299+
resetToolbarHeight();
290300
}
291301

292302
private AppCompatActivity getActivity() {
@@ -304,6 +314,10 @@ private float getDIPForPX(int i) {
304314
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) i, getResources().getDisplayMetrics());
305315
}
306316

317+
private int getToolbarTopPadding() {
318+
return mIsOneUI4 ? getResources().getDimensionPixelSize(R.dimen.sesl4_action_bar_top_padding) : 0;
319+
}
320+
307321
private int getWindowHeight() {
308322
try {
309323
WindowManager windowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
@@ -342,14 +356,14 @@ private void resetAppBarHeight() {
342356
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
343357
appBarLayout.setActivated(false);
344358
bottomPadding = 0;
345-
params.height = (int) getResources().getDimension(R.dimen.sesl_action_bar_default_height);
359+
params.height = (int) getResources().getDimension(mIsOneUI4 ? R.dimen.sesl4_action_bar_default_height : R.dimen.sesl_action_bar_default_height);
346360
} else {
347361
appBarLayout.setActivated(true);
348362
setExpanded(mExpanded, false);
349-
bottomPadding = getResources().getDimensionPixelSize(R.dimen.sesl_extended_appbar_bottom_padding);
363+
bottomPadding = mIsOneUI4 ? 0 : getResources().getDimensionPixelSize(R.dimen.sesl_extended_appbar_bottom_padding);
350364

351365
TypedValue outValue = new TypedValue();
352-
getResources().getValue(R.dimen.sesl_appbar_height_proportion, outValue, true);
366+
getResources().getValue(mIsOneUI4 ? R.dimen.sesl4_appbar_height_proportion : R.dimen.sesl_appbar_height_proportion, outValue, true);
353367

354368
params.height = (int) ((float) windowHeight * outValue.getFloat());
355369
}
@@ -360,6 +374,17 @@ private void resetAppBarHeight() {
360374
Log.w(TAG + ".resetAppBarHeight", "appBarLayout is null.");
361375
}
362376

377+
private void resetToolbarHeight() {
378+
if (toolbar != null) {
379+
toolbar.setPaddingRelative(mSelectMode || mSearchMode || navigationButtonVisible ? 0 : getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_content_inset), getToolbarTopPadding(), 0, 0);
380+
381+
ViewGroup.LayoutParams lp = toolbar.getLayoutParams();
382+
lp.height = lp.height + getToolbarTopPadding();
383+
toolbar.setLayoutParams(lp);
384+
} else
385+
Log.w(TAG + ".resetToolbarHeight", "toolbar is null.");
386+
}
387+
363388
//
364389
// AppBar methods
365390
//
@@ -396,7 +421,7 @@ public void setSubtitle(CharSequence subtitle) {
396421

397422
private void updateCollapsedSubtitleVisibility() {
398423
TypedValue outValue = new TypedValue();
399-
getResources().getValue(R.dimen.sesl_appbar_height_proportion, outValue, true);
424+
getResources().getValue(mIsOneUI4 ? R.dimen.sesl4_appbar_height_proportion : R.dimen.sesl_appbar_height_proportion, outValue, true);
400425
if (!mExpandable || outValue.getFloat() == 0.0) {
401426
collapsedSubTitleView.setVisibility((mSubtitle != null && mSubtitle.length() != 0) ? VISIBLE : GONE);
402427
} else {
@@ -667,7 +692,7 @@ public void setNavigationButtonIcon(Drawable navigationIcon) {
667692
public void setNavigationButtonVisible(boolean visible) {
668693
navigationButtonContainer.setVisibility(visible ? View.VISIBLE : View.GONE);
669694
if (!(mSelectMode || mSearchMode)) navigationButtonVisible = visible;
670-
toolbar.setPaddingRelative(mSelectMode || mSearchMode || visible ? 0 : getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_content_inset), 0, 0, 0);
695+
toolbar.setPaddingRelative(mSelectMode || mSearchMode || visible ? 0 : getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_content_inset), getToolbarTopPadding(), 0, 0);
671696
}
672697

673698
public void setNavigationButtonBadge(int count) {
@@ -754,7 +779,7 @@ private void addActionButton(MenuItem item) {
754779

755780
ToolbarImageButton actionButton = new ToolbarImageButton(mContext);
756781

757-
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(getResources().getDimensionPixelSize(R.dimen.sesl_overflow_button_min_width), getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_default_height));
782+
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(getResources().getDimensionPixelSize(R.dimen.sesl_overflow_button_min_width), getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_action_bar_default_height : R.dimen.sesl_action_bar_default_height));
758783

759784
actionButton.setBackgroundResource(R.drawable.sesl_action_bar_item_background);
760785
actionButton.setImageDrawable(item.getIcon());
@@ -790,7 +815,7 @@ private void setOverflowMenu(ArrayList<MenuItem> overflowItems) {
790815

791816
overflowButton = new ToolbarImageButton(mContext);
792817

793-
ViewGroup.LayoutParams lp2 = new ViewGroup.LayoutParams(getResources().getDimensionPixelSize(R.dimen.sesl_overflow_button_min_width), getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_default_height));
818+
ViewGroup.LayoutParams lp2 = new ViewGroup.LayoutParams(getResources().getDimensionPixelSize(R.dimen.sesl_overflow_button_min_width), getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_action_bar_default_height : R.dimen.sesl_action_bar_default_height));
794819

795820
overflowButton.setBackgroundResource(R.drawable.sesl_action_bar_item_background);
796821
overflowButton.setImageResource(R.drawable.sesl_ic_menu_overflow);
@@ -958,7 +983,7 @@ public void onOffsetChanged(SamsungAppBarLayout layout, int verticalOffset) {
958983

959984
LinearLayout collapsedTitleContainer = findViewById(R.id.toolbar_layout_collapsed_title_container);
960985

961-
if (appBarLayout.getHeight() <= ((int) getResources().getDimension(R.dimen.sesl_action_bar_height_with_padding))) {
986+
if (appBarLayout.getHeight() <= ((int) getResources().getDimension(mIsOneUI4 ? R.dimen.sesl4_action_bar_height_with_padding : R.dimen.sesl_action_bar_height_with_padding))) {
962987
collapsedTitleContainer.setAlpha(1.0f);
963988
} else {
964989
float collapsedTitleAlpha = ((150.0f / alphaRange) * (((float) layoutPosition) - toolbarTitleAlphaStart));

yanndroid/oneui/src/main/java/de/dlyt/yanndroid/oneui/sesl/appbar/SamsungAppBarLayout.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848

4949
@CoordinatorLayout.DefaultBehavior(SamsungAppBarLayout.Behavior.class)
5050
public class SamsungAppBarLayout extends LinearLayout implements ABLBehavior {
51+
private boolean mIsOneUI4;
5152
public static final Interpolator SINE_OUT_80_INTERPOLATOR = new PathInterpolator(0.17F, 0.17F, 0.2F, 1.0F);
5253
public static float mAppBarHeight;
5354
public boolean liftOnScroll;
@@ -82,6 +83,9 @@ public SamsungAppBarLayout(Context var1, AttributeSet var2) {
8283
@SuppressLint({"WrongConstant", "RestrictedApi"})
8384
public SamsungAppBarLayout(Context var1, AttributeSet var2, int var3) {
8485
super(var1, var2, var3);
86+
87+
mIsOneUI4 = var1.getTheme().obtainStyledAttributes(new int[]{R.attr.isOneUI4}).getBoolean(0, false);
88+
8589
this.mTotalScrollRange = -1;
8690
this.mDownPreScrollRange = -1;
8791
this.mDownScrollRange = -1;
@@ -120,9 +124,9 @@ public SamsungAppBarLayout(Context var1, AttributeSet var2, int var3) {
120124
}
121125

122126
TypedValue var5 = new TypedValue();
123-
this.getResources().getValue(R.dimen.sesl_appbar_height_proportion, var5, true);
127+
this.getResources().getValue(mIsOneUI4 ? R.dimen.sesl4_appbar_height_proportion : R.dimen.sesl_appbar_height_proportion, var5, true);
124128
this.mHeightPercent = var5.getFloat();
125-
if (var4.hasValue(R.styleable.SamsungAppBarLayout_android_paddingBottom)) {
129+
if (!mIsOneUI4 && var4.hasValue(R.styleable.SamsungAppBarLayout_android_paddingBottom)) {
126130
this.mBottomPadding = var4.getDimensionPixelSize(R.styleable.SamsungAppBarLayout_android_paddingBottom, 0);
127131
this.setPadding(0, 0, 0, this.mBottomPadding);
128132
} else {
@@ -145,7 +149,7 @@ public SamsungAppBarLayout(Context var1, AttributeSet var2, int var3) {
145149
if (this.mBottomPadding > 0) {
146150
mAppBarHeight = (float) this.getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_height_with_padding);
147151
} else {
148-
mAppBarHeight = (float) this.getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_default_height);
152+
mAppBarHeight = (float) this.getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_action_bar_height_with_padding : R.dimen.sesl_action_bar_default_height);
149153
}
150154

151155
ViewCompat.setOnApplyWindowInsetsListener(this, new androidx.core.view.OnApplyWindowInsetsListener() {
@@ -554,16 +558,16 @@ public void onConfigurationChanged(Configuration var1) {
554558
this.setBackgroundColor(this.getResources().getColor(R.color.sesl_action_bar_background_color, getContext().getTheme()));
555559
}
556560

557-
this.mBottomPadding = this.getContext().getResources().getDimensionPixelSize(R.dimen.sesl_extended_appbar_bottom_padding);
561+
this.mBottomPadding = mIsOneUI4 ? 0 : this.getContext().getResources().getDimensionPixelSize(R.dimen.sesl_extended_appbar_bottom_padding);
558562
this.setPadding(0, 0, 0, this.mBottomPadding);
559563
if (this.mBottomPadding > 0) {
560564
mAppBarHeight = (float) this.getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_height_with_padding);
561565
} else {
562-
mAppBarHeight = (float) this.getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_default_height);
566+
mAppBarHeight = (float) this.getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_action_bar_height_with_padding : R.dimen.sesl_action_bar_default_height);
563567
}
564568

565569
TypedValue var3 = new TypedValue();
566-
this.getResources().getValue(R.dimen.sesl_appbar_height_proportion, var3, true);
570+
this.getResources().getValue(mIsOneUI4 ? R.dimen.sesl4_appbar_height_proportion : R.dimen.sesl_appbar_height_proportion, var3, true);
567571
this.mHeightPercent = var3.getFloat();
568572
if (this.mHeightCustom > 0.0F) {
569573
Log.d("Sesl_AppBarLayout", "onConfigurationChanged");
@@ -651,7 +655,7 @@ public void onMeasure(int var1, int var2) {
651655
if (this.mBottomPadding > 0) {
652656
mAppBarHeight = (float) this.getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_height_with_padding);
653657
} else {
654-
mAppBarHeight = (float) this.getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_default_height);
658+
mAppBarHeight = (float) this.getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_action_bar_height_with_padding : R.dimen.sesl_action_bar_default_height);
655659
}
656660
}
657661

yanndroid/oneui/src/main/java/de/dlyt/yanndroid/oneui/sesl/appbar/SamsungCollapsingToolbarLayout.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import de.dlyt.yanndroid.oneui.R;
5757

5858
public class SamsungCollapsingToolbarLayout extends FrameLayout {
59+
private boolean mIsOneUI4;
5960
static final Interpolator SINE_OUT_80_INTERPOLATOR = new PathInterpolator(0.17f, 0.17f, 0.2f, 1.0f);
6061
private static final int DEFAULT_SCRIM_ANIMATION_DURATION = 600;
6162
private final Rect mTmpRect = new Rect();
@@ -107,6 +108,8 @@ public SamsungCollapsingToolbarLayout(Context context, AttributeSet attrs) {
107108
public SamsungCollapsingToolbarLayout(Context context, AttributeSet attrs, int defStyleAttr) {
108109
super(context, attrs, defStyleAttr);
109110

111+
mIsOneUI4 = context.getTheme().obtainStyledAttributes(new int[]{R.attr.isOneUI4}).getBoolean(0, false);
112+
110113
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SamsungCollapsingToolbarLayout, defStyleAttr, 0);
111114

112115
mCollapsingTitleLayout = new LinearLayout(context, attrs, defStyleAttr);
@@ -267,21 +270,23 @@ public void addView(View child, ViewGroup.LayoutParams params) {
267270

268271
private void updateTitleLayout() {
269272
TypedValue typedValue = new TypedValue();
270-
getResources().getValue(R.dimen.sesl_appbar_height_proportion, typedValue, true);
273+
getResources().getValue(mIsOneUI4 ? R.dimen.sesl4_appbar_height_proportion : R.dimen.sesl_appbar_height_proportion, typedValue, true);
271274
mHeightPercent = typedValue.getFloat();
272275
if (mCollapsingToolbarLayoutTitleEnabled) {
273276
TypedArray appearance = getContext().obtainStyledAttributes(mExtendTitleAppearance, R.styleable.TextAppearance);
274277
float textSize = TypedValue.complexToFloat(appearance.peekValue(R.styleable.TextAppearance_android_textSize).data);
275278
float fontScale = getContext().getResources().getConfiguration().fontScale;
276-
if (fontScale > 1.1f) {
279+
if (mIsOneUI4) {
280+
fontScale = Math.min(fontScale, 1.0f);
281+
} else if (fontScale > 1.1f) {
277282
fontScale = 1.1f;
278283
}
279284
Log.d("Sesl_CTL", "updateTitleLayout: context:" + getContext() + ", orientation:" + getContext().getResources().getConfiguration().orientation + " density:" + getContext().getResources().getConfiguration().densityDpi + " ,testSize : " + textSize + "fontScale : " + fontScale + ", mCollapsingToolbarLayoutSubTitleEnabled :" + mCollapsingToolbarLayoutSubTitleEnabled);
280285
if (!mCollapsingToolbarLayoutSubTitleEnabled) {
281286
mCollapsingToolbarExtendedTitle.setTextSize(1, textSize * fontScale);
282287
} else {
283-
mCollapsingToolbarExtendedTitle.setTextSize(0, (float) getContext().getResources().getDimensionPixelSize(R.dimen.sesl_appbar_extended_title_text_size_with_subtitle));
284-
mCollapsingToolbarExtendedSubTitle.setTextSize(0, (float) getContext().getResources().getDimensionPixelSize(R.dimen.sesl_toolbar_subtitle_text_size));
288+
mCollapsingToolbarExtendedTitle.setTextSize(0, (float) getContext().getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_appbar_extended_title_text_size_with_subtitle : R.dimen.sesl_appbar_extended_title_text_size_with_subtitle));
289+
mCollapsingToolbarExtendedSubTitle.setTextSize(0, (float) getContext().getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_toolbar_subtitle_text_size : R.dimen.sesl_toolbar_subtitle_text_size));
285290
}
286291
if (mHeightPercent != 0.3f) {
287292
mCollapsingToolbarExtendedTitle.setSingleLine(false);
@@ -303,10 +308,10 @@ private void updateDefaultHeightDP() {
303308
if (abl.getPaddingBottom() > 0) {
304309
mDefaultHeightDp = (float) getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_height_with_padding);
305310
} else {
306-
mDefaultHeightDp = (float) getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_default_height);
311+
mDefaultHeightDp = (float) getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_action_bar_height_with_padding : R.dimen.sesl_action_bar_default_height);
307312
}
308313
} else {
309-
mDefaultHeightDp = (float) getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_height_with_padding);
314+
mDefaultHeightDp = (float) getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_action_bar_height_with_padding : R.dimen.sesl_action_bar_height_with_padding);
310315
}
311316
}
312317

@@ -999,7 +1004,7 @@ protected FrameLayout.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p
9991004
protected void onConfigurationChanged(Configuration newConfig) {
10001005
super.onConfigurationChanged(newConfig);
10011006
TypedValue typedValue = new TypedValue();
1002-
getResources().getValue(R.dimen.sesl_appbar_height_proportion, typedValue, true);
1007+
getResources().getValue(mIsOneUI4 ? R.dimen.sesl4_appbar_height_proportion : R.dimen.sesl_appbar_height_proportion, typedValue, true);
10031008
mHeightPercent = typedValue.getFloat();
10041009
updateDefaultHeightDP();
10051010
updateTitleLayout();
@@ -1094,10 +1099,10 @@ private class OffsetUpdateListener implements SamsungAppBarLayout.OnOffsetChange
10941099
if (abl.getPaddingBottom() > 0) {
10951100
mDefaultHeightDp = (float) getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_height_with_padding);
10961101
} else {
1097-
mDefaultHeightDp = (float) getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_default_height);
1102+
mDefaultHeightDp = (float) getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_action_bar_height_with_padding : R.dimen.sesl_action_bar_default_height);
10981103
}
10991104
} else {
1100-
mDefaultHeightDp = (float) getResources().getDimensionPixelSize(R.dimen.sesl_action_bar_height_with_padding);
1105+
mDefaultHeightDp = (float) getResources().getDimensionPixelSize(mIsOneUI4 ? R.dimen.sesl4_action_bar_height_with_padding : R.dimen.sesl_action_bar_height_with_padding);
11011106
}
11021107
}
11031108

yanndroid/oneui/src/main/java/de/dlyt/yanndroid/oneui/sesl/dialog/SamsungAlertController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,8 +1414,8 @@ public void setOverScrollMode(int var1) {
14141414
Context var2 = this.getContext();
14151415
SamsungEdgeEffect var3 = new SamsungEdgeEffect(var2);
14161416
SamsungEdgeEffect var4 = new SamsungEdgeEffect(var2);
1417-
var3.setSeslHostView(this);
1418-
var4.setSeslHostView(this);
1417+
var3.setHostView(this, true);
1418+
var4.setHostView(this, true);
14191419

14201420
ReflectUtils.genericSetField(this, Build.VERSION.SDK_INT >= 29 ? "hidden_mEdgeGlowTop" : "mEdgeGlowTop", var3);
14211421
ReflectUtils.genericSetField(this, Build.VERSION.SDK_INT >= 29 ? "hidden_mEdgeGlowBottom" : "mEdgeGlowBottom", var4);

0 commit comments

Comments
 (0)