From bd3d83d2e35a07ecf4a39515d0cbb565ad98b9e5 Mon Sep 17 00:00:00 2001 From: artdeell Date: Tue, 26 Apr 2022 18:42:28 +0300 Subject: [PATCH] Removed all NavigationViews, replaced with ListViews... ... which allowed me to remove the Google Material dependency once and for all! --- app_pojavlauncher/build.gradle | 4 +- .../net/kdt/pojavlaunch/BaseMainActivity.java | 63 ++++++++++--------- .../pojavlaunch/CustomControlsActivity.java | 30 +++++++-- .../net/kdt/pojavlaunch/MainActivity.java | 29 ++++----- .../main/java/net/kdt/pojavlaunch/Tools.java | 4 -- .../src/main/res/layout/activity_basemain.xml | 3 +- .../res/layout/activity_custom_controls.xml | 8 +-- .../src/main/res/values/headings_array.xml | 17 +++++ 8 files changed, 101 insertions(+), 57 deletions(-) diff --git a/app_pojavlauncher/build.gradle b/app_pojavlauncher/build.gradle index 7817bcdb1..eb37b29f5 100644 --- a/app_pojavlauncher/build.gradle +++ b/app_pojavlauncher/build.gradle @@ -123,7 +123,9 @@ dependencies { implementation 'commons-codec:commons-codec:1.14' // implementation 'com.wu-man:android-bsf-api:3.1.3' implementation 'androidx.preference:preference:1.1.1' - implementation 'com.google.android.material:material:1.4.0' + //implementation 'androidx.core:core:1.7.0' + implementation 'androidx.drawerlayout:drawerlayout:1.1.1' + implementation 'androidx.viewpager2:viewpager2:1.0.0' implementation 'androidx.annotation:annotation:1.3.0' implementation "androidx.constraintlayout:constraintlayout:2.1.2" diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java index 48513f03b..7531e2154 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java @@ -19,7 +19,7 @@ import android.widget.*; import androidx.annotation.NonNull; import androidx.drawerlayout.widget.*; -import com.google.android.material.navigation.*; + import com.kdt.LoggerView; import java.io.*; @@ -57,10 +57,13 @@ public class BaseMainActivity extends BaseActivity { MinecraftProfile minecraftProfile; private DrawerLayout drawerLayout; - private NavigationView navDrawer; + private ListView navDrawer; - private NavigationView.OnNavigationItemSelectedListener gameActionListener; - public NavigationView.OnNavigationItemSelectedListener ingameControlsEditorListener; + private ArrayAdapter gameActionArrayAdapter; + private AdapterView.OnItemClickListener gameActionClickListener; + public ArrayAdapter ingameControlsEditorArrayAdapter; + public AdapterView.OnItemClickListener ingameControlsEditorListener; + //public NavigationView.OnNavigationItemSelectedListener ingameControlsEditorListener; protected volatile JMinecraftVersionList.Version mVersionInfo; @@ -116,26 +119,32 @@ public class BaseMainActivity extends BaseActivity { drawerLayout = findViewById(R.id.main_drawer_options); navDrawer = findViewById(R.id.main_navigation_view); - gameActionListener = menuItem -> { - switch (menuItem.getItemId()) { - case R.id.nav_forceclose: dialogForceClose(BaseMainActivity.this); - break; - case R.id.nav_viewlog: openLogOutput(); - break; - case R.id.nav_debug: minecraftGLView.togglepointerDebugging(); - break; - case R.id.nav_customkey: dialogSendCustomKey(); - break; - case R.id.nav_mousespd: adjustMouseSpeedLive(); - break; - case R.id.nav_customctrl: openCustomControls(); - break; - } + gameActionArrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.menu_ingame)); + gameActionClickListener = (parent, view, position, id) -> { + switch(position) { + case 0: + dialogForceClose(BaseMainActivity.this); + break; + case 1: + openLogOutput(); + break; + case 2: + minecraftGLView.togglepointerDebugging(); + break; + case 3: + dialogSendCustomKey(); + break; + case 4: + adjustMouseSpeedLive(); + break; + case 5: + openCustomControls(); + } drawerLayout.closeDrawers(); - return true; }; - navDrawer.setNavigationItemSelectedListener(gameActionListener); + navDrawer.setAdapter(gameActionArrayAdapter); + navDrawer.setOnItemClickListener(gameActionClickListener); touchpad = findViewById(R.id.main_touchpad); @@ -299,12 +308,11 @@ public class BaseMainActivity extends BaseActivity { boolean isInEditor; private void openCustomControls() { - if(ingameControlsEditorListener == null) return; + if(ingameControlsEditorListener == null || ingameControlsEditorArrayAdapter == null) return; ((MainActivity)this).mControlLayout.setModifiable(true); - navDrawer.getMenu().clear(); - navDrawer.inflateMenu(R.menu.menu_customctrl); - navDrawer.setNavigationItemSelectedListener(ingameControlsEditorListener); + navDrawer.setAdapter(ingameControlsEditorArrayAdapter); + navDrawer.setOnItemClickListener(ingameControlsEditorListener); isInEditor = true; } @@ -321,9 +329,8 @@ public class BaseMainActivity extends BaseActivity { } //((MainActivity) this).mControlLayout.loadLayout((CustomControls)null); } - navDrawer.getMenu().clear(); - navDrawer.inflateMenu(R.menu.menu_runopt); - navDrawer.setNavigationItemSelectedListener(gameActionListener); + navDrawer.setAdapter(gameActionArrayAdapter); + navDrawer.setOnItemClickListener(gameActionClickListener); isInEditor = false; } private void openLogOutput() { diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java index c694b9307..d793dc771 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java @@ -10,7 +10,6 @@ import android.widget.*; import androidx.drawerlayout.widget.DrawerLayout; -import com.google.android.material.navigation.NavigationView; import com.google.gson.JsonSyntaxException; import com.kdt.pickafile.*; import java.io.*; @@ -21,7 +20,7 @@ import net.kdt.pojavlaunch.customcontrols.*; public class CustomControlsActivity extends BaseActivity { private DrawerLayout mDrawerLayout; - private NavigationView mDrawerNavigationView; + private ListView mDrawerNavigationView; private ControlLayout mControlLayout; public boolean isModified = false; @@ -40,9 +39,30 @@ public class CustomControlsActivity extends BaseActivity { mControlLayout = (ControlLayout) findViewById(R.id.customctrl_controllayout); mDrawerLayout = (DrawerLayout) findViewById(R.id.customctrl_drawerlayout); - mDrawerNavigationView = (NavigationView) findViewById(R.id.customctrl_navigation_view); + mDrawerNavigationView = (ListView) findViewById(R.id.customctrl_navigation_view); - mDrawerNavigationView.setNavigationItemSelectedListener( + mDrawerNavigationView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1,getResources().getStringArray(R.array.menu_customcontrol))); + mDrawerNavigationView.setOnItemClickListener((parent, view, position, id) -> { + switch(position) { + case 0: + mControlLayout.addControlButton(new ControlData("New")); + break; + case 1: + mControlLayout.addDrawer(new ControlDrawerData()); + break; + case 2: + load(mControlLayout); + break; + case 3: + save(false, mControlLayout); + break; + case 4: + dialogSelectDefaultCtrl(mControlLayout); + break; + } + mDrawerLayout.closeDrawers(); + }); + /*mDrawerNavigationView.setNavigationItemSelectedListener( menuItem -> { switch (menuItem.getItemId()) { case R.id.menu_ctrl_load: @@ -66,7 +86,7 @@ public class CustomControlsActivity extends BaseActivity { mDrawerLayout.closeDrawers(); return true; }); - + */ mControlLayout.setActivity(this); mControlLayout.setModifiable(true); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java index 69c8fbd27..9a2f27a67 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -3,6 +3,9 @@ package net.kdt.pojavlaunch; import android.app.Activity; import android.content.Intent; import android.os.*; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; import net.kdt.pojavlaunch.customcontrols.*; @@ -22,34 +25,32 @@ public class MainActivity extends BaseMainActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + initLayout(R.layout.activity_basemain); // Set the sustained performance mode for available APIs if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) getWindow().setSustainedPerformanceMode(PREF_SUSTAINED_PERFORMANCE); - - super.ingameControlsEditorListener = menuItem -> { - switch (menuItem.getItemId()) { - case R.id.menu_ctrl_load: - CustomControlsActivity.load(mControlLayout); - break; - case R.id.menu_ctrl_add: + ingameControlsEditorArrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.menu_customcontrol)); + ingameControlsEditorListener = (parent, view, position, id) -> { + switch(position) { + case 0: mControlLayout.addControlButton(new ControlData("New")); break; - case R.id.menu_ctrl_add_drawer: + case 1: mControlLayout.addDrawer(new ControlDrawerData()); break; - case R.id.menu_ctrl_selectdefault: - CustomControlsActivity.dialogSelectDefaultCtrl(mControlLayout); + case 2: + CustomControlsActivity.load(mControlLayout); break; - case R.id.menu_ctrl_save: + case 3: CustomControlsActivity.save(true,mControlLayout); break; + case 4: + CustomControlsActivity.dialogSelectDefaultCtrl(mControlLayout); + break; } - //Toast.makeText(MainActivity.this, menuItem.getTitle() + ":" + menuItem.getItemId(), Toast.LENGTH_SHORT).show(); - return true; }; - // Recompute the gui scale when options are changed optionListener = MCOptionUtils::getMcScale; MCOptionUtils.addMCOptionListener(optionListener); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index 68e71a10d..08af84e28 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -38,10 +38,6 @@ import static android.os.Build.VERSION_CODES.Q; import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_IGNORE_NOTCH; import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_NOTCH_SIZE; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowInsetsCompat; -import androidx.core.view.WindowInsetsControllerCompat; - public final class Tools { public static final boolean ENABLE_DEV_FEATURES = BuildConfig.DEBUG; diff --git a/app_pojavlauncher/src/main/res/layout/activity_basemain.xml b/app_pojavlauncher/src/main/res/layout/activity_basemain.xml index 8eb5476dc..8d2452ed9 100644 --- a/app_pojavlauncher/src/main/res/layout/activity_basemain.xml +++ b/app_pojavlauncher/src/main/res/layout/activity_basemain.xml @@ -55,10 +55,11 @@ - diff --git a/app_pojavlauncher/src/main/res/layout/activity_custom_controls.xml b/app_pojavlauncher/src/main/res/layout/activity_custom_controls.xml index 51ef1ffa4..907adfe14 100644 --- a/app_pojavlauncher/src/main/res/layout/activity_custom_controls.xml +++ b/app_pojavlauncher/src/main/res/layout/activity_custom_controls.xml @@ -26,13 +26,13 @@ - + android:background="?attr/colorBackgroundFloating" + android:fitsSystemWindows="false" /> diff --git a/app_pojavlauncher/src/main/res/values/headings_array.xml b/app_pojavlauncher/src/main/res/values/headings_array.xml index a7e209b0f..68c405575 100644 --- a/app_pojavlauncher/src/main/res/values/headings_array.xml +++ b/app_pojavlauncher/src/main/res/values/headings_array.xml @@ -5,6 +5,23 @@ @string/mcl_setting_renderer_virgl + + + @string/customctrl_addbutton + @string/customctrl_addbutton_drawer + @string/global_load + @string/global_save + @string/customctrl_selectdefault + + + + @string/control_forceclose + @string/control_viewout + @string/control_adebug + @string/control_customkey + @string/mcl_setting_title_mousespeed + @string/mcl_option_customcontrol + opengles2