diff --git a/app/src/main/java/com/all/pdfreader/pro/app/ui/act/MainActivity.kt b/app/src/main/java/com/all/pdfreader/pro/app/ui/act/MainActivity.kt index d856d31..19f2522 100644 --- a/app/src/main/java/com/all/pdfreader/pro/app/ui/act/MainActivity.kt +++ b/app/src/main/java/com/all/pdfreader/pro/app/ui/act/MainActivity.kt @@ -15,6 +15,7 @@ import com.all.pdfreader.pro.app.ui.fragment.FavoriteFrag import com.all.pdfreader.pro.app.ui.fragment.HomeFrag import com.all.pdfreader.pro.app.ui.fragment.RecentlyFrag import com.all.pdfreader.pro.app.ui.fragment.ToolsFrag +import com.all.pdfreader.pro.app.util.AppUtils.setDebouncedClickWithAnimation import com.all.pdfreader.pro.app.util.FileChangeObserver import com.all.pdfreader.pro.app.util.FileUtils import com.all.pdfreader.pro.app.util.PdfMetadataExtractor @@ -98,6 +99,18 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback //直接跳转到权限设置页面 requestPermissions() } + + binding.sidebarBtn.setDebouncedClickWithAnimation { + + } + + binding.searchBtn.setDebouncedClickWithAnimation { + + } + + binding.sortingBtn.setDebouncedClickWithAnimation { + + } } private fun switchFragment(target: Fragment) { diff --git a/app/src/main/java/com/all/pdfreader/pro/app/util/AppUtils.kt b/app/src/main/java/com/all/pdfreader/pro/app/util/AppUtils.kt new file mode 100644 index 0000000..7a3b90c --- /dev/null +++ b/app/src/main/java/com/all/pdfreader/pro/app/util/AppUtils.kt @@ -0,0 +1,47 @@ +package com.all.pdfreader.pro.app.util + +import android.view.View + +object AppUtils { + + /** + * 为 View 点击事件添加防抖点击 + 动画 + 执行逻辑 + * + * @param debounceTime 防抖间隔,默认 500 毫秒 + * @param onClick 点击后执行的逻辑(动画完成后调用) + */ + fun View.setDebouncedClickWithAnimation( + debounceTime: Long = 500L, + onClick: () -> Unit + ) { + var lastClickTime = 0L + + this.setOnClickListener { + val currentTime = System.currentTimeMillis() + if (currentTime - lastClickTime < debounceTime) { + return@setOnClickListener + } + lastClickTime = currentTime + + // 动画 + 禁用点击 + this.isEnabled = false + this.animate() + .scaleX(1.2f) + .scaleY(1.2f) + .setDuration(150) + .withEndAction { + this.animate() + .scaleX(1f) + .scaleY(1f) + .setDuration(150) + .withEndAction { + this.isEnabled = true + onClick() // 执行传入的逻辑 + } + .start() + } + .start() + } + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable/dr_round_click_effect_bg.xml b/app/src/main/res/drawable/dr_round_click_effect_bg.xml new file mode 100644 index 0000000..eb29795 --- /dev/null +++ b/app/src/main/res/drawable/dr_round_click_effect_bg.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/search.xml b/app/src/main/res/drawable/search.xml new file mode 100644 index 0000000..8cd097d --- /dev/null +++ b/app/src/main/res/drawable/search.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/sidebar.xml b/app/src/main/res/drawable/sidebar.xml new file mode 100644 index 0000000..48aceef --- /dev/null +++ b/app/src/main/res/drawable/sidebar.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/sorting.xml b/app/src/main/res/drawable/sorting.xml new file mode 100644 index 0000000..453b0f2 --- /dev/null +++ b/app/src/main/res/drawable/sorting.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b73c530..673be4a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -2,7 +2,7 @@ + + + + + + + + + + + + + + + + + + + + + + android:layout_height="68dp"> #E6E6E6 #F6F6F6 #E0E0E0 + #2c2c2c \ No newline at end of file