我正在尝试使用 DepthPageTransformer
实现 ViewPager
,就像 Snapchat 应用程序一样。在 SnapChat 应用程序中,有一个始终位于 ViewPager
中心的相机屏幕,从左或右滑动会将其他 fragment 带到相机屏幕的顶部。
我从 this 找到了 DepthPageTransformer
的代码关联。但是这个演示的问题在于它从后面带来了所有下一个屏幕 View 。就像 SnapChat 一样,我在相机屏幕的中央有一个相机屏幕,左上方有 2 个屏幕,右上方有两个屏幕。
那么,我怎样才能创建一个 PageTransformer
将 fragment 从左侧或右侧带到我的中央屏幕(相机)的顶部?
最佳答案
我认为您应该在 FragmentPagerAdapter 中提供 5 个 fragment ,第三个 (index=2) fragment 将是带有相机 View 的 fragment ,
viewPager.setCurrentItem(2); //2 is index of camera fragment
那么你的 ViewPager.PageTransformer
应该是这样的:
@Override
public void transformPage(View page, float position) {
int pageIndex = (int) page.getTag(); //im stroing pageIndex of fragment in its tag
if(pageIndex == 2) { //2 is index of camera fragment
float currentTranslation = - position * page.getWidth();
ViewCompat.setTranslationX(page, currentTranslation);
ViewCompat.setTranslationZ(page, -1);
return;
}
我正在浏览 pageIndex
,同时 fragment 的 View 是在其标签中创建的。
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
...
view.setTag(pageIndex);
return view;
}
这是带有结果的 gif: https://media.giphy.com/media/OIwmXdr3nukq4/giphy.gif
带食物的 fragment 是您应该用相机 fragment 替换的 fragment 。
关于android - Depth Pager Transformer 就像 SnapChat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44492630/