android - Depth Pager Transformer 就像 SnapChat

标签 android android-fragments android-viewpager snapchat

我正在尝试使用 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/

相关文章:

android - Android 上的 VideoView 在比特率更改时重新启动 HLS 流

android - 带有 viewpagerindicator 和图表引擎的图表库

java - 当我旋转 Android 手机时,Fragment 中的自定义 ListView 就会出现

android - Chromecast 远程显示上的 YoutubeSupportFragment : Keeping in the background

Android - 带有 alignParentBottom = "true"的 View 在 ViewPager 中不可见

Android ViewPager 前置新 View

android - ColorPrimaryDark 不是状态栏颜色

java - android 获取手机联系人时黑屏

java - 似乎无法登录或连接到 MySQL 数据库

java - 如何动态添加新页面到viewPager?