- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 ViewPager 中的项目设置动画,而 PageTransformer 符合要求。我希望它向后兼容 Android 2.2,所以我使用支持 v4 库。然而……
As property animation is only supported as of Android 3.0 and forward, setting a PageTransformer on a > ViewPager on earlier platform versions will be ignored.
所以 PageTransformer 不能在旧版本上工作
我正在使用 Jake Wharton's NineOldAndroids库,以便我可以使用该 API,但我不确定如何为 ViewPager 制作动画。
我该怎么做?
最佳答案
您需要使用 AnimatorProxy
包装器实现 PageTransformer
以设置 View 的转换属性。
然后困难的部分是 ViewPager
将忽略较低 API 版本中的 PageTransformer
。因此,您需要修改 ViewPager
本身以使用 PageTransformer
。
我有一个 forked version of the support library on GitHub这允许这样做以及使用 NineOldAndroids 动画师进行自定义 fragment 转换。使用 animator-transition 分支。这是一个 Maven 项目,因此您可以从 v4 子目录构建它。
public class ZoomOutPageTransformer implements PageTransformer {
private static float MIN_SCALE = 0.85f;
private static float MIN_ALPHA = 0.5f;
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
AnimatorProxy proxy = AnimatorProxy.wrap(view);
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
proxy.setAlpha(0);
} else if (position <= 1) { // [-1,1]
// Modify the default slide transition to shrink the page as well
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
float vertMargin = pageHeight * (1 - scaleFactor) / 2;
float horzMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0) {
proxy.setTranslationX(horzMargin - vertMargin / 2);
} else {
proxy.setTranslationX(-horzMargin + vertMargin / 2);
}
// Scale the page down (between MIN_SCALE and 1)
proxy.setScaleX(scaleFactor);
proxy.setScaleY(scaleFactor);
// Fade the page relative to its size.
proxy.setAlpha(MIN_ALPHA +
(scaleFactor - MIN_SCALE) /
(1 - MIN_SCALE) * (1 - MIN_ALPHA));
} else { // (1,+Infinity]
// This page is way off-screen to the right.
proxy.setAlpha(0);
}
}
}
关于android - 向后兼容的 PageTransformer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15767729/
我对 ViewPager 有一个自定义要求。我想要的是我的寻呼机应该有一个像 DepthPageTransformer 这样的水平 pageTransformer默认。现在在屏幕上我有一个按钮,我希望
我正在尝试为 ViewPager 中的项目设置动画,而 PageTransformer 符合要求。我希望它向后兼容 Android 2.2,所以我使用支持 v4 库。然而…… As property
在我的示例代码中,我在 MainActivity.java 中有三个可滑动的选项卡,即:Android、IOS 和 WINDOWS,我使用滑动在选项卡之间切换。 现在,我必须实现带有可滑动选项卡的 P
我需要一些有关 ViewPager2 的 PageTransformer 的帮助。 我的 ViewPager2 中有 3 个页面。每一页都应该与下一页重叠。此外,页面应该全部牢牢地位于中间,并且只能滑
我收到 ViewPager.PageTransformer 无法解析为类型 我已将 sdk 更新到最新版本并在我的 libs 文件夹中安装了最新版本的 android-support-v4 我阅读了这
我有一个带有 CubeTransformer 的 viewPager,它正在转换每个 fragment 。每个 fragment 内都有图像或视频 View (使用 Exoplayer)。当你试图通过
我直接使用教程 here. 中的 ZoomOutPageTransformer 我有一个抽屉导航,抽屉上的第一个项目是 ViewPager fragment 。这在第一次尝试时工作正常,但在我转到另一
我将 PageTransformer 应用于 ViewPager,效果很好,但我想在将 PageTransformer 设置为 ViewPager 后立即启动页面转换。我已经尝试过: 设置当前项目(整
我有一个 ViewPager,其中它的每个 View 都表示一副卡片。使用 ViewPager 边距,每张卡片在边框上都有阴影: cardsViewPager.setPageMargin(getRes
我有一个显示 3 个不同页面的 ViewPager。我想使用 Google 示例中的 ZoomOutPageTransformer 为寻呼机设置动画: public class ZoomOutPage
我的应用程序使用 Android 的 ViewPager 和 FragmentStatePagerAdapter,它只需要支持 Android 4.x 或更高版本。我正在使用 ViewPager 的
我有一个将 clipToPadding 和 clipChildren 都设置为 false 的 ViewPager。寻呼机中的项目有一个投影效果,绘制在每个项目下方,超出其边界。当寻呼机是静态的时,这
我正在实现一个 ViewPager,它显示下一个和上一个项目,还使用 ViewPager.PageTransformer 动画页面转换。它具有缩小和淡出效果。为了显示下一个和上一个,我使用负 Pa
我在使用 PageTransformer 和 MapView 设置 ViewPager 时遇到问题。问题是当 viewpager 设置为使用 PageTransformer 时,mapview 在平移
我正在使用带有回收器 View 的新 Viewpager2 来显示页面列表。要创建类似 View 的堆栈,我正在使用 ViewPager2.PageTransformer 我注意到根据 ViewPag
我在 ViewPager.pageTransformer 中使用 view.setTranslationY() 时遇到问题 当软键盘打开时页面转换到其他页面时,会出现两个问题: 1- 焦点停留在旧页面
我有一个 ViewPager,其中的页面包含 ListView。一切正常,我的 viewPAger 和 ListViews 都按预期工作:可以从一个页面滑动到另一个页面,并且 listviews 可以
我需要在带有 android:minSdkVersion="9" 的应用上为 ViewPager 编写自定义转换。 我正在尝试运行给定 here 的 ZoomOutPageTransformer .
我无法通过使用 AndroidTools 从 eclipse 获取 androidsupportv4 修订版 11 输入 AddSupportLibrary 谁能告诉我如何从 Eclipse 获取它为
我正在开发的 Android 应用程序中有一个非常难以描述的错误。我有一个 fragment ,它又包含一个由 FragmentStatePagerAdapter 支持的 ViewPager。寻呼机包
我是一名优秀的程序员,十分优秀!