【问题标题】:android view pager swipe animationandroid查看寻呼机滑动动画
【发布时间】:2015-09-21 07:34:11
【问题描述】:

我正在尝试通过覆盖 transformPage() 方法在视图寻呼机中的页面滑动中做一些动画,这样当我从右向左滑动时,新页面(来自右侧的页面)应该出现在上一个页面下方动画开始后立即打开页面,然后上一页应滑到新页面的左侧。 当我从左向右滑动时,新页面应该直接滑过上一页并完全覆盖它。但我无法实现它。 我尝试了以下方法:-

if(position > 0 && position < 1)
{
    int pageWidth = page.getWidth();
    float translateValue = (-position * pageWidth);
    if(translateValue < pageWidth)
    {
        translationX = translateValue;
    }
    else
    {
        translationX = 0;
    }
}
else 
{
    alpha = 1;
    scale = 1;
    translationX = 0;
}

请提供一些建议。谢谢

【问题讨论】:

  • 不确定您所描述的确切效果 -- 类似这样 -- medium.com/@BashaChris/…
  • 可以在 Android 5.0 智能手机的 Play Music 应用中观看类似的动画。在播放屏幕上,当您从右向左滑动时,新页面会出现在当前页面下方,而从左向右滑动时,新页面会出现/滑动到当前页面上方/上方。

标签: android animation android-viewpager swipe android-pagetransformer


【解决方案1】:

这应该像你想要的那样工作,你只需要把它放在你的 PagerTransformer 类中:

private static final float MIN_SCALE_DEPTH = 0.75f;

 @Override
public void transformPage(View page, float position) {
    final float alpha;
    final float scale;
    final float translationX;


            if (position > 0 && position < 1) {
                alpha = (1 - position);
                scale = MIN_SCALE_DEPTH + (1 - MIN_SCALE_DEPTH) * (1 - Math.abs(position));
                translationX = (page.getWidth() * -position);
            } else {
                alpha = 1;
                scale = 1;
                translationX = 0;
            }

    page.setAlpha(alpha);
    page.setTranslationX(translationX);
    page.setScaleX(scale);
    page.setScaleY(scale);

【讨论】:

  • 我试过你的代码,问题和我上面评论中提到的一样。使用上面的代码,右页也总是停留在左页的顶部,我只想要相反的。
  • 我通过将传递给 setPageTransformer() 方法的第一个参数更改为“true”并使用 Michał Hawryszko 发布的转换器代码来解决问题。我已阅读与此参数相关的文档,但我没有了解绘图顺序如何更改页面的 Z 索引。有人可以解释一下吗?
  • 对不起,我忘了提到设置这个参数。根据文档,此参数将页面绘制顺序从第一个到最后一个到最后一个到第一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
相关资源
最近更新 更多