|
|
@@ -41,15 +41,30 @@ class ScrollEventAdapterMethod : MatchClassMethod {
|
|
|
}
|
|
|
|
|
|
|
|
|
-//@AndroidAopMatchClassMethod(
|
|
|
-// targetClassName = "android.view.View.OnClickListener",
|
|
|
-// methodName = ["onClick"],
|
|
|
-// type = MatchType.EXTENDS //type 一定是 EXTENDS 因为你想 hook 所有继承了 OnClickListener 的类
|
|
|
-//)
|
|
|
-//class MatchOnClick : MatchClassMethod {
|
|
|
-// // @SingleClick(5000) //联合 @SingleClick ,给所有点击增加防多点,6不6
|
|
|
-// override fun invoke(joinPoint: ProceedJoinPoint, methodName: String): Any? {
|
|
|
-// Log.e("MatchOnClick", "=====invoke=====$methodName")
|
|
|
-// return joinPoint.proceed()
|
|
|
-// }
|
|
|
-//}
|
|
|
+@AndroidAopMatchClassMethod(
|
|
|
+ targetClassName = "androidx.viewpager2.widget.ViewPager2",
|
|
|
+ methodName = ["setCurrentItemInternal"],
|
|
|
+ type = MatchType.SELF
|
|
|
+)
|
|
|
+class SetCurrentItemInternalMethod : MatchClassMethod {
|
|
|
+ override fun invoke(joinPoint: ProceedJoinPoint, methodName: String): Any? {
|
|
|
+ try {
|
|
|
+ val target = joinPoint.target
|
|
|
+ if (target != null) {
|
|
|
+ val mViewPager = target as ViewPager2
|
|
|
+ val viewPagerIdString = mViewPager.resources?.getResourceEntryName(mViewPager.id)
|
|
|
+ val args = joinPoint.args
|
|
|
+ val item = args?.getOrNull(0) as? Int
|
|
|
+ val smoothScroll = args?.getOrNull(1) as? Boolean
|
|
|
+ Log.i(
|
|
|
+ "SetCurrentItemInternal",
|
|
|
+ "=====setCurrentItemInternal=====${mViewPager}, viewPager:$viewPagerIdString, currentItem:${mViewPager.currentItem}, " +
|
|
|
+ "${mViewPager.adapter?.javaClass?.name}, setItem:$item, smoothScroll:$smoothScroll"
|
|
|
+ )
|
|
|
+ }
|
|
|
+ } catch (e: Exception) {
|
|
|
+
|
|
|
+ }
|
|
|
+ return joinPoint.proceed()
|
|
|
+ }
|
|
|
+}
|