Rui*_*Rui 9 android android-viewpager
我有一个ViewPager,其中每个视图都代表卡片上的卡片.每张卡片使用ViewPager边距在边框上有阴影:
cardsViewPager.setPageMargin(getResources().getDisplayMetrics().widthPixels / 20);
cardsViewPager.setPageMarginDrawable(R.drawable.shadow);
Run Code Online (Sandbox Code Playgroud)
它按预期工作.
但是,如果我添加一个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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
cardsViewPager.setPageTransformer(false, new ScalePageTransformer(cardsViewPager));
Run Code Online (Sandbox Code Playgroud)
但现在,保证金没有出现.如果我在PageTransformer上有缩小效果,我可以看到当前卡缩小的时间,可绘制的边距低于屏幕上的当前卡.这是一张描述正在发生的事情的图片:
红卡顶部正在从右向左滑动蓝卡.由于红牌有一个比例变换,我们可以看到它背后的黑色可绘制.
有没有办法强制将保证金绘制在红牌之上?这不应该是默认行为吗?
Sha*_*Adi -3
尝试使用此代码进行视图页面的转换阶段:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...
归档时间: |
|
查看次数: |
2183 次 |
最近记录: |