gpt4 book ai didi

java - 垂直 ViewPager 中的动画

转载 作者:搜寻专家 更新时间:2023-11-01 09:34:47 24 4
gpt4 key购买 nike

我需要在垂直 ViewPager 中制作此动画:

enter image description here

https://www.youtube.com/watch?v=wuE-4jjnp3g

这是我到目前为止尝试过的:

   viewPager = (VerticalViewPager) rootView.findViewById(R.id.viewpager);

viewPager.setPageTransformer(false, new ViewPager.PageTransformer() {
@Override
public void transformPage(View page, float position) {

if (position >= 0.5F && position <= 1F) {

float progressStart = 0.5f;
float progressEnd = 1f;
float progressDelta = progressEnd - progressStart;

float progress = (position - progressStart)/progressDelta;
if(progress>1)progress=1;
if(progress<0)progress=0;

float endValue = 1f;
float startValue = 0.8f;

float delta = endValue - startValue;

progress = 1-progress;
float currentScale = startValue + delta*progress;

ViewCompat.setPivotY(page,0);
ViewCompat.setScaleX(page, currentScale);
ViewCompat.setScaleY(page, 0.9F);
ViewCompat.setTranslationY(page, 0);

} else {
ViewCompat.setScaleX(page, 1.0F); //- width
ViewCompat.setScaleY(page, 0.9F); //- height
}

}
});

这是结果:

enter image description here

https://www.youtube.com/watch?v=G9W2lCKP-_s

我正在使用垂直方向的原始 ViewPager 副本,查看代码:https://github.com/Devlight/InfiniteCycleViewPager/blob/master/infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/VerticalViewPager.java

显然它还没有关闭,我需要预览下一页并使两页更接近。

enter image description here

请帮忙

谢谢。

最佳答案

我需要预览下一页

你必须添加

        android:paddingBottom="200dp"
android:clipToPadding="false"

到您的<com.gigamole.infinitecycleviewpager.VerticalViewPager在布局中

在你的 java 代码中,你当然应该调整 startTranslationstartValuepaddingBottom在你的布局中

        viewPager.setPageTransformer(true, new ViewPager.PageTransformer() {
@Override
public void transformPage(View page, float position) {
ViewCompat.setPivotY(page,0);
ViewCompat.setPivotX(page,page.getWidth()/2);
float endTranslation = 0f;
float startTranslation = -400f;
float deltaTranslation = endTranslation - startTranslation;

float endScale = 1f;
float startScale = 0.8f;
float deltaScale = endScale - startScale;

float progressStart = 0.5f;
float progressEnd = 1f;
float progressDelta = progressEnd - progressStart;

float progress = (position - progressStart)/progressDelta;
if(progress>1)progress=1;
if(progress<0)progress=0;

progress = 1-progress;

float currentScale = startScale + deltaScale*progress;
ViewCompat.setScaleX(page, currentScale);
ViewCompat.setScaleY(page, currentScale);

float currentTranslation = startTranslation + deltaTranslation*progress;
ViewCompat.setTranslationY(page, currentTranslation);
}

关于java - 垂直 ViewPager 中的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44245228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com