ViewPager 页面卷曲
ViewPager page curl
简单的问题,是否有ViewPager.PageTransformer动画卷曲效果?
我到处都在找,但我找不到,也不知道如何自己实现...
提前致谢,
塞德里克
我认为@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);
}
}
}
}
要获得真实的 page-turn 显示,您必须使用 Canvas.clipPath
。在模拟器上测试时,我无法将其剪裁到实际路径。我不得不在设备上进行测试以查看 clipPath
是否正常工作。即使关闭硬件加速在模拟器上也不起作用。这让我不太相信这会一直在所有设备上正常显示。
我刚刚在自定义布局中用dispatchDraw
画了卷角。那可能不是最好的地方。如果我花更多时间,我可能会在视图寻呼机中有一个特殊的装饰视图并绘制卷曲。
您可能会注意到向后翻页比向前翻页要快。您可能不喜欢正向或反向的动画速度。太糟糕了 — ViewPager
没有任何方法来调整投掷速度,所以你得到了你得到的。这是对此类事情使用 ViewPager
的另一个限制。
您可以将我的项目视为一个 proof-of-concept,您确实可以将页面卷曲与视图寻呼机和页面转换器一起使用。希望这会为您提供在您的项目中实现它所需的内容。
项目在这里:https://github.com/klarson2/PageCurlWithPageTransformer
干杯
简单的问题,是否有ViewPager.PageTransformer动画卷曲效果?
我到处都在找,但我找不到,也不知道如何自己实现...
提前致谢, 塞德里克
我认为@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); } } }
}
要获得真实的 page-turn 显示,您必须使用
Canvas.clipPath
。在模拟器上测试时,我无法将其剪裁到实际路径。我不得不在设备上进行测试以查看clipPath
是否正常工作。即使关闭硬件加速在模拟器上也不起作用。这让我不太相信这会一直在所有设备上正常显示。我刚刚在自定义布局中用
dispatchDraw
画了卷角。那可能不是最好的地方。如果我花更多时间,我可能会在视图寻呼机中有一个特殊的装饰视图并绘制卷曲。您可能会注意到向后翻页比向前翻页要快。您可能不喜欢正向或反向的动画速度。太糟糕了 —
ViewPager
没有任何方法来调整投掷速度,所以你得到了你得到的。这是对此类事情使用ViewPager
的另一个限制。
您可以将我的项目视为一个 proof-of-concept,您确实可以将页面卷曲与视图寻呼机和页面转换器一起使用。希望这会为您提供在您的项目中实现它所需的内容。
项目在这里:https://github.com/klarson2/PageCurlWithPageTransformer
干杯