gpt4 book ai didi

android - 为 ViewPager 的特定页面设置动画

转载 作者:行者123 更新时间:2023-11-29 18:25:12 24 4
gpt4 key购买 nike

我使用下面的代码给 ViewPager 一个淡入淡出的效果:

//define view pager and set adapter:  
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_startup_preference);
//we're not using the layout natively, but using Fragment's layout
//but setContentView is required -> it is accessed by : R.id.startPref_pager


StartPrefPagerAdapter prefPagerAdapter =
new StartPrefPagerAdapter(getSupportFragmentManager());

final ViewPager StartPref_Viewpager = findViewById(R.id.startPref_pager);
StartPref_Viewpager.setAdapter(prefPagerAdapter);
...
...




//set the animation with:
StartPref_Viewpager.setPageTransformer(false, new ViewPager.PageTransformer() {
@Override
public void transformPage(@NonNull View page, float position) {

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

page.setScaleX(0.5f);
page.setScaleY(0.5f);
page.setAlpha(0f);
page.setVisibility(View.VISIBLE);

page.animate().alpha(1f).setDuration(1000);
page.animate().scaleX(1f).setDuration(500);
page.animate().scaleY(1f).setDuration(500);

}
});

...

但是,我希望从 ViewPager 的第二页开始应用动画,而不是从第一页本身开始应用。我怎样才能做到这一点?

最佳答案

您可以使用 OnPageChangeListener 在滚动时检查页码,并使用第 0 页的默认 PageTransformer 和自定义 PageTransformer 与其他页面

StartPref_Viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (position == 0)
StartPref_Viewpager.setPageTransformer(false, mDefaultPageTransformer);
else
StartPref_Viewpager.setPageTransformer(false, mPageTransformer);
}

@Override
public void onPageSelected(int position) {
}

@Override
public void onPageScrollStateChanged(int state) {
}
});


ViewPager.PageTransformer mPageTransformer = new ViewPager.PageTransformer() {
@Override
public void transformPage(@NonNull View page, float position) {

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

page.setScaleX(0.5f);
page.setScaleY(0.5f);
page.setAlpha(0f);
page.setVisibility(View.VISIBLE);

page.animate().alpha(1f).setDuration(1000);
page.animate().scaleX(1f).setDuration(500);
page.animate().scaleY(1f).setDuration(500);

}
};

ViewPager.PageTransformer mDefaultPageTransformer = new ViewPager.PageTransformer() {
@Override
public void transformPage(@NonNull View page, float position) {

}
};

关于android - 为 ViewPager 的特定页面设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59463539/

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