I just started studying Kotlin and tried to follow an example about CompositePageTransformer
and ViewPager2
but in example use JAVA. I am so confused about it. The problem is I can't override fun transformPage
on ViewPager2.PageTransformer
val compositePageTransformer = CompositePageTransformer()
compositePageTransformer.addTransformer(ViewPager2.PageTransformer {
override fun transformPage(page: View,position: Float) {
val r = 1 - abs(position)
page.scaleY = 0.95f + r * 0.05f
}
})
public interface PageTransformer {
void transformPage(@NonNull View page, float position);
}
First of all, Java requires that all public classes/interfaces were placed into the same-named files. So, public interface PageTransformer
should be placed into PageTransformer.java
file (or had another visibility modifier).
Secondly, you call it from Kotlin in the wrong way. Correct syntax should be:
compositePageTransformer.addTransformer(object : PageTransformer {
override fun transformPage(page: View, position: Float) {
val r = 1 - abs(position)
page.scaleY = 0.95f + r * 0.05f
}
})
If you mark your interface with @FunctionalInterface
and use Kotlin 1.4, then it could be even more concise:
compositePageTransformer.addTransformer(PageTransformer { page, position ->
val r = 1 - abs(position)
page.scaleY = 0.95f + r * 0.05f
})
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.