From b9126d2372fa703add2f8990053ca7bcd499aaee Mon Sep 17 00:00:00 2001 From: zarazaex69 Date: Sat, 4 Apr 2026 00:43:26 +0300 Subject: [PATCH] refactor: streamline main UI by removing redundant menu options and recycler item actions --- .../com/v2ray/ang/handler/AngConfigManager.kt | 10 +- .../java/com/v2ray/ang/ui/MainActivity.kt | 51 +--------- .../com/v2ray/ang/ui/MainRecyclerAdapter.kt | 29 ------ .../src/main/res/drawable/ic_lite_bolt.xml | 9 ++ .../app/src/main/res/layout/activity_main.xml | 85 ++++++++++------- .../main/res/layout/item_recycler_main.xml | 92 +------------------ V2rayNG/app/src/main/res/menu/menu_drawer.xml | 18 ---- V2rayNG/app/src/main/res/menu/menu_main.xml | 40 +------- .../app/src/main/res/values-ru/strings.xml | 4 +- V2rayNG/app/src/main/res/values/strings.xml | 2 + 10 files changed, 77 insertions(+), 263 deletions(-) create mode 100644 V2rayNG/app/src/main/res/drawable/ic_lite_bolt.xml diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt index dadea7ef..21997527 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt @@ -617,18 +617,10 @@ object AngConfigManager { * @return The generated description. */ fun generateDescription(profile: ProfileItem): String { - // Hide xxx:xxx:***/xxx.xxx.xxx.*** val server = profile.server val port = profile.serverPort if (server.isNullOrBlank() && port.isNullOrBlank()) return "" - val addrPart = server?.let { - if (it.contains(":")) - it.split(":").take(2).joinToString(":", postfix = ":***") - else - it.split('.').dropLast(1).joinToString(".", postfix = ".***") - } ?: "" - - return "$addrPart : ${port ?: ""}" + return "$server : ${port ?: ""}" } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainActivity.kt index 7bdff39f..cf95906d 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainActivity.kt @@ -82,6 +82,8 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect binding.drawerLayout.addDrawerListener(toggle) toggle.syncState() binding.navView.setNavigationItemSelectedListener(this) + findViewById(R.id.tv_forked)?.movementMethod = android.text.method.LinkMovementMethod.getInstance() + findViewById(R.id.tv_developed)?.movementMethod = android.text.method.LinkMovementMethod.getInstance() onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { if (binding.drawerLayout.isDrawerOpen(GravityCompat.START)) { @@ -120,10 +122,10 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect val firstServer = mainViewModel.serversCache.firstOrNull() if (firstServer != null) { MmkvManager.setSelectServer(firstServer.guid) - toast("ЛАЙТ: Подключаемся к быстрейшему серверу") + toast("Подключаемся к быстрейшему серверу") startV2RayWithPermission() } else { - toast("ЛАЙТ: Серверы не найдены!") + toast("Серверы не найдены!") } } } @@ -176,7 +178,7 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect V2RayServiceManager.stopVService(this) } - toast("ЛАЙТ: Выполняется замер задержки. Ожидаем завершения...") + toast("Выполняется замер задержки. Ожидаем завершения...") isLiteTesting = true mainViewModel.testAllRealPing() } @@ -255,58 +257,17 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { - R.id.export_all -> { - exportAll() - true - } - - R.id.ping_all -> { - toast(getString(R.string.connection_test_testing_count, mainViewModel.serversCache.count())) - mainViewModel.testAllTcping() - true - } - R.id.real_ping_all -> { toast(getString(R.string.connection_test_testing_count, mainViewModel.serversCache.count())) mainViewModel.testAllRealPing() true } - R.id.service_restart -> { - restartV2Ray() - true - } - - R.id.del_all_config -> { - delAllConfig() - true - } - - R.id.del_duplicate_config -> { - delDuplicateConfig() - true - } - - R.id.del_invalid_config -> { - delInvalidConfig() - true - } - - R.id.sort_by_test_results -> { - sortByTestResults() - true - } - R.id.sub_update -> { importConfigViaSub() true } - R.id.locate_selected_config -> { - locateSelectedServer() - true - } - else -> super.onOptionsItemSelected(item) } @@ -589,10 +550,8 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect override fun onNavigationItemSelected(item: MenuItem): Boolean { // Handle navigation view item clicks here. when (item.itemId) { - R.id.sub_setting -> requestActivityLauncher.launch(Intent(this, SubSettingActivity::class.java)) R.id.per_app_proxy_settings -> requestActivityLauncher.launch(Intent(this, PerAppProxyActivity::class.java)) R.id.settings -> requestActivityLauncher.launch(Intent(this, SettingsActivity::class.java)) - R.id.backup_restore -> requestActivityLauncher.launch(Intent(this, BackupActivity::class.java)) } binding.drawerLayout.closeDrawer(GravityCompat.START) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt index 806d6323..159afa17 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt @@ -58,7 +58,6 @@ class MainRecyclerAdapter( //Name address holder.itemMainBinding.tvName.text = profile.remarks holder.itemMainBinding.tvStatistics.text = getAddress(profile) - holder.itemMainBinding.tvType.text = profile.configType.name //TestResult val aff = MmkvManager.decodeServerAffiliationInfo(guid) @@ -81,34 +80,6 @@ class MainRecyclerAdapter( holder.itemMainBinding.tvSubscription.text = subRemarks holder.itemMainBinding.layoutSubscription.visibility = if (subRemarks.isEmpty()) View.GONE else View.VISIBLE - //layout - if (doubleColumnDisplay) { - holder.itemMainBinding.layoutShare.visibility = View.GONE - holder.itemMainBinding.layoutEdit.visibility = View.GONE - holder.itemMainBinding.layoutRemove.visibility = View.GONE - holder.itemMainBinding.layoutMore.visibility = View.VISIBLE - - holder.itemMainBinding.layoutMore.setOnClickListener { - adapterListener?.onShare(guid, profile, position, true) - } - } else { - holder.itemMainBinding.layoutShare.visibility = View.VISIBLE - holder.itemMainBinding.layoutEdit.visibility = View.VISIBLE - holder.itemMainBinding.layoutRemove.visibility = View.VISIBLE - holder.itemMainBinding.layoutMore.visibility = View.GONE - - holder.itemMainBinding.layoutShare.setOnClickListener { - adapterListener?.onShare(guid, profile, position, false) - } - - holder.itemMainBinding.layoutEdit.setOnClickListener { - adapterListener?.onEdit(guid, position, profile) - } - holder.itemMainBinding.layoutRemove.setOnClickListener { - adapterListener?.onRemove(guid, position) - } - } - holder.itemMainBinding.infoContainer.setOnClickListener { adapterListener?.onSelectServer(guid) } diff --git a/V2rayNG/app/src/main/res/drawable/ic_lite_bolt.xml b/V2rayNG/app/src/main/res/drawable/ic_lite_bolt.xml new file mode 100644 index 00000000..f23badbe --- /dev/null +++ b/V2rayNG/app/src/main/res/drawable/ic_lite_bolt.xml @@ -0,0 +1,9 @@ + + + diff --git a/V2rayNG/app/src/main/res/layout/activity_main.xml b/V2rayNG/app/src/main/res/layout/activity_main.xml index 52320dce..4cd6b8ea 100644 --- a/V2rayNG/app/src/main/res/layout/activity_main.xml +++ b/V2rayNG/app/src/main/res/layout/activity_main.xml @@ -90,59 +90,80 @@ - + android:layout_marginEnd="@dimen/padding_spacing_dp16" + android:layout_marginBottom="@dimen/view_height_dp36" + android:gravity="center_horizontal" + android:orientation="vertical"> + + - - - - - - - + app:useCompatPadding="true" /> + - + android:background="?android:attr/windowBackground" + android:orientation="vertical"> - + + + + + + + + + diff --git a/V2rayNG/app/src/main/res/layout/item_recycler_main.xml b/V2rayNG/app/src/main/res/layout/item_recycler_main.xml index b0760742..37cdfb85 100644 --- a/V2rayNG/app/src/main/res/layout/item_recycler_main.xml +++ b/V2rayNG/app/src/main/res/layout/item_recycler_main.xml @@ -99,89 +99,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - @@ -193,16 +111,10 @@ android:paddingTop="@dimen/padding_spacing_dp8" android:paddingEnd="@dimen/padding_spacing_dp8"> - + android:layout_weight="1" /> - - - - - - - - - diff --git a/V2rayNG/app/src/main/res/menu/menu_main.xml b/V2rayNG/app/src/main/res/menu/menu_main.xml index 4fbbddd5..3dceca1d 100644 --- a/V2rayNG/app/src/main/res/menu/menu_main.xml +++ b/V2rayNG/app/src/main/res/menu/menu_main.xml @@ -7,45 +7,9 @@ android:title="Проверить задержку профилей" app:showAsAction="always" /> - - - - - - - - - + app:showAsAction="always" /> \ No newline at end of file diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index 4fe1ebd9..b811cd02 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -6,6 +6,8 @@ Открыть панель навигации Закрыть панель навигации Успешный перенос данных! + V2RayNG]]> + openlibrecommunity]]> Остановить службу Перенос данных не выполнен! Потяните вниз для обновления! @@ -21,7 +23,7 @@ Сбой при запуске служб - OlcNG by zarazaex + Olcng Добавить профиль Сохранить профиль Изменить профиль diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 35167066..d9428db9 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -7,6 +7,8 @@ Open navigation drawer Close navigation drawer Data migration success! + V2RayNG]]> + openlibrecommunity]]> Stop service Data migration failed! Please pull down to refresh!