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

Commit 8d054be

Browse files
committed
- ToolbarLayout improvements
- PopupMenu remake, Menu & Co. - fixes & minor changes
1 parent e4047fd commit 8d054be

38 files changed

+1071
-791
lines changed

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
}
44

55
android {
6-
compileSdkVersion 30
6+
compileSdkVersion 31
77
buildToolsVersion "30.0.3"
88

99
defaultConfig {
@@ -31,9 +31,9 @@ android {
3131

3232
dependencies {
3333

34-
implementation 'androidx.appcompat:appcompat:1.3.1'
34+
implementation 'androidx.appcompat:appcompat:1.4.0'
3535
implementation 'com.google.android.material:material:1.4.0'
36-
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
36+
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
3737
implementation project(path: ':yanndroid:oneui')
3838
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
3939
testImplementation 'junit:junit:4.+'

app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,10 @@
3737
</activity>
3838
</application>
3939

40+
<queries>
41+
<intent>
42+
<action android:name="android.speech.action.RECOGNIZE_SPEECH" />
43+
</intent>
44+
</queries>
45+
4046
</manifest>

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

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import android.text.Editable;
1414
import android.view.View;
1515
import android.view.inputmethod.InputMethodManager;
16+
import android.widget.EditText;
1617
import android.widget.LinearLayout;
1718
import android.widget.Toast;
1819

@@ -30,17 +31,16 @@
3031
import de.dlyt.yanndroid.oneui.dialog.ProgressDialog;
3132
import de.dlyt.yanndroid.oneui.layout.DrawerLayout;
3233
import de.dlyt.yanndroid.oneui.layout.ToolbarLayout;
34+
import de.dlyt.yanndroid.oneui.menu.MenuItem;
35+
import de.dlyt.yanndroid.oneui.menu.PopupMenu;
3336
import de.dlyt.yanndroid.oneui.sesl.support.ViewSupport;
3437
import de.dlyt.yanndroid.oneui.sesl.utils.ReflectUtils;
3538
import de.dlyt.yanndroid.oneui.utils.CustomButtonClickListener;
3639
import de.dlyt.yanndroid.oneui.utils.ThemeUtil;
3740
import de.dlyt.yanndroid.oneui.view.BottomNavigationView;
38-
import de.dlyt.yanndroid.oneui.view.PopupMenu;
3941
import de.dlyt.yanndroid.oneui.view.Snackbar;
4042
import de.dlyt.yanndroid.oneuiexample.utils.TabsManager;
4143

42-
import static de.dlyt.yanndroid.oneui.layout.DrawerLayout.DRAWER_LAYOUT;
43-
4444
public class MainActivity extends AppCompatActivity {
4545
private String[] mTabsTagName;
4646
private String[] mTabsTitleName;
@@ -151,8 +151,15 @@ private void init() {
151151
toolbarLayout.setOnToolbarMenuItemClickListener(item -> {
152152
switch (item.getItemId()) {
153153
case R.id.search:
154-
toolbarLayout.showSearchMode();
155154
toolbarLayout.setSearchModeListener(new ToolbarLayout.SearchModeListener() {
155+
@Override
156+
public void onSearchOpened(EditText search_edittext) {
157+
}
158+
159+
@Override
160+
public void onSearchDismissed(EditText search_edittext) {
161+
}
162+
156163
@Override
157164
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
158165
}
@@ -175,16 +182,18 @@ public void onVoiceInputClick(Intent intent) {
175182
activityResultLauncher.launch(intent);
176183
}
177184
});
185+
toolbarLayout.showSearchMode();
178186
break;
179187
case R.id.info:
180188
startActivity(new Intent().setClass(mContext, AboutActivity.class));
181189
break;
182190
case R.id.item1:
183191
case R.id.item2:
184192
case R.id.item3:
185-
toolbarLayout.setOverflowMenuBadge(item, toolbarLayout.getOverflowMenuBadge(item) + 1);
193+
item.setBadge(item.getBadge() + 1);
186194
break;
187195
}
196+
return true;
188197
});
189198

190199
//BottomNavigationLayout
@@ -229,14 +238,14 @@ private void setCurrentItem() {
229238
// MainActivityFirstFragment
230239
toolbarLayout.setSubtitle("Design");
231240
toolbarLayout.setNavigationButtonVisible(true);
232-
toolbarLayout.setToolbarMenuItemVisibility(toolbarLayout.getToolbarMenu().findItem(R.id.search), true);
233-
((androidx.drawerlayout.widget.DrawerLayout) drawerLayout.getView(DRAWER_LAYOUT)).setDrawerLockMode(androidx.drawerlayout.widget.DrawerLayout.LOCK_MODE_UNLOCKED);
241+
toolbarLayout.getToolbarMenu().findItem(R.id.search).setVisible(true);
242+
((androidx.drawerlayout.widget.DrawerLayout) drawerLayout.findViewById(R.id.drawerLayout)).setDrawerLockMode(androidx.drawerlayout.widget.DrawerLayout.LOCK_MODE_UNLOCKED);
234243
} else {
235244
// MainActivitySecondFragment
236245
toolbarLayout.setSubtitle("Preferences");
237246
toolbarLayout.setNavigationButtonVisible(false);
238-
toolbarLayout.setToolbarMenuItemVisibility(toolbarLayout.getToolbarMenu().findItem(R.id.search), false);
239-
((androidx.drawerlayout.widget.DrawerLayout) drawerLayout.getView(DRAWER_LAYOUT)).setDrawerLockMode(androidx.drawerlayout.widget.DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
247+
toolbarLayout.getToolbarMenu().findItem(R.id.search).setVisible(false);
248+
((androidx.drawerlayout.widget.DrawerLayout) drawerLayout.findViewById(R.id.drawerLayout)).setDrawerLockMode(androidx.drawerlayout.widget.DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
240249
}
241250

242251
}
@@ -375,8 +384,24 @@ private void popupView(View view) {
375384
if (bnvPopupMenu == null) {
376385
bnvPopupMenu = new PopupMenu(view);
377386
bnvPopupMenu.inflate(R.menu.bnv_menu);
378-
bnvPopupMenu.setOnMenuItemClickListener(item -> bnvPopupMenu.setMenuItemBadge(item, bnvPopupMenu.getMenuItemBadge(item) + 1));
387+
bnvPopupMenu.setPopupMenuListener(new PopupMenu.PopupMenuListener() {
388+
@Override
389+
public boolean onMenuItemClick(MenuItem item) {
390+
item.setBadge(item.getBadge() + 1);
391+
return true;
392+
}
393+
394+
@Override
395+
public void onMenuItemUpdate(MenuItem menuItem) {
396+
397+
}
398+
});
399+
}
400+
int xoff = bnvPopupMenu.getPopupMenuWidth() - view.getWidth() + 7;
401+
if (getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
402+
bnvPopupMenu.show(xoff, 0);
403+
} else {
404+
bnvPopupMenu.show(-xoff, 0);
379405
}
380-
bnvPopupMenu.show();
381406
}
382407
}

app/src/main/java/de/dlyt/yanndroid/oneuiexample/tabs/IconsTab.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,11 @@ public void setSelecting(boolean enabled) {
332332
if (enabled) {
333333
mSelecting = true;
334334
imageAdapter.notifyItemRangeChanged(0, imageAdapter.getItemCount() - 1);
335-
toolbarLayout.setSelectModeBottomMenu(R.menu.select_mode_menu, item -> Toast.makeText(mContext, item.getTitle(), Toast.LENGTH_SHORT).show());
335+
toolbarLayout.setSelectModeBottomMenu(R.menu.select_mode_menu, item -> {
336+
item.setBadge(item.getBadge() + 1);
337+
Toast.makeText(mContext, item.getTitle(), Toast.LENGTH_SHORT).show();
338+
return true;
339+
});
336340
toolbarLayout.showSelectMode();
337341
toolbarLayout.setSelectModeAllCheckedChangeListener((buttonView, isChecked) -> {
338342
if (checkAllListening) {

app/src/main/java/de/dlyt/yanndroid/oneuiexample/tabs/ViewsTab.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package de.dlyt.yanndroid.oneuiexample.tabs;
22

33
import android.content.Context;
4-
import android.graphics.Color;
54
import android.os.Bundle;
65
import android.os.Handler;
76
import android.view.LayoutInflater;

app/src/main/res/layout/icon_tab_listview_item.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
android:gravity="center_vertical">
66

77
<LinearLayout
8-
android:animateLayoutChanges="true"
98
android:layout_width="fill_parent"
109
android:layout_height="wrap_content"
10+
android:animateLayoutChanges="true"
1111
android:background="?listChoiceBackgroundIndicator"
1212
android:gravity="center_vertical"
1313
android:paddingStart="?android:listPreferredItemPaddingStart"

app/src/main/res/menu/bnv_menu.xml

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,52 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<menu xmlns:android="http://schemas.android.com/apk/res/android">
33

4-
<item android:title="Menu Item 1" />
5-
<item android:title="Menu Item 2" />
6-
<item android:title="Menu Item 3" />
7-
<item android:title="Menu Item 4" />
8-
<item android:title="Menu Item 5" />
9-
<item android:title="Menu Item 6" />
4+
<item
5+
android:id="@+id/item1"
6+
android:icon="@drawable/ic_samsung_image"
7+
android:title="MenuItem 1" />
8+
9+
<item
10+
android:id="@+id/smparent1"
11+
android:title="SubMenu 1">
12+
<menu>
13+
<item
14+
android:id="@+id/smitem1"
15+
android:title="SubMenuItem 1" />
16+
17+
<item
18+
android:id="@+id/smitem2"
19+
android:title="SubMenuItem 2" />
20+
</menu>
21+
</item>
22+
23+
<group android:id="@+id/group1">
24+
<item
25+
android:id="@+id/gitem1"
26+
android:title="GroupItem 1" />
27+
<item
28+
android:id="@+id/gitem2"
29+
android:title="GroupItem 2" />
30+
</group>
31+
32+
<item
33+
android:id="@+id/item2"
34+
android:enabled="false"
35+
android:title="MenuItem 2" />
36+
37+
<item
38+
android:id="@+id/item3"
39+
android:checkable="true"
40+
android:title="MenuItem 3" />
41+
42+
<item
43+
android:id="@+id/item4"
44+
android:title="MenuItem 4"
45+
android:visible="false" />
46+
47+
<item
48+
android:id="@+id/item5"
49+
android:title="MenuItem 5" />
50+
1051

1152
</menu>

yanndroid/oneui/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ signing {
6363

6464

6565
android {
66-
compileSdkVersion 30
66+
compileSdkVersion 31
6767
buildToolsVersion "30.0.3"
6868

6969
defaultConfig {
@@ -90,7 +90,7 @@ android {
9090
}
9191

9292
dependencies {
93-
implementation 'androidx.appcompat:appcompat:1.3.1'
93+
implementation 'androidx.appcompat:appcompat:1.4.0'
9494
implementation 'com.google.android.material:material:1.4.0'
9595
testImplementation 'junit:junit:4.+'
9696
androidTestImplementation 'androidx.test.ext:junit:1.1.3'

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

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,6 @@ public class AboutPage extends LinearLayout {
3535
public static final int UPDATE_AVAILABLE = 1;
3636
public static final int NO_UPDATE = 2;
3737
public static final int NO_CONNECTION = 3;
38-
public static final int TOOLBAR = 0;
39-
public static final int MAIN_CONTENT = 1;
40-
public static final int VERSION_TEXT = 2;
41-
public static final int STATUS_TEXT = 3;
42-
public static final int OPTIONAL_TEXT = 4;
43-
public static final int UPDATE_BUTTON = 5;
44-
public static final int RETRY_BUTTON = 6;
45-
public static final int LOADING_BAR = 7;
4638
private ToolbarLayout toolbarLayout;
4739
private LinearLayout about_content;
4840
private TextView version;
@@ -93,7 +85,7 @@ public void onClick(View view) {
9385

9486
toolbarLayout.inflateToolbarMenu(R.menu.about_page);
9587
if (mIsOneUI4) {
96-
toolbarLayout.getToolbarMenuItemView(toolbarLayout.getToolbarMenu().findItem(R.id.app_info)).setImageDrawable(getResources().getDrawable(R.drawable.ic_samsung_info_2, context.getTheme()));
88+
toolbarLayout.getToolbarMenu().findItem(R.id.app_info).setIcon(getResources().getDrawable(R.drawable.ic_samsung_info_2, context.getTheme()));
9789
}
9890
toolbarLayout.setOnToolbarMenuItemClickListener(item -> {
9991
if (item.getItemId() == R.id.app_info) {
@@ -108,6 +100,7 @@ public void onClick(View view) {
108100
e.printStackTrace();
109101
}
110102
}
103+
return false;
111104
});
112105

113106
try {
@@ -190,38 +183,9 @@ public void addView(View child, int index, ViewGroup.LayoutParams params) {
190183
}
191184
}
192185

193-
public View getView(@AboutPageView int view) {
194-
switch (view) {
195-
case TOOLBAR:
196-
return toolbarLayout;
197-
case MAIN_CONTENT:
198-
return about_content;
199-
case VERSION_TEXT:
200-
return version;
201-
case STATUS_TEXT:
202-
return status_text;
203-
case OPTIONAL_TEXT:
204-
return about_optional_text;
205-
case UPDATE_BUTTON:
206-
return update_button;
207-
case RETRY_BUTTON:
208-
return retry_button;
209-
case LOADING_BAR:
210-
return loading_bar;
211-
default:
212-
return null;
213-
}
214-
}
215-
216186
@IntDef({LOADING, UPDATE_AVAILABLE, NO_UPDATE, NOT_UPDATEABLE, NO_CONNECTION})
217187
@Retention(RetentionPolicy.SOURCE)
218188
public @interface UpdateState {
219189
}
220190

221-
@IntDef({TOOLBAR, MAIN_CONTENT, VERSION_TEXT, STATUS_TEXT, OPTIONAL_TEXT, UPDATE_BUTTON, RETRY_BUTTON, LOADING_BAR})
222-
@Retention(RetentionPolicy.SOURCE)
223-
public @interface AboutPageView {
224-
}
225-
226-
227191
}

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

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,11 @@
2222
import android.widget.TextView;
2323

2424
import androidx.activity.OnBackPressedCallback;
25-
import androidx.annotation.IntDef;
2625
import androidx.annotation.Nullable;
2726
import androidx.appcompat.app.ActionBarDrawerToggle;
2827
import androidx.appcompat.app.AppCompatActivity;
2928
import androidx.core.content.ContextCompat;
3029

31-
import java.lang.annotation.Retention;
32-
import java.lang.annotation.RetentionPolicy;
3330
import java.text.NumberFormat;
3431
import java.util.Locale;
3532

@@ -40,11 +37,6 @@ public class DrawerLayout extends LinearLayout {
4037

4138

4239
public static final int N_BADGE = -1;
43-
public static final int DRAWER_BUTTON = 0;
44-
public static final int TOOLBAR = 1;
45-
public static final int CONTENT_LAYOUT = 2;
46-
public static final int DRAWER_LAYOUT = 3;
47-
public static final int DRAWER = 4;
4840
private Context mContext;
4941
private AppCompatActivity mActivity;
5042
private int mLayout;
@@ -290,9 +282,10 @@ public void addView(View child, int index, ViewGroup.LayoutParams params) {
290282
case 0:
291283
case 1:
292284
case 2:
285+
case 3:
293286
toolbarLayout.addView(child, index, params);
294287
break;
295-
case 3:
288+
case 4:
296289
drawer_container.addView(child, index, params);
297290
break;
298291
}
@@ -314,27 +307,4 @@ protected void onConfigurationChanged(Configuration newConfig) {
314307
super.onConfigurationChanged(newConfig);
315308
setDrawerWidth();
316309
}
317-
318-
public View getView(@DrawerLayoutView int view) {
319-
switch (view) {
320-
case DRAWER_BUTTON:
321-
return drawerButton;
322-
case TOOLBAR:
323-
return toolbarLayout;
324-
case CONTENT_LAYOUT:
325-
return drawer_container;
326-
case DRAWER_LAYOUT:
327-
return drawerLayout;
328-
case DRAWER:
329-
return drawer;
330-
default:
331-
return null;
332-
}
333-
}
334-
335-
@IntDef({DRAWER_BUTTON, TOOLBAR, CONTENT_LAYOUT, DRAWER_LAYOUT, DRAWER})
336-
@Retention(RetentionPolicy.SOURCE)
337-
public @interface DrawerLayoutView {
338-
}
339-
340310
}

0 commit comments

Comments
 (0)