From 968f1d6c98fac3c4ba34079b60a4009f148abc9e Mon Sep 17 00:00:00 2001 From: GangJust <201741884@qq.com> Date: Fri, 12 Jan 2024 14:39:27 +0800 Subject: [PATCH] remove bottom controller bar --- app/build.gradle | 4 +- app/src/main/assets/update.log | 4 +- app/src/main/assets/version | 2 +- app/src/main/java/io/github/fplus/Themes.kt | 27 +++-- .../src/main/java/io/github/fplus/Constant.kt | 10 +- .../src/main/java/io/github/fplus/HookInit.kt | 7 +- .../io/github/fplus/core/base/BaseHook.kt | 4 +- .../io/github/fplus/core/config/ConfigV1.kt | 24 ++++- .../github/fplus/core/helper/DexkitBuilder.kt | 101 ++++++------------ .../io/github/fplus/core/hook/DouYinMain.kt | 72 ++++++------- .../fplus/core/hook/HAbstractFeedAdapter.kt | 7 +- .../io/github/fplus/core/hook/HActivity.kt | 3 +- .../github/fplus/core/hook/HBottomCtrlBar.kt | 41 +++++++ .../fplus/core/hook/HCommentAudioView.kt | 11 +- .../core/hook/HCommentListPageFragment.kt | 4 +- .../fplus/core/hook/HConversationFragment.kt | 4 +- .../core/hook/HCornerExtensionsPopupWindow.kt | 29 ++--- .../fplus/core/hook/HCustomizedUISeekBar.kt | 20 ++-- .../fplus/core/hook/HDetailPageFragment.kt | 4 +- .../java/io/github/fplus/core/hook/HDialog.kt | 4 +- .../github/fplus/core/hook/HDialogFragment.kt | 6 +- .../hook/HDisallowInterceptRelativeLayout.kt | 5 +- .../fplus/core/hook/HEmojiDetailDialog.kt | 4 +- .../fplus/core/hook/HEmojiDetailDialogNew.kt | 4 +- .../fplus/core/hook/HFlippableViewPager.kt | 4 +- .../core/hook/HGifEmojiDetailActivity.kt | 4 +- .../fplus/core/hook/HInteractStickerParent.kt | 6 +- .../fplus/core/hook/HLivePlayActivity.kt | 4 +- .../github/fplus/core/hook/HMainActivity.kt | 5 +- .../fplus/core/hook/HMainBottomTabItem.kt | 12 ++- .../fplus/core/hook/HMainBottomTabView.kt | 29 ++--- .../core/hook/HMainTabStripScrollView.kt | 8 +- .../hook/HPenetrateTouchRelativeLayout.kt | 6 +- .../fplus/core/hook/HPlayerController.kt | 4 +- .../fplus/core/hook/HPoiCreateInstanceImpl.kt | 4 +- .../io/github/fplus/core/hook/HPopupWindow.kt | 6 +- .../core/hook/HSeekBarSpeedModeBottomMask.kt | 7 +- .../core/hook/HSideBarNestedScrollView.kt | 6 +- .../fplus/core/hook/HVerticalViewPager.kt | 4 +- .../fplus/core/hook/HVideoPlayerHelper.kt | 29 ++--- .../fplus/core/hook/HVideoViewHolder.kt | 54 ++++++---- .../core/hook/HVideoViewHolderRootView.kt | 4 +- .../ui/activity/FreedomSettingActivity.kt | 40 ++++++- .../core/ui/viewmodel/FreedomSettingVM.kt | 12 ++- xpler | 2 +- 45 files changed, 324 insertions(+), 327 deletions(-) create mode 100644 core/src/main/java/io/github/fplus/core/hook/HBottomCtrlBar.kt diff --git a/app/build.gradle b/app/build.gradle index 9bc30c4..7cd8336 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "io.github.fplus" minSdk 24 targetSdk 33 - versionCode 112 - versionName "1.2.5" + versionCode 117 + versionName "1.2.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/main/assets/update.log b/app/src/main/assets/update.log index c9d28b6..ceefd40 100644 --- a/app/src/main/assets/update.log +++ b/app/src/main/assets/update.log @@ -1,7 +1,9 @@ v1.2.6 增加下载弹窗文案复制选项 -增加视频右侧控件栏自定义隐藏 +增加视频右侧控件自定义隐藏 +增加视频右侧控件在视频控件透明基础上的再次调整 增加评论区展开时顶部搜索按钮移除(无需设置) +增加部分版本暂停视频时底部控制栏隐藏 调整状态栏、导航栏沉浸模式为自动隐藏 移除“分享->复制链接”无水印下载方式 修复部分小问题 diff --git a/app/src/main/assets/version b/app/src/main/assets/version index 7704187..ae8af70 100644 --- a/app/src/main/assets/version +++ b/app/src/main/assets/version @@ -1 +1 @@ -1.2.5-112 \ No newline at end of file +1.2.6-117 \ No newline at end of file diff --git a/app/src/main/java/io/github/fplus/Themes.kt b/app/src/main/java/io/github/fplus/Themes.kt index 9ff4885..9023e0f 100644 --- a/app/src/main/java/io/github/fplus/Themes.kt +++ b/app/src/main/java/io/github/fplus/Themes.kt @@ -112,23 +112,22 @@ object Themes { colors = nowColors.colors, typography = nowTypography, shapes = ShapeRes.defaultShapes, - content = { - //沉浸式状态栏 - rememberSystemUiController().run { - setSystemBarsColor( - color = nowColors.colors.background, - darkIcons = !Themes.isDark, - ) - } - //沉浸式则补充间隙 - Surface( - modifier = if (Themes.isImmersive) Modifier.windowInsetsPadding(WindowInsets.systemBars) else Modifier, + ){ + //沉浸式状态栏 + rememberSystemUiController().run { + setSystemBarsColor( color = nowColors.colors.background, - contentColor = nowColors.colors.background, - content = { content() } + darkIcons = !Themes.isDark, ) } - ) + //沉浸式则补充间隙 + Surface( + modifier = if (Themes.isImmersive) Modifier.windowInsetsPadding(WindowInsets.systemBars) else Modifier, + color = nowColors.colors.background, + contentColor = nowColors.colors.background, + content = content, + ) + } } } diff --git a/core/src/main/java/io/github/fplus/Constant.kt b/core/src/main/java/io/github/fplus/Constant.kt index 321d48b..5448e20 100644 --- a/core/src/main/java/io/github/fplus/Constant.kt +++ b/core/src/main/java/io/github/fplus/Constant.kt @@ -6,11 +6,11 @@ object Constant { val modulePackage = "io.github.fplus" val scopes = arrayOf( - "com.ss.android.ugc.aweme" at "com.ss.android.ugc.aweme.app.host.AwemeHostApplication", - "com.ss.android.ugc.aweme.lite" at "com.ss.android.ugc.aweme.app.host.AwemeHostApplication", - "com.ss.android.ugc.live" at "com.ss.android.ugc.aweme.app.host.AwemeHostApplication", - "com.ss.android.ugc.awemf" at "com.ss.android.ugc.aweme.app.host.AwemeHostApplication", // test - "com.ss.android.ugc.awemg" at "com.ss.android.ugc.aweme.app.host.AwemeHostApplication", // test + "com.ss.android.ugc.aweme" at ("com.ss.android.ugc.aweme.app.host.AwemeHostApplication" to "com.ss.android.ugc.aweme"), + "com.ss.android.ugc.aweme.lite" at ("com.ss.android.ugc.aweme.app.host.AwemeHostApplication" to "com.ss.android.ugc.aweme.lite"), + "com.ss.android.ugc.live" at ("com.ss.android.ugc.aweme.app.host.AwemeHostApplication" to "com.ss.android.ugc.live"), + "com.ss.android.ugc.awemf" at ("com.ss.android.ugc.aweme.app.host.AwemeHostApplication" to "com.ss.android.ugc.awemf"), // test + "com.ss.android.ugc.awemg" at ("com.ss.android.ugc.aweme.app.host.AwemeHostApplication" to "com.ss.android.ugc.awemg"), // test ) } \ No newline at end of file diff --git a/core/src/main/java/io/github/fplus/HookInit.kt b/core/src/main/java/io/github/fplus/HookInit.kt index 011fc05..cfe681c 100644 --- a/core/src/main/java/io/github/fplus/HookInit.kt +++ b/core/src/main/java/io/github/fplus/HookInit.kt @@ -4,9 +4,7 @@ import android.app.Application import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.hook.DouYinMain import io.github.xpler.HookEntrance -import io.github.xpler.core.log.XplerLog import io.github.xpler.core.wrapper.ApplicationHookStart -import io.github.xpler.core.wrapper.DefaultHookStart class HookInit : HookEntrance(), ApplicationHookStart { override val modulePackage: String @@ -15,12 +13,11 @@ class HookInit : HookEntrance(), ApplicationHookStart { override val scopes: Array get() = Constant.scopes - override fun onCreateBefore(lpparam: XC_LoadPackage.LoadPackageParam, hostApp: Application) { + override fun onCreateBefore(lp: XC_LoadPackage.LoadPackageParam, hostApp: Application) { // } - override fun onCreateAfter(lpparam: XC_LoadPackage.LoadPackageParam, hostApp: Application) { - XplerLog.d("Freedom+: starting!!") + override fun onCreateAfter(lp: XC_LoadPackage.LoadPackageParam, hostApp: Application) { DouYinMain(hostApp) } } \ No newline at end of file diff --git a/core/src/main/java/io/github/fplus/core/base/BaseHook.kt b/core/src/main/java/io/github/fplus/core/base/BaseHook.kt index 329b154..60a02c2 100644 --- a/core/src/main/java/io/github/fplus/core/base/BaseHook.kt +++ b/core/src/main/java/io/github/fplus/core/base/BaseHook.kt @@ -22,7 +22,6 @@ import com.freegang.ktutils.app.IProgressNotification import com.freegang.ktutils.app.KNotifiUtils import com.freegang.ktutils.app.KToastUtils import com.freegang.ktutils.app.isDarkMode -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.R import io.github.fplus.core.databinding.DialogChoiceLayoutBinding import io.github.fplus.core.databinding.DialogInputChoiceLayoutBinding @@ -45,8 +44,7 @@ import kotlinx.coroutines.cancelChildren import kotlinx.coroutines.isActive import kotlinx.coroutines.launch -abstract class BaseHook(lpparam: XC_LoadPackage.LoadPackageParam) : - HookEntity(lpparam) { +abstract class BaseHook() : HookEntity() { protected val handler: Handler = Handler(Looper.getMainLooper()) private val mainScope: CoroutineScope = CoroutineScope(Dispatchers.Main) private var toast: Toast? = null diff --git a/core/src/main/java/io/github/fplus/core/config/ConfigV1.kt b/core/src/main/java/io/github/fplus/core/config/ConfigV1.kt index 769838a..300ca7f 100644 --- a/core/src/main/java/io/github/fplus/core/config/ConfigV1.kt +++ b/core/src/main/java/io/github/fplus/core/config/ConfigV1.kt @@ -113,11 +113,16 @@ class ConfigV1 private constructor() { field = value } - /// 首页控件透明度 [顶部导航, 视频控件, 底部导航] - var translucentValue: List = listOf(50, 50, 50) + /// 首页控件透明度 [顶部导航, 视频控件, 视频控件右侧, 底部导航] + var translucentValue: List = listOf(50, 50, 50, 50) get() { - field = mmkv.getString("translucentValue", "50, 50, 50")!!.split(",").map { it.trim().toInt() } - return field + field = mmkv.getString("translucentValue", "50, 50, 50, 50")!!.split(",").map { it.trim().toInt() } + + return if (field.size == 3) { + listOf(field[0], field[1], field[1], field[2]) + } else { + field + } } set(value) { mmkv.putString("translucentValue", value.joinToString()) @@ -306,6 +311,17 @@ class ConfigV1 private constructor() { field = value } + /// 移除底部播放控制栏 + var isRemoveBottomCtrlBar: Boolean = false + get() { + field = mmkv.getBoolean("isRemoveBottomCtrlBar", false) + return field + } + set(value) { + mmkv.putBoolean("isRemoveBottomCtrlBar", value) + field = value + } + /// 全屏沉浸式 var isImmersive: Boolean = false get() { diff --git a/core/src/main/java/io/github/fplus/core/helper/DexkitBuilder.kt b/core/src/main/java/io/github/fplus/core/helper/DexkitBuilder.kt index 4c1c4c9..b084373 100644 --- a/core/src/main/java/io/github/fplus/core/helper/DexkitBuilder.kt +++ b/core/src/main/java/io/github/fplus/core/helper/DexkitBuilder.kt @@ -40,7 +40,6 @@ object DexkitBuilder { var conversationFragmentClazz: Class<*>? = null var seekBarSpeedModeBottomContainerClazz: Class<*>? = null var poiCreateInstanceImplClazz: Class<*>? = null - var videoPlayerStateClazz: Class<*>? = null var videoPlayerHelperClazz: Class<*>? = null var abstractFeedAdapterClazz: Class<*>? = null var recommendFeedFetchPresenterClazz: Class<*>? = null @@ -48,7 +47,7 @@ object DexkitBuilder { var detailPageFragmentClazz: Class<*>? = null var emojiApiProxyClazz: Class<*>? = null var emojiPopupWindowClazz: Class<*>? = null - var ripsChatRoomFragmentClazz: Class<*>? = null + var bottomCtrlBarClazz: Class<*>? = null var restartUtilsClazz: Class<*>? = null // methods @@ -97,7 +96,7 @@ object DexkitBuilder { * Dexkit开始搜索 */ private fun startSearch() { - KLogCat.tagD(TAG, "Dexkit开始搜索") + KLogCat.tagD(TAG, "Dexkit开始搜索: ${lpparam.appInfo.sourceDir}") System.loadLibrary("dexkit") DexKitBridge.create(lpparam.appInfo.sourceDir).use { bridge -> searchClass(bridge) @@ -310,52 +309,6 @@ object DexkitBuilder { } }.singleInstance("poiCreateInstanceImpl") - videoPlayerStateClazz = bridge.findClass { - matcher { - fields { - add { - type = "com.ss.android.ugc.aweme.feed.model.Aweme" - } - add { - type = "java.lang.String" - } - add { - type = "int" - } - add { - type { - modifiers = Modifier.INTERFACE - } - } - } - - methods { - add { - name = "" - params { - add { - type = "com.ss.android.ugc.aweme.feed.model.Aweme" - } - add { - type = "java.lang.String" - } - add { - type = "int" - } - add { - type = "int" - } - add { - type { - modifiers = Modifier.INTERFACE - } - } - } - } - } - } - }.singleInstance("videoPlayerState") - emojiApiProxyClazz = bridge.findClass { matcher { fields { @@ -423,6 +376,29 @@ object DexkitBuilder { } }.singleInstance("mainBottomTabView") + bottomCtrlBarClazz = bridge.findClass { + searchPackages("X") + matcher { + superClass = "android.widget.FrameLayout" + fields { + add { + annotations { + add { + type = "dalvik.annotation.Signature" + addElement { + name = "value" + arrayValue { + addString("IPauseCtrlAction") + } + } + } + } + } + } + + } + }.singleInstance("bottomCtrlBar") + restartUtilsClazz = bridge.findClass { searchPackages("X") matcher { @@ -455,18 +431,9 @@ object DexkitBuilder { "DetailActOtherNitaView", ) } - addSearchGroup { - groupName = "ripsChatRoomFragment" - usingStrings = listOf( - "com/ss/android/ugc/aweme/im/sdk/chat/rips/RipsChatRoomFragment", - "RipsChatRoomFragment", - "a1128.b17614", - ) - } } DexkitBuilder.videoPlayerHelperClazz = findMaps.singleInstance("videoPlayerHelper") DexkitBuilder.detailPageFragmentClazz = findMaps.singleInstance("detailPageFragment") - DexkitBuilder.ripsChatRoomFragmentClazz = findMaps.singleInstance("ripsChatRoomFragment") } /** @@ -485,11 +452,10 @@ object DexkitBuilder { type = "com.ss.android.ugc.aweme.feed.ui.PenetrateTouchRelativeLayout" } } - } - - params { add { - type = "java.lang.Boolean" + field { + type = "com.ss.android.ugc.aweme.feed.model.VideoItemParams" + } } } @@ -546,7 +512,6 @@ object DexkitBuilder { conversationFragmentClazz = classCache.getStringOrDefault("conversationFragment").loadOrFindClass() seekBarSpeedModeBottomContainerClazz = classCache.getStringOrDefault("seekBarSpeedModeBottomContainer").loadOrFindClass() poiCreateInstanceImplClazz = classCache.getStringOrDefault("poiCreateInstanceImpl").loadOrFindClass() - videoPlayerStateClazz = classCache.getStringOrDefault("videoPlayerState").loadOrFindClass() videoPlayerHelperClazz = classCache.getStringOrDefault("videoPlayerHelper").loadOrFindClass() abstractFeedAdapterClazz = classCache.getStringOrDefault("abstractFeedAdapter").loadOrFindClass() recommendFeedFetchPresenterClazz = classCache.getStringOrDefault("recommendFeedFetchPresenter").loadOrFindClass() @@ -554,7 +519,7 @@ object DexkitBuilder { emojiPopupWindowClazz = classCache.getStringOrDefault("emojiPopupWindow").loadOrFindClass() detailPageFragmentClazz = classCache.getStringOrDefault("detailPageFragment").loadOrFindClass() emojiApiProxyClazz = classCache.getStringOrDefault("emojiApiProxy").loadOrFindClass() - ripsChatRoomFragmentClazz = classCache.getStringOrDefault("ripsChatRoomFragment").loadOrFindClass() + bottomCtrlBarClazz = classCache.getStringOrDefault("bottomCtrlBar").loadOrFindClass() restartUtilsClazz = classCache.getStringOrDefault("restartUtils").loadOrFindClass() } @@ -638,13 +603,9 @@ object DexkitBuilder { } return try { - app?.classLoader?.loadClass(this) + app?.classLoader?.loadClass(this) ?: lpparam.findClass(this) } catch (e: Throwable) { - if (e is LinkageError && "${e.message}".contains("overrides final")) { - return null // 过滤类似错误 - } - - lpparam.findClass(this) + null } } } \ No newline at end of file diff --git a/core/src/main/java/io/github/fplus/core/hook/DouYinMain.kt b/core/src/main/java/io/github/fplus/core/hook/DouYinMain.kt index e704207..2935c4b 100644 --- a/core/src/main/java/io/github/fplus/core/hook/DouYinMain.kt +++ b/core/src/main/java/io/github/fplus/core/hook/DouYinMain.kt @@ -15,9 +15,7 @@ import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.DexkitBuilder import io.github.fplus.plugin.proxy.v1.PluginBridge import io.github.xpler.core.log.XplerLog -import io.github.xpler.core.lpparam import io.github.xpler.loader.hostClassloader -import io.github.xpler.loader.injectClassLoader import kotlin.system.exitProcess class DouYinMain(private val app: Application) { @@ -28,8 +26,6 @@ class DouYinMain(private val app: Application) { init { runCatching { - injectClassLoader(lpparam, app.classLoader) - // 插件化注入 val stubClazz = hostClassloader!!.loadClass("com.ss.android.ugc.aweme.setting.ui.AboutActivity") PluginBridge.init(app, stubClazz) @@ -43,7 +39,6 @@ class DouYinMain(private val app: Application) { // 日志工具 KLogCat.init(app) - KLogCat.clearStorage() // KLogCat.silence() //静默 // 全局异常捕获工具 @@ -61,42 +56,43 @@ class DouYinMain(private val app: Application) { // search and hook DexkitBuilder.running( app = app, - version = 4, + version = 8, searchBefore = { - HActivity(lpparam) - HMainActivity(lpparam) - HLivePlayActivity(lpparam) - HDisallowInterceptRelativeLayout(lpparam) - HMainTabStripScrollView(lpparam) - HFlippableViewPager(lpparam) - HCustomizedUISeekBar(lpparam) - HPlayerController(lpparam) - HVideoViewHolderRootView(lpparam) - HPenetrateTouchRelativeLayout(lpparam) - HInteractStickerParent(lpparam) - // HCommentAudioView(lpparam) - HGifEmojiDetailActivity(lpparam) - HEmojiDetailDialog(lpparam) - - HDialog(lpparam) - // HDialogFragment(lpparam) - // HPopupWindow(lpparam) + HActivity() + HMainActivity() + HLivePlayActivity() + HDisallowInterceptRelativeLayout() + HMainTabStripScrollView() + HFlippableViewPager() + HCustomizedUISeekBar() + HPlayerController() + HVideoViewHolderRootView() + HPenetrateTouchRelativeLayout() + HInteractStickerParent() + // HCommentAudioView() + HGifEmojiDetailActivity() + HEmojiDetailDialog() + + HDialog() + // HDialogFragment() + // HPopupWindow() }, searchAfter = { - HSideBarNestedScrollView(lpparam) - HCornerExtensionsPopupWindow(lpparam) - HMainBottomTabView(lpparam) - HMainBottomTabItem(lpparam) - HCommentListPageFragment(lpparam) - HConversationFragment(lpparam) - HPoiCreateInstanceImpl(lpparam) - HSeekBarSpeedModeBottomMask(lpparam) - HVideoPlayerHelper(lpparam) - HVideoViewHolder(lpparam) - HAbstractFeedAdapter(lpparam) - HVerticalViewPager(lpparam) - HDetailPageFragment(lpparam) - HEmojiDetailDialogNew(lpparam) + HSideBarNestedScrollView() + HCornerExtensionsPopupWindow() + HMainBottomTabView() + HMainBottomTabItem() + HCommentListPageFragment() + HConversationFragment() + HPoiCreateInstanceImpl() + HSeekBarSpeedModeBottomMask() + HVideoPlayerHelper() + HVideoViewHolder() + HAbstractFeedAdapter() + HVerticalViewPager() + HDetailPageFragment() + HEmojiDetailDialogNew() + HBottomCtrlBar() } ) diff --git a/core/src/main/java/io/github/fplus/core/hook/HAbstractFeedAdapter.kt b/core/src/main/java/io/github/fplus/core/hook/HAbstractFeedAdapter.kt index d8cc3ee..f41d3c1 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HAbstractFeedAdapter.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HAbstractFeedAdapter.kt @@ -16,19 +16,16 @@ import com.freegang.ktutils.view.firstParentOrNull import com.freegang.ktutils.view.forEachChild import com.ss.android.ugc.aweme.ad.feed.VideoViewHolderRootView import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.DexkitBuilder import io.github.xpler.core.entity.NoneHook import io.github.xpler.core.entity.OnAfter -import io.github.xpler.core.entity.Param import io.github.xpler.core.hookBlockRunning import kotlinx.coroutines.cancel import kotlinx.coroutines.delay -class HAbstractFeedAdapter(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HAbstractFeedAdapter : BaseHook() { companion object { const val TAG = "HAbstractFeedAdapter" } @@ -42,7 +39,7 @@ class HAbstractFeedAdapter(lpparam: XC_LoadPackage.LoadPackageParam) : @OnAfter fun methodAfter( params: XC_MethodHook.MethodHookParam, - @Param("com.ss.android.ugc.aweme.feed.adapter.FeedTypeConfig") feedTypeConfig: Any?, + // @Param("com.ss.android.ugc.aweme.feed.adapter.FeedTypeConfig") feedTypeConfig: Any?, view: View?, i: Int, ) { diff --git a/core/src/main/java/io/github/fplus/core/hook/HActivity.kt b/core/src/main/java/io/github/fplus/core/hook/HActivity.kt index 4255230..6e11ab9 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HActivity.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HActivity.kt @@ -16,8 +16,7 @@ import io.github.xpler.core.entity.OnBefore import io.github.xpler.core.hookBlockRunning import io.github.xpler.core.thisActivity -class HActivity(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HActivity : BaseHook() { companion object { const val TAG = "HActivity" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HBottomCtrlBar.kt b/core/src/main/java/io/github/fplus/core/hook/HBottomCtrlBar.kt new file mode 100644 index 0000000..9dd3f07 --- /dev/null +++ b/core/src/main/java/io/github/fplus/core/hook/HBottomCtrlBar.kt @@ -0,0 +1,41 @@ +package io.github.fplus.core.hook + +import androidx.core.view.children +import androidx.core.view.isVisible +import de.robv.android.xposed.XC_MethodHook +import io.github.fplus.core.base.BaseHook +import io.github.fplus.core.config.ConfigV1 +import io.github.fplus.core.helper.DexkitBuilder +import io.github.xpler.core.entity.NoneHook +import io.github.xpler.core.entity.OnAfter +import io.github.xpler.core.entity.ReturnType +import io.github.xpler.core.hookBlockRunning +import io.github.xpler.core.log.XplerLog +import io.github.xpler.core.thisViewGroup + +class HBottomCtrlBar : BaseHook() { + companion object { + const val TAG = "HBottomCtrlBar" + } + + private val config get() = ConfigV1.get() + + override fun setTargetClass(): Class<*> { + return DexkitBuilder.bottomCtrlBarClazz ?: NoneHook::class.java + } + + @OnAfter + @ReturnType(name = "boolean") + fun isAddedAfter(params: XC_MethodHook.MethodHookParam) { + hookBlockRunning(params) { + // if (!config.isRemoveBottomCtrlBar) { + // return + // } + + // thisView.isVisible = false + thisViewGroup.children.forEach { it.isVisible = !config.isRemoveBottomCtrlBar } + }.onFailure { + XplerLog.e(it) + } + } +} \ No newline at end of file diff --git a/core/src/main/java/io/github/fplus/core/hook/HCommentAudioView.kt b/core/src/main/java/io/github/fplus/core/hook/HCommentAudioView.kt index 9d218eb..88e276b 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HCommentAudioView.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HCommentAudioView.kt @@ -15,18 +15,16 @@ import com.freegang.ktutils.reflect.fieldGets import com.freegang.ktutils.text.KTextUtils import com.ss.android.ugc.aweme.comment.model.Comment import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.R import io.github.fplus.core.base.BaseHook import io.github.fplus.core.hook.logic.SaveAudioLogic import io.github.xpler.core.KtXposedHelpers import io.github.xpler.core.argsOrEmpty import io.github.xpler.core.hookBlockRunning -import io.github.xpler.core.wrapper.CallMethods import io.github.xpler.core.thisView +import io.github.xpler.core.wrapper.CallMethods -class HCommentAudioView(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallMethods { +class HCommentAudioView : BaseHook(), CallMethods { companion object { const val TAG = "HCommentAudioView" } @@ -39,7 +37,10 @@ class HCommentAudioView(lpparam: XC_LoadPackage.LoadPackageParam) : override fun callOnAfterMethods(params: XC_MethodHook.MethodHookParam) { hookBlockRunning(params) { - if (argsOrEmpty.size != 4) return + if (argsOrEmpty.size != 4) { + return + } + val value = args[1].fieldGets().filterNotNull().firstOrNull() ?: return val gets = value.fieldGets().filter { it?.javaClass?.`package`?.name == "X" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HCommentListPageFragment.kt b/core/src/main/java/io/github/fplus/core/hook/HCommentListPageFragment.kt index 7f7d568..fcc8203 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HCommentListPageFragment.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HCommentListPageFragment.kt @@ -10,7 +10,6 @@ import com.freegang.ktutils.reflect.fieldGets import com.freegang.ktutils.view.removeInParent import com.ss.android.ugc.aweme.comment.constants.CommentColorMode import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.DexkitBuilder @@ -19,8 +18,7 @@ import io.github.xpler.core.entity.OnAfter import io.github.xpler.core.entity.ReturnType import io.github.xpler.core.hookBlockRunning -class HCommentListPageFragment(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HCommentListPageFragment : BaseHook() { companion object { const val TAG = "HCommentListPageFragment" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HConversationFragment.kt b/core/src/main/java/io/github/fplus/core/hook/HConversationFragment.kt index d405ad7..c7bc3de 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HConversationFragment.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HConversationFragment.kt @@ -7,7 +7,6 @@ import com.freegang.ktutils.extension.asOrNull import com.freegang.ktutils.log.KLogCat import com.freegang.ktutils.reflect.fieldGets import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.R import io.github.fplus.core.base.BaseHook import io.github.fplus.core.helper.DexkitBuilder @@ -16,8 +15,7 @@ import io.github.xpler.core.entity.NoneHook import io.github.xpler.core.entity.OnAfter import io.github.xpler.core.hookBlockRunning -class HConversationFragment(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HConversationFragment : BaseHook() { companion object { const val TAG = "HConversationFragment" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HCornerExtensionsPopupWindow.kt b/core/src/main/java/io/github/fplus/core/hook/HCornerExtensionsPopupWindow.kt index 632c174..8370153 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HCornerExtensionsPopupWindow.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HCornerExtensionsPopupWindow.kt @@ -9,28 +9,24 @@ import androidx.core.view.children import com.freegang.ktutils.app.KAppUtils import com.freegang.ktutils.app.KToastUtils import com.freegang.ktutils.app.isDarkMode -import com.freegang.ktutils.extension.isPrimitiveObjectType -import com.freegang.ktutils.log.KLogCat import com.freegang.ktutils.view.postRunning import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage +import io.github.fplus.Constant import io.github.fplus.core.R import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.databinding.PopupFreedomSettingBinding import io.github.fplus.core.helper.DexkitBuilder import io.github.fplus.core.ui.activity.FreedomSettingActivity -import io.github.fplus.Constant import io.github.xpler.core.KtXposedHelpers import io.github.xpler.core.entity.NoneHook -import io.github.xpler.core.argsOrEmpty +import io.github.xpler.core.entity.OnAfter import io.github.xpler.core.hookBlockRunning -import io.github.xpler.core.wrapper.CallMethods +import io.github.xpler.core.log.XplerLog -class HCornerExtensionsPopupWindow(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallMethods { +class HCornerExtensionsPopupWindow : BaseHook() { companion object { - const val TAG = "HCornerExtendsionsPopupWindow" + const val TAG = "HCornerExtensionsPopupWindow" } private val config get() = ConfigV1.get() @@ -39,16 +35,11 @@ class HCornerExtensionsPopupWindow(lpparam: XC_LoadPackage.LoadPackageParam) : return DexkitBuilder.cornerExtensionsPopupWindowClazz ?: NoneHook::class.java } - override fun callOnBeforeMethods(params: XC_MethodHook.MethodHookParam) { - - } - - override fun callOnAfterMethods(params: XC_MethodHook.MethodHookParam) { + @OnAfter + fun methodAfter(params: XC_MethodHook.MethodHookParam, boolean: Boolean) { hookBlockRunning(params) { - if (argsOrEmpty.size != 1) return - if (args.first()?.javaClass?.isPrimitiveObjectType == false) return - if (args.first() == false) return // fist type is Boolean - // KLogCat.d(TAG, "更新方法: $method") + if (!boolean) + return val popupWindow = thisObject as PopupWindow popupWindow.contentView.postRunning { @@ -89,7 +80,7 @@ class HCornerExtensionsPopupWindow(lpparam: XC_LoadPackage.LoadPackageParam) : } } }.onFailure { - KLogCat.tagE(TAG, it) + XplerLog.e(it) } } } \ No newline at end of file diff --git a/core/src/main/java/io/github/fplus/core/hook/HCustomizedUISeekBar.kt b/core/src/main/java/io/github/fplus/core/hook/HCustomizedUISeekBar.kt index 8d191b0..e9cfb15 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HCustomizedUISeekBar.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HCustomizedUISeekBar.kt @@ -3,20 +3,17 @@ package io.github.fplus.core.hook import android.widget.FrameLayout import androidx.core.view.updateMargins import com.freegang.ktutils.display.dip2px -import com.freegang.ktutils.extension.asOrNull import com.freegang.ktutils.log.KLogCat import com.ss.android.ugc.aweme.feed.ui.seekbar.SeekBarState import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 -import io.github.xpler.core.argsOrEmpty +import io.github.xpler.core.entity.OnAfter import io.github.xpler.core.hookBlockRunning -import io.github.xpler.core.wrapper.CallMethods +import io.github.xpler.core.log.XplerLog import io.github.xpler.core.thisView -class HCustomizedUISeekBar(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallMethods { +class HCustomizedUISeekBar : BaseHook() { companion object { const val TAG = "HCustomizedUISeekBar" @@ -46,15 +43,12 @@ class HCustomizedUISeekBar(lpparam: XC_LoadPackage.LoadPackageParam) : } } - override fun callOnBeforeMethods(params: XC_MethodHook.MethodHookParam) { - - } - - override fun callOnAfterMethods(params: XC_MethodHook.MethodHookParam) { + @OnAfter + fun methodAfter(params: XC_MethodHook.MethodHookParam, action: SeekBarState.Action?) { hookBlockRunning(params) { - action = argsOrEmpty.firstOrNull()?.asOrNull() ?: return + HCustomizedUISeekBar.action = action }.onFailure { - KLogCat.tagE(TAG, it) + XplerLog.e(it) } } } \ No newline at end of file diff --git a/core/src/main/java/io/github/fplus/core/hook/HDetailPageFragment.kt b/core/src/main/java/io/github/fplus/core/hook/HDetailPageFragment.kt index dae7dc5..57347ac 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HDetailPageFragment.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HDetailPageFragment.kt @@ -11,7 +11,6 @@ import com.freegang.ktutils.view.firstOrNull import com.freegang.ktutils.view.postRunning import com.ss.android.ugc.aweme.feed.model.Aweme import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.R import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 @@ -23,8 +22,7 @@ import io.github.xpler.core.entity.NoneHook import io.github.xpler.core.entity.OnAfter import io.github.xpler.core.hookBlockRunning -class HDetailPageFragment(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HDetailPageFragment : BaseHook() { companion object { const val TAG = "HDetailPageFragment" diff --git a/core/src/main/java/io/github/fplus/core/hook/HDialog.kt b/core/src/main/java/io/github/fplus/core/hook/HDialog.kt index 68fc709..1ab7ec2 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HDialog.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HDialog.kt @@ -7,14 +7,12 @@ import com.freegang.ktutils.log.KLogCat import com.freegang.ktutils.text.ellipsis import com.freegang.ktutils.view.forEachWhereChild import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.xpler.core.entity.OnAfter import io.github.xpler.core.hookBlockRunning -class HDialog(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HDialog : BaseHook() { companion object { const val TAG = "HDialog" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HDialogFragment.kt b/core/src/main/java/io/github/fplus/core/hook/HDialogFragment.kt index 1a13f62..a3734dd 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HDialogFragment.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HDialogFragment.kt @@ -6,14 +6,12 @@ import com.freegang.ktutils.app.KToastUtils import com.freegang.ktutils.log.KLogCat import com.freegang.ktutils.reflect.methodInvokeFirst import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook -import io.github.xpler.core.entity.OnBefore import io.github.xpler.core.argsOrEmpty +import io.github.xpler.core.entity.OnBefore import io.github.xpler.core.hookBlockRunning -class HDialogFragment(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HDialogFragment : BaseHook() { companion object { const val TAG = "HDialogFragment" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HDisallowInterceptRelativeLayout.kt b/core/src/main/java/io/github/fplus/core/hook/HDisallowInterceptRelativeLayout.kt index 60b6977..6800cdc 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HDisallowInterceptRelativeLayout.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HDisallowInterceptRelativeLayout.kt @@ -5,7 +5,6 @@ import com.freegang.ktutils.view.forEachChild import com.freegang.ktutils.view.postRunning import com.freegang.ktutils.view.removeInParent import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.xpler.core.findClass @@ -14,8 +13,8 @@ import io.github.xpler.core.hookConstructorsAll import io.github.xpler.core.wrapper.CallConstructors import io.github.xpler.core.thisViewGroup -class HDisallowInterceptRelativeLayout(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallConstructors { +class HDisallowInterceptRelativeLayout : BaseHook(), + CallConstructors { companion object { const val TAG = "HDisallowInterceptRelativeLayout" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HEmojiDetailDialog.kt b/core/src/main/java/io/github/fplus/core/hook/HEmojiDetailDialog.kt index 6c0afea..a0ca919 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HEmojiDetailDialog.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HEmojiDetailDialog.kt @@ -11,7 +11,6 @@ import com.ss.android.ugc.aweme.base.model.UrlModel import com.ss.android.ugc.aweme.emoji.store.view.EmojiBottomSheetDialog import com.ss.android.ugc.aweme.emoji.views.EmojiDetailDialog import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.hook.logic.SaveEmojiLogic @@ -20,8 +19,7 @@ import io.github.xpler.core.hookClass import io.github.xpler.core.wrapper.CallMethods import kotlinx.coroutines.delay -class HEmojiDetailDialog(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallMethods { +class HEmojiDetailDialog : BaseHook(), CallMethods { companion object { const val TAG = "HEmojiDetailDialog" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HEmojiDetailDialogNew.kt b/core/src/main/java/io/github/fplus/core/hook/HEmojiDetailDialogNew.kt index 08469ec..18c1465 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HEmojiDetailDialogNew.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HEmojiDetailDialogNew.kt @@ -12,7 +12,6 @@ import com.ss.android.ugc.aweme.emoji.base.BaseEmoji import com.ss.android.ugc.aweme.emoji.similaremoji.EmojiDetailDialogNew import com.ss.android.ugc.aweme.emoji.store.view.EmojiBottomSheetDialog import com.ss.android.ugc.aweme.emoji.utils.EmojiApi -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.DexkitBuilder @@ -20,8 +19,7 @@ import io.github.fplus.core.hook.logic.SaveEmojiLogic import io.github.xpler.core.argsOrEmpty import io.github.xpler.core.hookClass -class HEmojiDetailDialogNew(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HEmojiDetailDialogNew : BaseHook() { companion object { const val TAG = "HEmojiDetailDialogNew" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HFlippableViewPager.kt b/core/src/main/java/io/github/fplus/core/hook/HFlippableViewPager.kt index ee888f4..0e4826e 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HFlippableViewPager.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HFlippableViewPager.kt @@ -4,15 +4,13 @@ import android.view.MotionEvent import com.freegang.ktutils.log.KLogCat import com.ss.android.ugc.aweme.base.ui.FlippableViewPager import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.xpler.core.entity.FutureHook import io.github.xpler.core.entity.OnBefore import io.github.xpler.core.hookBlockRunning -class HFlippableViewPager(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HFlippableViewPager : BaseHook() { companion object { const val TAG = "HFlippableViewPager" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HGifEmojiDetailActivity.kt b/core/src/main/java/io/github/fplus/core/hook/HGifEmojiDetailActivity.kt index 3ce1c81..4546f07 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HGifEmojiDetailActivity.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HGifEmojiDetailActivity.kt @@ -12,7 +12,6 @@ import com.freegang.ktutils.view.idName import com.ss.android.ugc.aweme.comment.ui.GifEmojiDetailActivity import com.ss.android.ugc.aweme.emoji.model.Emoji import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.hook.logic.SaveEmojiLogic @@ -21,8 +20,7 @@ import io.github.xpler.core.hookBlockRunning import io.github.xpler.core.thisActivity import kotlinx.coroutines.delay -class HGifEmojiDetailActivity(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HGifEmojiDetailActivity : BaseHook() { companion object { const val TAG = "HGifEmojiDetailActivity" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HInteractStickerParent.kt b/core/src/main/java/io/github/fplus/core/hook/HInteractStickerParent.kt index 1b8da10..c6edfad 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HInteractStickerParent.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HInteractStickerParent.kt @@ -5,15 +5,13 @@ import com.freegang.ktutils.view.postRunning import com.freegang.ktutils.view.removeInParent import com.ss.android.ugc.aweme.sticker.infoSticker.interact.consume.view.InteractStickerParent import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.xpler.core.hookBlockRunning -import io.github.xpler.core.wrapper.CallConstructors import io.github.xpler.core.thisViewGroup +import io.github.xpler.core.wrapper.CallConstructors -class HInteractStickerParent(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallConstructors { +class HInteractStickerParent : BaseHook(), CallConstructors { companion object { const val TAG = "HInteractStickerParent" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HLivePlayActivity.kt b/core/src/main/java/io/github/fplus/core/hook/HLivePlayActivity.kt index e27ba9a..63f5300 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HLivePlayActivity.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HLivePlayActivity.kt @@ -2,7 +2,6 @@ package io.github.fplus.core.hook import com.freegang.ktutils.log.KLogCat import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.ImmersiveHelper @@ -12,8 +11,7 @@ import io.github.xpler.core.entity.OnBefore import io.github.xpler.core.hookBlockRunning import io.github.xpler.core.thisActivity -class HLivePlayActivity(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HLivePlayActivity : BaseHook() { companion object { const val TAG = "HLivePlayActivity" diff --git a/core/src/main/java/io/github/fplus/core/hook/HMainActivity.kt b/core/src/main/java/io/github/fplus/core/hook/HMainActivity.kt index 1bce4ad..c05a037 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HMainActivity.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HMainActivity.kt @@ -32,8 +32,7 @@ import io.github.xpler.core.hookBlockRunning import io.github.xpler.core.thisActivity import io.github.xpler.core.thisContext -class HMainActivity(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HMainActivity : BaseHook() { companion object { const val TAG = "HMainActivity" @@ -158,7 +157,7 @@ class HMainActivity(lpparam: XC_LoadPackage.LoadPackageParam) : private fun initBottomTabView() { // 底部导航栏透明度 if (config.isTranslucent) { - val alphaValue = config.translucentValue[2] / 100f + val alphaValue = config.translucentValue[3] / 100f bottomTabView?.parentView?.alpha = alphaValue } diff --git a/core/src/main/java/io/github/fplus/core/hook/HMainBottomTabItem.kt b/core/src/main/java/io/github/fplus/core/hook/HMainBottomTabItem.kt index 0358c26..bd8718c 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HMainBottomTabItem.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HMainBottomTabItem.kt @@ -7,18 +7,17 @@ import com.freegang.ktutils.app.KToastUtils import com.freegang.ktutils.log.KLogCat import com.freegang.ktutils.view.forEachChild import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.DexkitBuilder import io.github.xpler.core.entity.NoneHook import io.github.xpler.core.hookBlockRunning -import io.github.xpler.core.wrapper.CallMethods import io.github.xpler.core.thisView +import io.github.xpler.core.wrapper.CallMethods -class HMainBottomTabItem(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallMethods { +class HMainBottomTabItem : BaseHook(), + CallMethods { companion object { const val TAG = "HMainBottomTabItem" } @@ -42,7 +41,10 @@ class HMainBottomTabItem(lpparam: XC_LoadPackage.LoadPackageParam) : } private fun isHidePhotoButton(view: View) { - if (!config.isHidePhotoButton) return + if (!config.isHidePhotoButton) { + return + } + view.forEachChild { if ("$contentDescription".contains(Regex("拍摄|道具"))) { // 隐藏按钮 diff --git a/core/src/main/java/io/github/fplus/core/hook/HMainBottomTabView.kt b/core/src/main/java/io/github/fplus/core/hook/HMainBottomTabView.kt index a6e7795..6e9be17 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HMainBottomTabView.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HMainBottomTabView.kt @@ -2,23 +2,19 @@ package io.github.fplus.core.hook import android.graphics.Color import android.graphics.drawable.ColorDrawable -import com.freegang.ktutils.extension.isPrimitiveObjectType -import com.freegang.ktutils.log.KLogCat import com.freegang.ktutils.view.forEachChild import com.freegang.ktutils.view.parentView import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.DexkitBuilder import io.github.xpler.core.entity.NoneHook -import io.github.xpler.core.argsOrEmpty +import io.github.xpler.core.entity.OnAfter import io.github.xpler.core.hookBlockRunning -import io.github.xpler.core.wrapper.CallMethods +import io.github.xpler.core.log.XplerLog import io.github.xpler.core.thisViewGroup -class HMainBottomTabView(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallMethods { +class HMainBottomTabView : BaseHook() { companion object { const val TAG = "HMainBottomTabView" } @@ -29,21 +25,16 @@ class HMainBottomTabView(lpparam: XC_LoadPackage.LoadPackageParam) : return DexkitBuilder.mainBottomTabViewClazz ?: NoneHook::class.java } - override fun callOnBeforeMethods(params: XC_MethodHook.MethodHookParam) { - - - } - - override fun callOnAfterMethods(params: XC_MethodHook.MethodHookParam) { + @OnAfter + fun methodAfter(params: XC_MethodHook.MethodHookParam, i: Int) { hookBlockRunning(params) { - if (method.name.contains(Regex("Background|Alpha|Enabled"))) return - if (argsOrEmpty.size != 1) return - if (args.first()?.javaClass?.isPrimitiveObjectType == false) return - // KLogCat.d(TAG, "更新方法: $method") + if (method.name.contains(Regex("Background|Alpha|Enabled|Visibilty"))) { + return + } // 底部导航栏透明度 if (config.isTranslucent) { - val alphaValue = config.translucentValue[2] / 100f + val alphaValue = config.translucentValue[3] / 100f thisViewGroup.parentView?.alpha = alphaValue } @@ -55,7 +46,7 @@ class HMainBottomTabView(lpparam: XC_LoadPackage.LoadPackageParam) : } } }.onFailure { - KLogCat.tagE(TAG, it) + XplerLog.e(it) } } } \ No newline at end of file diff --git a/core/src/main/java/io/github/fplus/core/hook/HMainTabStripScrollView.kt b/core/src/main/java/io/github/fplus/core/hook/HMainTabStripScrollView.kt index 5f85ffe..4673d25 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HMainTabStripScrollView.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HMainTabStripScrollView.kt @@ -5,15 +5,15 @@ import com.freegang.ktutils.view.firstParentOrNull import com.ss.android.ugc.aweme.homepage.ui.titlebar.MainTitleBar import com.ss.android.ugc.aweme.homepage.ui.view.MainTabStripScrollView import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.xpler.core.hookBlockRunning -import io.github.xpler.core.wrapper.CallMethods import io.github.xpler.core.thisViewGroup +import io.github.xpler.core.wrapper.CallMethods + +class HMainTabStripScrollView : BaseHook(), + CallMethods { -class HMainTabStripScrollView(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallMethods { companion object { const val TAG = "HMainTabStripScrollView" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HPenetrateTouchRelativeLayout.kt b/core/src/main/java/io/github/fplus/core/hook/HPenetrateTouchRelativeLayout.kt index 34c3a87..c0cc7e0 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HPenetrateTouchRelativeLayout.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HPenetrateTouchRelativeLayout.kt @@ -6,17 +6,15 @@ import com.freegang.ktutils.display.dip2px import com.freegang.ktutils.log.KLogCat import com.ss.android.ugc.aweme.feed.ui.PenetrateTouchRelativeLayout import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.xpler.core.entity.FutureHook import io.github.xpler.core.entity.OnBefore import io.github.xpler.core.hookBlockRunning -import io.github.xpler.core.wrapper.CallMethods import io.github.xpler.core.thisViewGroup +import io.github.xpler.core.wrapper.CallMethods -class HPenetrateTouchRelativeLayout(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallMethods { +class HPenetrateTouchRelativeLayout : BaseHook(), CallMethods { companion object { const val TAG = "HPenetrateTouchRelativeLayout" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HPlayerController.kt b/core/src/main/java/io/github/fplus/core/hook/HPlayerController.kt index db66b27..c39b875 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HPlayerController.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HPlayerController.kt @@ -5,14 +5,12 @@ import com.freegang.ktutils.reflect.methodInvokeFirst import com.freegang.ktutils.reflect.methods import com.ss.android.ugc.aweme.feed.adapter.VideoViewHolder import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.xpler.core.entity.OnBefore import io.github.xpler.core.hookBlockRunning -class HPlayerController(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HPlayerController : BaseHook() { companion object { const val TAG = "HPlayerController" diff --git a/core/src/main/java/io/github/fplus/core/hook/HPoiCreateInstanceImpl.kt b/core/src/main/java/io/github/fplus/core/hook/HPoiCreateInstanceImpl.kt index 6ad7014..9a302ac 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HPoiCreateInstanceImpl.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HPoiCreateInstanceImpl.kt @@ -4,7 +4,6 @@ import android.app.Activity import android.view.ViewGroup import com.freegang.ktutils.log.KLogCat import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.helper.DexkitBuilder import io.github.xpler.core.entity.EmptyHook @@ -15,8 +14,7 @@ import io.github.xpler.core.entity.Param import io.github.xpler.core.hookBlockRunning import org.json.JSONObject -class HPoiCreateInstanceImpl(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HPoiCreateInstanceImpl : BaseHook() { companion object { const val TAG = "HPoiCreateInstanceImpl" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HPopupWindow.kt b/core/src/main/java/io/github/fplus/core/hook/HPopupWindow.kt index cb1dc20..f0f0889 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HPopupWindow.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HPopupWindow.kt @@ -6,14 +6,12 @@ import com.freegang.ktutils.app.KToastUtils import com.freegang.ktutils.log.KLogCat import com.freegang.ktutils.reflect.fieldGetFirst import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook -import io.github.xpler.core.entity.OnBefore import io.github.xpler.core.argsOrEmpty +import io.github.xpler.core.entity.OnBefore import io.github.xpler.core.hookBlockRunning -class HPopupWindow(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HPopupWindow : BaseHook() { companion object { const val TAG = "HPopupWindow" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HSeekBarSpeedModeBottomMask.kt b/core/src/main/java/io/github/fplus/core/hook/HSeekBarSpeedModeBottomMask.kt index 0b27fa1..623eca1 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HSeekBarSpeedModeBottomMask.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HSeekBarSpeedModeBottomMask.kt @@ -7,17 +7,16 @@ import com.freegang.ktutils.extension.asOrNull import com.freegang.ktutils.log.KLogCat import com.freegang.ktutils.view.postRunning import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.DexkitBuilder import io.github.xpler.core.hookBlockRunning import io.github.xpler.core.hookClass -import io.github.xpler.core.wrapper.CallMethods import io.github.xpler.core.thisViewGroup +import io.github.xpler.core.wrapper.CallMethods -class HSeekBarSpeedModeBottomMask(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallMethods { +class HSeekBarSpeedModeBottomMask : BaseHook(), + CallMethods { companion object { const val TAG = "HSeekBarSpeedModeBottomMask" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HSideBarNestedScrollView.kt b/core/src/main/java/io/github/fplus/core/hook/HSideBarNestedScrollView.kt index 0d84c14..8ed6206 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HSideBarNestedScrollView.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HSideBarNestedScrollView.kt @@ -15,7 +15,6 @@ import com.freegang.ktutils.log.KLogCat import com.freegang.ktutils.view.firstOrNull import com.freegang.ktutils.view.postRunning import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.Constant import io.github.fplus.core.R import io.github.fplus.core.base.BaseHook @@ -23,15 +22,14 @@ import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.databinding.SideFreedomSettingBinding import io.github.fplus.core.helper.DexkitBuilder import io.github.fplus.core.ui.activity.FreedomSettingActivity -import io.github.xpler.core.entity.FutureHook import io.github.xpler.core.KtXposedHelpers +import io.github.xpler.core.entity.FutureHook import io.github.xpler.core.entity.NoneHook import io.github.xpler.core.entity.OnAfter import io.github.xpler.core.hookBlockRunning import io.github.xpler.core.thisViewGroup -class HSideBarNestedScrollView(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HSideBarNestedScrollView : BaseHook() { companion object { const val TAG = "HSideBarNestedScrollView" } diff --git a/core/src/main/java/io/github/fplus/core/hook/HVerticalViewPager.kt b/core/src/main/java/io/github/fplus/core/hook/HVerticalViewPager.kt index 4fba581..37f6fe7 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HVerticalViewPager.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HVerticalViewPager.kt @@ -12,7 +12,6 @@ import com.ss.android.ugc.aweme.common.widget.VerticalViewPager import com.ss.android.ugc.aweme.feed.model.Aweme import com.ss.android.ugc.aweme.follow.presenter.FollowFeed import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.DexkitBuilder @@ -22,8 +21,7 @@ import io.github.xpler.core.hookClass import io.github.xpler.core.lpparam import io.github.xpler.core.thisView -class HVerticalViewPager(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HVerticalViewPager : BaseHook() { companion object { const val TAG = "HVerticalViewPager" diff --git a/core/src/main/java/io/github/fplus/core/hook/HVideoPlayerHelper.kt b/core/src/main/java/io/github/fplus/core/hook/HVideoPlayerHelper.kt index 41a156c..114bb74 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HVideoPlayerHelper.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HVideoPlayerHelper.kt @@ -1,19 +1,16 @@ package io.github.fplus.core.hook import android.view.MotionEvent -import com.freegang.ktutils.log.KLogCat import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.DexkitBuilder import io.github.xpler.core.entity.NoneHook -import io.github.xpler.core.argsOrEmpty +import io.github.xpler.core.entity.OnBefore import io.github.xpler.core.hookBlockRunning -import io.github.xpler.core.wrapper.CallMethods +import io.github.xpler.core.log.XplerLog -class HVideoPlayerHelper(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallMethods { +class HVideoPlayerHelper : BaseHook() { companion object { const val TAG = "HVideoPlayerHelper" } @@ -24,22 +21,18 @@ class HVideoPlayerHelper(lpparam: XC_LoadPackage.LoadPackageParam) : return DexkitBuilder.videoPlayerHelperClazz ?: NoneHook::class.java } - override fun callOnBeforeMethods(params: XC_MethodHook.MethodHookParam) { + @OnBefore + fun methodBefore(params: XC_MethodHook.MethodHookParam, event: MotionEvent?) { hookBlockRunning(params) { - // 禁用双击点赞 - if (argsOrEmpty.firstOrNull()?.javaClass == MotionEvent::class.java) { - if (!config.isDoubleClickType) return - if (config.doubleClickType != 2) { - result = null - } + if (!config.isDoubleClickType) { return } + + if (config.doubleClickType != 2) { + result = null + } }.onFailure { - KLogCat.tagE(TAG, it) + XplerLog.e(it) } } - - override fun callOnAfterMethods(params: XC_MethodHook.MethodHookParam) { - - } } \ No newline at end of file diff --git a/core/src/main/java/io/github/fplus/core/hook/HVideoViewHolder.kt b/core/src/main/java/io/github/fplus/core/hook/HVideoViewHolder.kt index d29cfd0..7907df0 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HVideoViewHolder.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HVideoViewHolder.kt @@ -4,6 +4,7 @@ import android.content.Context import android.view.View import android.view.ViewTreeObserver import android.widget.FrameLayout +import android.widget.RelativeLayout import android.widget.TextView import androidx.core.view.isVisible import com.freegang.ktutils.extension.asOrNull @@ -22,7 +23,6 @@ import com.ss.android.ugc.aweme.feed.ui.FeedRightScaleView import com.ss.android.ugc.aweme.feed.ui.PenetrateTouchRelativeLayout import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.helper.DexkitBuilder @@ -32,8 +32,8 @@ import io.github.xpler.core.hook import io.github.xpler.core.hookBlockRunning import io.github.xpler.core.wrapper.CallConstructors -class HVideoViewHolder(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam), CallConstructors { +class HVideoViewHolder : BaseHook(), + CallConstructors { companion object { const val TAG = "HVideoViewHolder" @@ -47,6 +47,15 @@ class HVideoViewHolder(lpparam: XC_LoadPackage.LoadPackageParam) : private var onDrawMaps = mutableMapOf() + private val videoOptionBarFilterKeywords by lazy { + config.videoOptionBarFilterKeywords + .removePrefix(",").removePrefix(",") + .removeSuffix(",").removeSuffix(",") + .replace("\\s".toRegex(), "") + .replace("[,,]".toRegex(), "|") + .toRegex() + } + private fun addOnDraw(view: View?) { if (view == null) { KLogCat.d("addOnDraw", "view == null") @@ -120,40 +129,44 @@ class HVideoViewHolder(lpparam: XC_LoadPackage.LoadPackageParam) : } private fun changeFeedRightScaleView(params: XC_MethodHook.MethodHookParam) { - if (!config.isVideoOptionBarFilter) return + if (!config.isVideoOptionBarFilter) { + return + } val views = params.thisObject?.fieldGets(type = View::class.java) ?: emptyList() val view = views.firstOrNull { it is FeedRightScaleView }?.asOrNull() ?: return - val videoOptionBarFilterKeywords = config.videoOptionBarFilterKeywords - .removePrefix(",").removePrefix(",") - .removeSuffix(",").removeSuffix(",") - .replace("\\s".toRegex(), "") - .replace("[,,]".toRegex(), "|") - .toRegex() - view.postRunning { val isAvatarImageWithLive = videoOptionBarFilterKeywords.pattern.contains("头像") - view.forEachChild { if (isAvatarImageWithLive && this.javaClass.name.contains("AvatarImageWithLive")) { - this.firstParentOrNull(FrameLayout::class.java)?.isVisible = false + this.firstParentOrNull(RelativeLayout::class.java)?.isVisible = false } if ("${this.contentDescription}".contains(videoOptionBarFilterKeywords)) { this.firstParentOrNull(FrameLayout::class.java)?.isVisible = false } - if (this is TextView && "$text".contains(videoOptionBarFilterKeywords)) { + if (this is TextView && "${this.text}".contains(videoOptionBarFilterKeywords)) { this.firstParentOrNull(FrameLayout::class.java)?.isVisible = false } } - val isMusicContainer = videoOptionBarFilterKeywords.pattern.contains("音乐") view.getSiblingViewAt(1)?.isVisible = !isMusicContainer } } + private fun changeFeedRightScaleViewAlpha(params: XC_MethodHook.MethodHookParam) { + if (!config.isTranslucent) { + return + } + + val views = params.thisObject?.fieldGets(type = View::class.java) ?: emptyList() + val view = views.firstOrNull { it is FeedRightScaleView }?.asOrNull() ?: return + view.alpha = config.translucentValue[2] / 100f + view.getSiblingViewAt(1)?.alpha = config.translucentValue[2] / 100f // 音乐 + } + private fun getContext(params: XC_MethodHook.MethodHookParam): Context? { return params.thisObject.methodInvokeFirst("getContext")?.asOrNull() } @@ -172,6 +185,7 @@ class HVideoViewHolder(lpparam: XC_LoadPackage.LoadPackageParam) : hookBlockRunning(params) { // KLogCat.d("long: $long") changeFeedRightScaleView(params) + changeFeedRightScaleViewAlpha(params) }.onFailure { KLogCat.tagE(TAG, it) } @@ -232,10 +246,12 @@ class HVideoViewHolder(lpparam: XC_LoadPackage.LoadPackageParam) : } override fun onInit() { - DexkitBuilder.videoViewHolderMethods.firstOrNull()?.hook { - onAfter { - callOpenCleanMode(this, true) + DexkitBuilder.videoViewHolderMethods + .firstOrNull { it.name[0] in 'A'..'Z' } + ?.hook { + onAfter { + callOpenCleanMode(this, true) + } } - } } } \ No newline at end of file diff --git a/core/src/main/java/io/github/fplus/core/hook/HVideoViewHolderRootView.kt b/core/src/main/java/io/github/fplus/core/hook/HVideoViewHolderRootView.kt index d393bd1..86b2070 100644 --- a/core/src/main/java/io/github/fplus/core/hook/HVideoViewHolderRootView.kt +++ b/core/src/main/java/io/github/fplus/core/hook/HVideoViewHolderRootView.kt @@ -24,7 +24,6 @@ import com.freegang.ktutils.view.toViewTreeString import com.ss.android.ugc.aweme.ad.feed.VideoViewHolderRootView import com.ss.android.ugc.aweme.feed.ui.PenetrateTouchRelativeLayout import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage import io.github.fplus.core.base.BaseHook import io.github.fplus.core.config.ConfigV1 import io.github.fplus.core.hook.logic.DownloadLogic @@ -37,8 +36,7 @@ import io.github.xpler.core.thisView import io.github.xpler.core.thisViewGroup import kotlin.math.abs -class HVideoViewHolderRootView(lpparam: XC_LoadPackage.LoadPackageParam) : - BaseHook(lpparam) { +class HVideoViewHolderRootView : BaseHook() { companion object { const val TAG = "HVideoViewHolderRootView" } diff --git a/core/src/main/java/io/github/fplus/core/ui/activity/FreedomSettingActivity.kt b/core/src/main/java/io/github/fplus/core/ui/activity/FreedomSettingActivity.kt index b1408f8..b7ad913 100644 --- a/core/src/main/java/io/github/fplus/core/ui/activity/FreedomSettingActivity.kt +++ b/core/src/main/java/io/github/fplus/core/ui/activity/FreedomSettingActivity.kt @@ -406,10 +406,11 @@ class FreedomSettingActivity : XplerActivity() { ) if (showTransparentDialog) { - val translucentValue = model.translucentValue.value ?: listOf(50, 50, 50) + val translucentValue = model.translucentValue.value ?: listOf(50, 50, 50, 50) var topBarTransparent by remember { mutableStateOf(translucentValue[0]) } var videoAssemblyTransparent by remember { mutableStateOf(translucentValue[1]) } - var bottomBarTransparent by remember { mutableStateOf(translucentValue[2]) } + var videoRightAssemblyTransparent by remember { mutableStateOf(translucentValue[2]) } + var bottomBarTransparent by remember { mutableStateOf(translucentValue[3]) } FMessageDialog( title = "自定义控件透明度", @@ -421,6 +422,7 @@ class FreedomSettingActivity : XplerActivity() { listOf( topBarTransparent, videoAssemblyTransparent, + videoRightAssemblyTransparent, bottomBarTransparent, ) ) @@ -450,6 +452,22 @@ class FreedomSettingActivity : XplerActivity() { valueRange = 0f..100f, onValueChange = { videoAssemblyTransparent = it.toInt() + videoRightAssemblyTransparent = it.toInt() + }, + ) + Text( + text = "视频右侧控件: $videoRightAssemblyTransparent", + style = MaterialTheme.typography.body1, + modifier = Modifier.padding(top = 4.dp) + ) + Slider( + value = videoRightAssemblyTransparent.toFloat(), + valueRange = 0f..100f, + onValueChange = { + videoRightAssemblyTransparent = it.toInt() + if (it >= videoAssemblyTransparent) { + videoRightAssemblyTransparent = videoAssemblyTransparent + } }, ) Text( @@ -477,6 +495,16 @@ class FreedomSettingActivity : XplerActivity() { } ) } + item { + SwitchItem( + text = "移除底部播放控制栏", + subtext = "部分版本在暂停视频后底部会出现播放控制栏", + checked = model.isRemoveBottomCtrlBar.observeAsState(false), + onCheckedChange = { + model.changeIsRemoveBottomCtrlBar(it) + } + ) + } item { var showDoubleClickModeDialog by remember { mutableStateOf(false) } @@ -579,7 +607,10 @@ class FreedomSettingActivity : XplerActivity() { title = "请选择拍摄按钮响应模式", confirm = "更改", onlyConfirm = true, - onConfirm = { showIsDisablePhotoDialog = false }, + onConfirm = { + showIsDisablePhotoDialog = false + showRestartAppDialog = true + }, ) { Column { Row(verticalAlignment = Alignment.CenterVertically) { @@ -641,6 +672,7 @@ class FreedomSettingActivity : XplerActivity() { }, onCheckedChange = { model.changeIsVideoOptionBarFilter(it) + showRestartAppDialog = true } ) @@ -681,7 +713,7 @@ class FreedomSettingActivity : XplerActivity() { onConfirm = { showFilterDialog = false model.setVideoOptionBarFilterKeywords(inputValue) - KToastUtils.show(application, "切换视频或重启抖音生效") + showRestartAppDialog = true }, ) { FCard( diff --git a/core/src/main/java/io/github/fplus/core/ui/viewmodel/FreedomSettingVM.kt b/core/src/main/java/io/github/fplus/core/ui/viewmodel/FreedomSettingVM.kt index 6e82813..03e4c90 100644 --- a/core/src/main/java/io/github/fplus/core/ui/viewmodel/FreedomSettingVM.kt +++ b/core/src/main/java/io/github/fplus/core/ui/viewmodel/FreedomSettingVM.kt @@ -49,12 +49,15 @@ class FreedomSettingVM(application: Application) : AndroidViewModel(application) private var _isTranslucent = MutableLiveData(false) val isTranslucent: LiveData = _isTranslucent - private var _translucentValue = MutableLiveData(listOf(50, 50, 50)) + private var _translucentValue = MutableLiveData(listOf(50, 50, 50, 50)) val translucentValue: LiveData> = _translucentValue private var _isRemoveSticker = MutableLiveData(false) val isRemoveSticker: LiveData = _isRemoveSticker + private var _isRemoveBottomCtrlBar = MutableLiveData(false) + val isRemoveBottomCtrlBar: LiveData = _isRemoveBottomCtrlBar + private var _isDoubleClickType = MutableLiveData(false) val isDoubleClickType: LiveData = _isDoubleClickType @@ -162,6 +165,7 @@ class FreedomSettingVM(application: Application) : AndroidViewModel(application) changeIsTranslucent(config.isTranslucent) changeTranslucentValue(config.translucentValue) changeIsRemoveSticker(config.isRemoveSticker) + changeIsRemoveBottomCtrlBar(config.isRemoveBottomCtrlBar) changeIsDoubleClickType(config.isDoubleClickType) changeDoubleClickType(config.doubleClickType) changeIsLongtimeVideoToast(config.isLongtimeVideoToast) @@ -239,6 +243,12 @@ class FreedomSettingVM(application: Application) : AndroidViewModel(application) config.isRemoveSticker = value } + // 移除底部播放控制栏 + fun changeIsRemoveBottomCtrlBar(value: Boolean) { + _isRemoveBottomCtrlBar.value = value + config.isRemoveBottomCtrlBar = value + } + // 是否开启更改双击响应类型 fun changeIsDoubleClickType(value: Boolean) { _isDoubleClickType.value = value diff --git a/xpler b/xpler index 3fc423d..1bc7bed 160000 --- a/xpler +++ b/xpler @@ -1 +1 @@ -Subproject commit 3fc423db9593e25ee2ff68f64c2ccaf268bb03b0 +Subproject commit 1bc7bed3a7c8ec67914781a45d87d647cc260379