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

Commit 84c2743

Browse files
committed
ToolbarLayout easier menu management
1 parent c323235 commit 84c2743

File tree

6 files changed

+316
-240
lines changed

6 files changed

+316
-240
lines changed

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

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
import android.graphics.drawable.Drawable;
1111
import android.os.Build;
1212
import android.os.Bundle;
13+
import android.view.MenuItem;
1314
import android.view.View;
1415
import android.view.inputmethod.InputMethodManager;
1516
import android.widget.LinearLayout;
1617

1718
import androidx.appcompat.app.AppCompatActivity;
1819
import androidx.appcompat.util.SeslMisc;
19-
import androidx.core.content.ContextCompat;
2020
import androidx.fragment.app.Fragment;
2121
import androidx.fragment.app.FragmentManager;
2222
import androidx.fragment.app.FragmentTransaction;
@@ -141,18 +141,24 @@ private void init() {
141141
}
142142
});
143143

144-
toolbarLayout.addOverflowButton(R.drawable.ic_samsung_info,
145-
R.string.app_info,
146-
new View.OnClickListener() {
147-
@Override
148-
public void onClick(View view) {
144+
toolbarLayout.inflateMenu(R.menu.main);
145+
toolbarLayout.setOnMenuItemClickListener(new ToolbarLayout.OnMenuItemClickListener() {
146+
@Override
147+
public void onMenuItemClick(MenuItem item) {
148+
switch (item.getItemId()) {
149+
case R.id.search:
150+
break;
151+
case R.id.info:
149152
startActivity(new Intent().setClass(mContext, AboutActivity.class));
150-
}
151-
});
152-
toolbarLayout.setMoreMenuButton(getMoreMenuButtonList(),
153-
(adapterView, view2, i, j) -> {
154-
toolbarLayout.dismissMoreMenuPopupWindow();
155-
});
153+
break;
154+
case R.id.item1:
155+
case R.id.item2:
156+
case R.id.item3:
157+
toolbarLayout.setOverflowMenuBadge(item, toolbarLayout.getOverflowMenuBadge(item) + 1);
158+
break;
159+
}
160+
}
161+
});
156162

157163
//BottomNavigationLayout
158164
Drawable icon = getDrawable(R.drawable.ic_samsung_drawer);

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -299,11 +299,11 @@ public void setSelecting(boolean enabled) {
299299

300300
if (enabled) {
301301
mSelecting = true;
302-
imageAdapter.notifyItemRangeChanged(0, imageAdapter.getItemCount());
302+
imageAdapter.notifyItemRangeChanged(0, imageAdapter.getItemCount()-1);
303303
drawerLayout.showSelectAllMode(true);
304304
drawerLayout.setSelectAllCheckedChangeListener((buttonView, isChecked) -> {
305305
if (checkAllListening) {
306-
for (int i = 0; i < imageAdapter.getItemCount(); i++) {
306+
for (int i = 0; i < imageAdapter.getItemCount()-1; i++) {
307307
selected.put(i, isChecked);
308308
imageAdapter.notifyItemChanged(i);
309309
}
@@ -318,8 +318,8 @@ public void setSelecting(boolean enabled) {
318318
onBackPressedCallback.setEnabled(true);
319319
} else {
320320
mSelecting = false;
321-
for (int i = 0; i < imageAdapter.getItemCount(); i++) selected.put(i, false);
322-
imageAdapter.notifyItemRangeChanged(0, imageAdapter.getItemCount());
321+
for (int i = 0; i < imageAdapter.getItemCount()-1; i++) selected.put(i, false);
322+
imageAdapter.notifyItemRangeChanged(0, imageAdapter.getItemCount()-1);
323323

324324
drawerLayout.setSelectAllCount(0);
325325
drawerLayout.showSelectAllMode(false);
@@ -338,7 +338,7 @@ public void toggleItemSelected(int position) {
338338
int count = 0;
339339
for (Boolean b : selected.values()) if (b) count++;
340340
DrawerLayout drawerLayout = getActivity().findViewById(R.id.drawer_view);
341-
drawerLayout.setSelectAllChecked(count == imageAdapter.getItemCount());
341+
drawerLayout.setSelectAllChecked(count == imageAdapter.getItemCount()-1);
342342
drawerLayout.setSelectAllCount(count);
343343
checkAllListening = true;
344344
}
@@ -400,7 +400,7 @@ public void onBindViewHolder(ImageAdapter.ViewHolder holder, final int position)
400400
listView.seslSetLongPressMultiSelectionListener(new RecyclerView.SeslLongPressMultiSelectionListener() {
401401
@Override
402402
public void onItemSelected(RecyclerView var1, View var2, int var3, long var4) {
403-
toggleItemSelected(var3);
403+
if (getItemViewType(var3) == 0) toggleItemSelected(var3);
404404
}
405405

406406
@Override

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<menu xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
5+
<item
6+
android:id="@+id/search"
7+
android:icon="@drawable/ic_samsung_search"
8+
android:title="Search"
9+
app:showAsAction="always" />
10+
11+
<item
12+
android:id="@+id/info"
13+
android:icon="@drawable/ic_samsung_info"
14+
android:title="@string/app_info"
15+
app:showAsAction="always" />
16+
17+
<item
18+
android:id="@+id/item1"
19+
android:title="Menu Item 1"
20+
app:showAsAction="never" />
21+
22+
<item
23+
android:id="@+id/item2"
24+
android:title="Menu Item 2"
25+
app:showAsAction="never" />
26+
27+
<item
28+
android:id="@+id/item3"
29+
android:title="Menu Item 3"
30+
app:showAsAction="never" />
31+
32+
</menu>

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

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import android.net.Uri;
1212
import android.util.AttributeSet;
1313
import android.view.LayoutInflater;
14+
import android.view.MenuItem;
1415
import android.view.View;
1516
import android.view.ViewGroup;
1617
import android.widget.LinearLayout;
@@ -87,23 +88,25 @@ public void onClick(View view) {
8788
getActivity().onBackPressed();
8889
}
8990
});
90-
toolbarLayout.addOverflowButton(R.drawable.ic_samsung_info,
91-
R.string.app_info,
92-
new View.OnClickListener() {
93-
@Override
94-
public void onClick(View view) {
95-
try {
96-
Intent intent = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS");
97-
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
98-
intent.setData(Uri.parse("package:" + getActivity().getApplicationContext().getPackageName()));
99-
getActivity().startActivity(intent);
100-
} catch (ActivityNotFoundException unused) {
101-
getActivity().startActivity(new Intent("android.settings.MANAGE_APPLICATIONS_SETTINGS"));
102-
} catch (Exception e) {
103-
e.printStackTrace();
104-
}
91+
92+
toolbarLayout.inflateMenu(R.menu.about_page);
93+
toolbarLayout.setOnMenuItemClickListener(new ToolbarLayout.OnMenuItemClickListener() {
94+
@Override
95+
public void onMenuItemClick(MenuItem item) {
96+
if (item.getItemId() == R.id.app_info){
97+
try {
98+
Intent intent = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS");
99+
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
100+
intent.setData(Uri.parse("package:" + getActivity().getApplicationContext().getPackageName()));
101+
getActivity().startActivity(intent);
102+
} catch (ActivityNotFoundException unused) {
103+
getActivity().startActivity(new Intent("android.settings.MANAGE_APPLICATIONS_SETTINGS"));
104+
} catch (Exception e) {
105+
e.printStackTrace();
105106
}
106-
});
107+
}
108+
}
109+
});
107110

108111
try {
109112
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);

0 commit comments

Comments
 (0)