我正在尝试使用 ViewPager 在 android 中创建一个类似火种的用户界面。
我看过这个图书馆:https://github.com/kikoso/Swipeable-Cards
,但我希望在向右滑动后能够看到上一张卡片,因此首选 ViewPager。
我正在寻找的具体 UI 细节是:
图像的堆叠当前视图下方的下一个视图的轮廓。我已经能够通过 ViewPager.PageTransformer 接口实现视图的堆叠,但我无法获得寻呼机内后续视图堆栈的轮廓 - 赋予其 3D 外观的部分- 就像这里 - 卡叠在另一张卡的上面 -http://i1.cdnds.net/14/38/300x522/friends-tinder-profiles-ross.jpg http://i1.cdnds.net/14/38/300x522/friends-tinder-profiles-ross.jpg
这是我的 pageTransform 方法
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 0) { // [-1,0]
// Use the default slide transition when moving to the left page
view.setAlpha(1);
view.setTranslationX(0);
view.setScaleX(1);
view.setScaleY(1);
view.setRotation(90*(position));
} else if (position < 1) { // (0,1]
// Fade the page out.
view.setAlpha(1);
// Counteract the default slide transition
view.setTranslationX(pageWidth * -position);
view.setScaleX(1);
view.setScaleY(1);
} else if (position==1) {
view.setAlpha(1);
// view.setPadding(0,15,0,0);
}
else { // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(0);
}
}
这可以用 viewPager 实现吗?
这就是我设置它的方式 - 它有点老套,因为我手动触发transformPage
我的评论中提到的方法:
Android ViewPager手动调用PageTransformer TransformPage https://stackoverflow.com/questions/30867854/android-viewpager-manually-call-pagetransformer-transformpage
但是,它有效!
@Override
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 0) { // [-1,0]
// Use the default slide transition when moving to the left page
view.setAlpha(1);
view.setTranslationX(0);
view.setTranslationY(0);
view.setScaleX(1);
view.setScaleY(1);
view.setRotation(90*(position));
} else if (position < 1) { // (0,1]
// Fade the page out.
view.setAlpha(1);
view.setRotation(0);
// Counteract the default slide transition
view.setTranslationX(pageWidth * -position);
view.setTranslationY(50*position);
view.setScaleX(Math.max(0.9f, (1 - position)));
view.setScaleY(Math.max(0.9f, (1 - position)));
CardView cv = (CardView)view.findViewById(R.id.card_view);
cv.setPadding(0,0,0,0);
} else if (position==1) {
view.setAlpha(1);
view.setTranslationX(pageWidth*-position);
view.setTranslationY(50*position);
view.setScaleX(Math.max(0.9f, (1 - position)));
view.setScaleY(Math.max(0.9f, (1 - position)));
}
else { // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(1);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)