Céd*_*ric 4 android android-viewpager
简单的问题,是否有ViewPager.PageTransformer动画页面卷曲效果?
我一直在寻找各处,但我找不到它,也不知道如何自己实现它...
谢谢你,Cédric
kri*_*son 13
我认为@Cédric是对的 - 这可能不值得.
所以我设法让这个工作,但那里有很多丑陋.
软件架构中有一些胶带.由于页面转换器仅适用于视图,因此应用程序依赖于使用可以处理绘制页面卷曲的自定义布局.所以变压器看起来像这样:
public static class PageCurlPageTransformer implements PageTransformer {
@Override
public void transformPage(View page, float position) {
Log.d(TAG, "transformPage, position = " + position + ", page = " + page.getTag(R.id.viewpager));
if (page instanceof PageCurl) {
if (position > -1.0F && position < 1.0F) {
// hold the page steady and let the views do the work
page.setTranslationX(-position * page.getWidth());
} else {
page.setTranslationX(0.0F);
}
if (position <= 1.0F && position >= -1.0F) {
((PageCurl) page).setCurlFactor(position);
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
要获得逼真的翻页显示,您必须使用Canvas.clipPath.在模拟器上进行测试时,我无法将其剪切到实际路径.我不得不求助于在设备上进行测试才能clipPath正常工作.即使关闭硬件加速也无法在仿真器上运行.这让我很有信心,这一点在所有设备上都是正确的.
我只是dispatchDraw在自定义布局中绘制了卷曲角落.这可能不是最好的地方.如果我花了更多的时间,我可能会在视图寻呼机中有一个特殊的装饰视图,并绘制卷曲.
您可能会注意到反向分页比分页转发更快.您可能不喜欢正向或反向的动画速度.太糟糕了 - ViewPager没有任何方法来调整投掷速度,所以你得到了你得到的.这是ViewPager用于此类事情的另一个限制.
您可以将我的项目视为一个概念验证,您确实可以获得页面卷曲以使用视图寻呼机和页面转换器.希望这将为您提供在项目中实现它所需的功能.
项目在这里:https://github.com/klarson2/PageCurlWithPageTransformer
干杯