From 741a2720c56ec482967555f3f7490311030c0891 Mon Sep 17 00:00:00 2001 From: kunfei Date: Thu, 3 Mar 2022 20:34:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E7=AB=A0=E6=8D=A2=E6=BA=90=E5=92=8C?= =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E5=88=B7=E6=96=B0=E6=94=BE=E5=88=B0=E9=95=BF?= =?UTF-8?q?=E6=8C=89=E9=87=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/read/ReadBookActivity.kt | 30 ++++++++++++ .../io/legado/app/utils/MenuExtensions.kt | 5 +- app/src/main/res/menu/book_read.xml | 46 +------------------ .../main/res/menu/book_read_change_source.xml | 17 +++++++ app/src/main/res/menu/book_read_refresh.xml | 23 ++++++++++ 5 files changed, 75 insertions(+), 46 deletions(-) create mode 100644 app/src/main/res/menu/book_read_change_source.xml create mode 100644 app/src/main/res/menu/book_read_refresh.xml diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 32e9ced23..12958303a 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -7,6 +7,7 @@ import android.content.res.Configuration import android.os.Bundle import android.view.* import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.widget.PopupMenu import androidx.core.view.get import androidx.core.view.isVisible import androidx.core.view.size @@ -67,6 +68,7 @@ class ReadBookActivity : BaseReadBookActivity(), ReadView.CallBack, TextActionMenu.CallBack, ContentTextView.CallBack, + PopupMenu.OnMenuItemClickListener, ReadMenu.CallBack, SearchMenu.CallBack, ReadAloudDialog.CallBack, @@ -118,6 +120,8 @@ class ReadBookActivity : BaseReadBookActivity(), } } private var menu: Menu? = null + private var changeSourceMenu: PopupMenu? = null + private var refreshMenu: PopupMenu? = null val textActionMenu: TextActionMenu by lazy { TextActionMenu(this, this) } @@ -193,6 +197,26 @@ class ReadBookActivity : BaseReadBookActivity(), override fun onCompatCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.book_read, menu) + menu.findItem(R.id.menu_change_source)?.setOnLongClickListener(menu) { + if (changeSourceMenu == null) { + changeSourceMenu = PopupMenu(this, it).apply { + inflate(R.menu.book_read_change_source) + this.menu.applyOpenTint(this@ReadBookActivity) + setOnMenuItemClickListener(this@ReadBookActivity) + } + } + changeSourceMenu!!.show() + } + menu.findItem(R.id.menu_refresh)?.setOnLongClickListener(menu) { + if (refreshMenu == null) { + refreshMenu = PopupMenu(this, it).apply { + inflate(R.menu.book_read_refresh) + this.menu.applyOpenTint(this@ReadBookActivity) + setOnMenuItemClickListener(this@ReadBookActivity) + } + } + refreshMenu!!.show() + } return super.onCompatCreateOptionsMenu(menu) } @@ -238,6 +262,7 @@ class ReadBookActivity : BaseReadBookActivity(), */ override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { + R.id.menu_change_source, R.id.menu_book_change_source -> { binding.readMenu.runMenuOut() ReadBook.book?.let { @@ -254,6 +279,7 @@ class ReadBookActivity : BaseReadBookActivity(), ChangeChapterSourceDialog(book.name, book.author, chapter.index, chapter.title) ) } + R.id.menu_refresh, R.id.menu_refresh_dur -> { if (ReadBook.bookSource == null) { upContent() @@ -352,6 +378,10 @@ class ReadBookActivity : BaseReadBookActivity(), return super.onCompatOptionsItemSelected(item) } + override fun onMenuItemClick(item: MenuItem): Boolean { + return onCompatOptionsItemSelected(item) + } + /** * 按键拦截,显示菜单 */ diff --git a/app/src/main/java/io/legado/app/utils/MenuExtensions.kt b/app/src/main/java/io/legado/app/utils/MenuExtensions.kt index 7146e76fd..f43253821 100644 --- a/app/src/main/java/io/legado/app/utils/MenuExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/MenuExtensions.kt @@ -6,6 +6,7 @@ import android.annotation.SuppressLint import android.content.Context import android.view.Menu import android.view.MenuItem +import android.view.View import android.widget.ImageButton import androidx.appcompat.view.menu.MenuBuilder import androidx.appcompat.view.menu.MenuItemImpl @@ -60,9 +61,9 @@ fun Menu.applyOpenTint(context: Context) { } } -fun MenuItem.setOnLongClickListener(menu: Menu, function: () -> (Unit)) { +fun MenuItem.setOnLongClickListener(menu: Menu, function: (view: View) -> (Unit)) { setActionView(R.layout.view_action_button) actionView.findViewById(R.id.item).setImageDrawable(icon) - actionView.setOnLongClickListener { function.invoke(); true } + actionView.setOnLongClickListener { function.invoke(actionView); true } actionView.setOnClickListener { menu.performIdentifierAction(itemId, 0) } } \ No newline at end of file diff --git a/app/src/main/res/menu/book_read.xml b/app/src/main/res/menu/book_read.xml index b4e820c69..03238bc70 100644 --- a/app/src/main/res/menu/book_read.xml +++ b/app/src/main/res/menu/book_read.xml @@ -9,55 +9,13 @@ android:id="@+id/menu_change_source" android:icon="@drawable/ic_exchange" android:title="@string/change_origin" - app:showAsAction="always"> - - - - - - - - - - + app:showAsAction="always" /> - - - - - - - - - - - - + app:showAsAction="always" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/book_read_refresh.xml b/app/src/main/res/menu/book_read_refresh.xml new file mode 100644 index 000000000..73f08712c --- /dev/null +++ b/app/src/main/res/menu/book_read_refresh.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file