Android PageTransformer转换中的ViewPager页边距
我有一个ViewPager,其中每个视图都是卡片组上的一个表示。使用ViewPager边距,每张卡的边框上都有阴影:Android PageTransformer转换中的ViewPager页边距,android,android-viewpager,Android,Android Viewpager,我有一个ViewPager,其中每个视图都是卡片组上的一个表示。使用ViewPager边距,每张卡的边框上都有阴影: cardsViewPager.setPageMargin(getResources().getDisplayMetrics().widthPixels / 20); cardsViewPager.setPageMarginDrawable(R.drawable.shadow); 它的工作原理与预期一致 但是,如果我添加PageTransformer,使右侧的卡堆叠在左侧卡的顶部
cardsViewPager.setPageMargin(getResources().getDisplayMetrics().widthPixels / 20);
cardsViewPager.setPageMarginDrawable(R.drawable.shadow);
它的工作原理与预期一致
但是,如果我添加PageTransformer,使右侧的卡堆叠在左侧卡的顶部:
public class ScalePageTransformer implements PageTransformer {
private final ViewPager mViewPager;
public ScalePageTransformer(ViewPager viewPager) {
this.mViewPager = viewPager;
}
@Override
public void transformPage(View page, float position) {
if (position <= 0) {
int pageWidth = mViewPager.getWidth();
final float translateValue = position * -pageWidth;
if (translateValue > -pageWidth) {
page.setTranslationX(translateValue);
} else {
page.setTranslationX(0);
}
}
}
}
但现在,差距没有出现。如果我在PageTransformer上有一个缩小效果,我可以看到当前卡被缩小时,屏幕上的可提取边距低于当前卡。下面是一张图片来描述正在发生的事情:
蓝卡在红卡上方从右向左刷卡。由于红牌有一个刻度变换,我们可以看到它后面的黑线
有没有一种方法可以迫使保证金被抽到红牌之上?这不是默认行为吗?尝试在视图页面的转换阶段使用以下代码:
private static final float MIN_SCALE = 0.85f;
private static final float MIN_ALPHA = 0.5f;
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 1) { // [-1,1]
// Modify the default slide transition to shrink the page as well
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
float vertMargin = pageHeight * (1 - scaleFactor) / 2;
float horzMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0) {
view.setTranslationX(horzMargin - vertMargin / 2);
} else {
view.setTranslationX(-horzMargin + vertMargin / 2);
}
// Scale the page down (between MIN_SCALE and 1)
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
// Fade the page relative to its size.
view.setAlpha(MIN_ALPHA +
(scaleFactor - MIN_SCALE) /
(1 - MIN_SCALE) * (1 - MIN_ALPHA));
} else { // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(0);
}
}
private静态最终浮动最小刻度=0.85f;
专用静态最终浮动最小值α=0.5f;
公共页面(视图、浮动位置){
int pageWidth=view.getWidth();
int pageHeight=view.getHeight();
if(位置<-1){/[-无穷大,-1)
//这个页面在屏幕的左边。
视图。setAlpha(0);
}如果(位置更改为
cardsViewPager.setPageTransformer(true, new ScalePageTransformer(cardsViewPager));
第一个论点是android开发者网站的绘图顺序复制粘贴对任何人都没有帮助。试着理解这个问题,然后发表评论。
cardsViewPager.setPageTransformer(true, new ScalePageTransformer(cardsViewPager));