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

Commit d498bf2

Browse files
authored
app: add Bottom PopupMenu anim, OUI4 ProgressDialog (#66)
* app/PopupMenu: add bottom popup anim Signed-off-by: BlackMesa123 <[email protected]> * app/ProgressDialog: OUI4-ize Signed-off-by: BlackMesa123 <[email protected]>
1 parent b686104 commit d498bf2

File tree

8 files changed

+36
-2
lines changed

8 files changed

+36
-2
lines changed

app/src/main/java/de/dlyt/yanndroid/oneuiexample/MainActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,7 @@ private void popupView(View view) {
381381
bnvPopupMenu = new PopupMenu(view);
382382
bnvPopupMenu.setGroupDividerEnabled(true);
383383
bnvPopupMenu.inflate(R.menu.bnv_menu);
384+
bnvPopupMenu.setAnimationStyle(R.style.BottomMenuPopupAnimStyle);
384385
bnvPopupMenu.setPopupMenuListener(new PopupMenu.PopupMenuListener() {
385386
@Override
386387
public boolean onMenuItemClick(MenuItem item) {

yanndroid/oneui/src/main/java/de/dlyt/yanndroid/oneui/dialog/ProgressDialog.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public class ProgressDialog extends AlertDialog {
2323
public static final int STYLE_HORIZONTAL = 1;
2424
public static final int STYLE_CIRCLE_ONLY = 2;
2525

26+
private boolean mIsOneUI4;
27+
2628
private Context mContext;
2729

2830
private ProgressBar mProgress;
@@ -56,6 +58,7 @@ public ProgressDialog(Context context) {
5658
public ProgressDialog(Context context, int theme) {
5759
super(context, theme);
5860
mContext = context;
61+
mIsOneUI4 = context.getTheme().obtainStyledAttributes(new int[]{R.attr.isOneUI4}).getBoolean(0, false);
5962
initFormats();
6063
}
6164

@@ -162,7 +165,7 @@ public void handleMessage(Message msg) {
162165

163166
if (mProgressStyle == STYLE_CIRCLE_ONLY) {
164167
int size = (int) ((70 * mContext.getResources().getDisplayMetrics().density));
165-
getWindow().setBackgroundDrawableResource(R.drawable.progress_circle_dialog_bg);
168+
getWindow().setBackgroundDrawableResource(mIsOneUI4 ? android.R.color.transparent : R.drawable.progress_circle_dialog_bg);
166169
getWindow().setLayout(size, size);
167170
getWindow().setGravity(Gravity.CENTER);
168171
setContentView(inflater.inflate(R.layout.sesl_progress_dialog_circle_only, null));

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,7 @@ public void setSelectModeBottomMenu(Menu menu, OnMenuItemClickListener listener)
493493

494494
PopupMenu overflowPopupMenu = new PopupMenu(moreButton);
495495
overflowPopupMenu.inflate(overflowMenu);
496+
overflowPopupMenu.setAnimationStyle(R.style.BottomMenuPopupAnimStyle);
496497
overflowPopupMenu.setPopupMenuListener(new PopupMenu.PopupMenuListener() {
497498
@Override
498499
public boolean onMenuItemClick(MenuItem item) {

yanndroid/oneui/src/main/java/de/dlyt/yanndroid/oneui/menu/PopupMenu.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public class PopupMenu {
3737
private LinearLayout layoutWithTitle;
3838
private CharSequence title;
3939

40+
private int mAnimationStyleRes = 0;
4041
private boolean mGroupDividerEnabled;
4142

4243
private int lastGroupId = 0;
@@ -103,6 +104,9 @@ public void inflate(Menu menu, CharSequence title) {
103104
if (clickedMenuItem.hasSubMenu()) {
104105
PopupMenu subPopupMenu = new PopupMenu(anchor);
105106
subPopupMenu.inflate(clickedMenuItem.getSubMenu(), menu.getItem(position).getTitle());
107+
if (mAnimationStyleRes != 0) {
108+
subPopupMenu.setAnimationStyle(mAnimationStyleRes);
109+
}
106110
subPopupMenu.setPopupMenuListener(new PopupMenuListener() {
107111
@Override
108112
public boolean onMenuItemClick(MenuItem item) {
@@ -133,7 +137,7 @@ public void onMenuItemUpdate(MenuItem menuItem) {
133137

134138
popupWindow.setWidth(getPopupMenuWidth());
135139
popupWindow.setHeight(getPopupMenuHeight());
136-
popupWindow.setAnimationStyle(R.style.MenuPopupAnimStyle);
140+
popupWindow.setAnimationStyle(mAnimationStyleRes == 0 ? R.style.MenuPopupAnimStyle : mAnimationStyleRes);
137141
popupWindow.setBackgroundDrawable(context.getResources().getDrawable(mIsOneUI4 ? R.drawable.sesl4_menu_popup_background : R.drawable.sesl_menu_popup_background, context.getTheme()));
138142
popupWindow.setOutsideTouchable(true);
139143
popupWindow.setElevation(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) 12, context.getResources().getDisplayMetrics()));
@@ -229,6 +233,13 @@ public void show(int xoff, int yoff) {
229233
((View) ReflectUtils.genericGetField(popupWindow, "mBackgroundView")).setClipToOutline(true);
230234
}
231235

236+
public void setAnimationStyle(int animationStyle) {
237+
mAnimationStyleRes = animationStyle;
238+
if (popupWindow != null) {
239+
popupWindow.setAnimationStyle(animationStyle);
240+
}
241+
}
242+
232243
public void setGroupDividerEnabled(boolean enabled) {
233244
mGroupDividerEnabled = enabled;
234245

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<set android:shareInterpolator="false"
3+
xmlns:android="http://schemas.android.com/apk/res/android">
4+
<scale android:interpolator="@interpolator/sesl_elastic_50_menu_popup" android:duration="350" android:pivotX="@dimen/sesl_menu_popup_scale_anim_pivot_x" android:pivotY="@dimen/sesl_menu_popup_scale_anim_pivot_y" android:fromXScale="79.99999%" android:toXScale="100.0%" android:fromYScale="79.99999%" android:toYScale="100.0%" />
5+
<alpha android:duration="200" android:fromAlpha="0.0" android:toAlpha="1.0" />
6+
</set>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<set android:shareInterpolator="false"
3+
xmlns:android="http://schemas.android.com/apk/res/android">
4+
<scale android:interpolator="@interpolator/sine_in_out_33" android:duration="200" android:pivotX="@dimen/sesl_menu_popup_scale_anim_pivot_x" android:pivotY="@dimen/sesl_menu_popup_scale_anim_pivot_y" android:fromXScale="100.0%" android:toXScale="79.99999%" android:fromYScale="100.0%" android:toYScale="79.99999%" />
5+
<alpha android:duration="200" android:fromAlpha="1.0" android:toAlpha="0.0" />
6+
</set>

yanndroid/oneui/src/main/res/values/dimens.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
<dimen name="sesl_menu_popup_corner_radius">24.0dip</dimen>
5656
<dimen name="sesl_menu_popup_elevation">8.0dip</dimen>
5757
<item name="sesl_menu_popup_scale_anim_pivot_x" type="dimen">100.0%</item>
58+
<item name="sesl_menu_popup_scale_anim_pivot_y" type="dimen">100.0%</item>
5859
<dimen name="sesl_menu_popup_stroke_width">1.0px</dimen>
5960
<dimen name="sesl_menu_popup_top_margin">6.0dip</dimen>
6061
<dimen name="sesl_menu_popup_top_padding">6.0dip</dimen>

yanndroid/oneui/src/main/res/values/styles.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,11 @@
439439
<item name="android:windowExitAnimation">@anim/sesl_menu_popup_exit</item>
440440
</style>
441441

442+
<style name="BottomMenuPopupAnimStyle" parent="@android:style/Animation">
443+
<item name="android:windowEnterAnimation">@anim/sesl_bottom_menu_popup_enter</item>
444+
<item name="android:windowExitAnimation">@anim/sesl_bottom_menu_popup_exit</item>
445+
</style>
446+
442447

443448
<!--Snackbar-->
444449
<style name="SnackBarStyle" parent="@android:style/Widget">

0 commit comments

Comments
 (0)