有没有人知道Pinterest或Tumblr如何实现“刷卡”方法 .
即在Pinterest上,您可以点击新闻Feed上的帖子 . 比 DetailActivity
已启动并显示所选帖子的详细信息 . 您可以按后退按钮返回新闻Feed活动,或者您可以向左滑动(详细信息活动)以返回新闻Feed活动 .
视频:http://youtu.be/eVcSCWetnTA
通常我会使用 overridePendingTransition()
,但 overridePendingTransition()
需要动画(资源ID如 R.anim.foo
) . 仅当用户进行滑动手势时,Pinterest和Tumblr才会启动动画 . 他们还根据手指移动支持某种"frame by frame animation" . 因此,他们跟踪手指移动的距离,并将过渡动画设置为相应的百分比值 .
我知道如何使用带有 FragmentTransaction
的"real java" Animation / AnimatorSet对象来动画片段替换 . 使用片段我必须覆盖 onCreateAnimator()
,但我不知道如何使用Activities实现类似的东西 . 活动有 onCreateAnimator()
(或类似的东西)吗?也不知道如何滑动行为,因为它现在没有启动动画,但更多的是逐步改变Window / Activity / Fragment的属性或者其他......
有什么建议?
编辑:我在youtube上找到了一个pinterest应用程序的视频:http://youtu.be/eVcSCWetnTA这就是我想要实现的内容 .
我猜Pinterest正在使用Fragments和 onCreateAnimator()
来实现"swipe back" . 由于我的应用程序已经在活动中已经有Fragment和ChildFragments,因此如果我可以为活动实现它,那将对我更加容易 .
再一次:我知道如何检测滑动手势,这不是我要求的 . 观看YouTube视频:http://youtu.be/eVcSCWetnTA
更新:我创建了一个小库,它与Pinterest或Tumblrs实现的行为并不完全相同,但对于我的应用程序,这似乎是一个很好的解决方案:https://github.com/sockeqwe/SwipeBack?source=c
9 回答
看来你正在寻找的效果是android开发者网站中ViewPager的样本之一 .
在Depth页变换器部分中查看http://developer.android.com/training/animation/screen-slide.html#depth-page . 它有一个视频和源代码 .
使用ViewPager.PageTransformer,您可以决定从一个页面切换到下一个页面时页面的行为方式 .
样本和你链接的视频之间的唯一区别是左右似乎是倒置的,但应该是我在问题中链接的YouTube video上看到的一个很好的起点 . 必须对两种观点的行动进行讨论 . 如这段代码所示(
mPager.setPageTransformer
的第一个参数应为reverseDrawingOrder
= false) . 请注意,中间的2if
部分被交换,并且position
变量的处理方式略有不同 . 弹性效应留作练习 . 当你得到它时请分享!如果带有示例的页面变得很糟糕,这里是该部分的原始代码:
Update: 修复了此项目的内存使用问题,并将滑回式样式更改为iOS .
我写了一个完全像Pinterest和tumblr的演示,你只需扩展BaseActivity,你就可以获得一个滑动效果,工作顺利!
检查一下:https://github.com/chenjishi/SlideActivity
和截图:
我找到了一个基于SwipeBack的GitHub项目,如Pinterest .
它确实是一个很好的开源项目,可以解决您的问题 . 它可以根据您的需要进行操作,例如按后退或简单滑动即可转到上一屏幕 . 由于这个项目有选择权
1. Swipe left to Right
2. Swipe Right to Left
3. Swipe Bottom to top
https://github.com/Issacw0ng/SwipeBackLayout
and also you install this demo application from Google Play.
https://play.google.com/store/apps/details?id=me.imid.swipebacklayout.demo
附上截图: -
希望这会帮助你 .
我能在15分钟内做到这一点,一开始就不错 . 如果你花一些时间,你可能能够优化它 .
我只是检查了层次结构查看器 . 看起来他们正在使用ViewPager以及之前活动的屏幕截图 .
我建议做以下事情:
首先检测用户在设备中执行的手势 . 你可以参考this link
我不会复制上述链接中的相关代码,因为我认为这是可接受的答案
其次你可以用这种方法
按照this question的建议执行以下操作
他们谈到用动画完成一项活动
希望这对你有所帮助
所以我想我自己找到了解决方案:
首先:Pinterest确实使用了ViewPager像@frozenkoi这样的自定义Page Transformer在他的回答中提到过 . 您可以在pinterest应用中看到视图寻呼机的过冲边缘效应 .
@Amit Gupta指出了让活动滑动的图书馆 . 它与各种导航抽屉的概念相同,并设置了半透明的主题 . 他们滑动布局 . 但这并不是我想要的,因为它将顶部活动滑动到右边而不是简单地调用finish() . 但是下面的活动不会被动画化 .
解决方案是(并且我猜这是Tumblr做的)用动画对象编写你自己的动画并逐步动画它 . 这可以通过ActivityOptions完成 . In my opinion this will be the solution.
我写了一个项目 . 它允许您轻松开发由Fragments导航的应用程序,就像Pinterest一样 .
https://github.com/fengdai/FragmentMaster
也许这不是你想要的答案 . 但我希望它对其他人有用 .
我正在处理我目前正在处理的项目中的这个,并提出了以下代码 . 也许它现在与你无关,但它可以帮助这篇文章的新人 . :)
基本上它是你在答案中提到的ViewPager实现,但我认为这是你问题最简单,最快捷的解决方案 . 缺点是它只适用于Fragments(可以很容易地更改为Objects),如果你想将ActionBar添加到swipe中,你可能最终会创建一个自定义的 .
}
这是使用另一个ViewPager作为SlidingMenu实现它的活动 . (作为额外的)
}