我正在尝试使用ViewPager在Android中创建类似火炬的UI。
我查看了这个库:node
,但是我希望能够在向右滑动后看到上一张卡片,因此偏好ViewPager。
我正在寻找的具体用户界面细节是:
使用当前视图下方的下一个视图的轮廓堆叠图像。我已经能够通过ViewPager.PageTransformer接口实现视图堆叠,但是我无法获得寻呼机内部后续视图堆栈的轮廓 - 使其具有3d外观的部分 - 就像在这里 - 卡堆叠在另一张卡的顶部 - http://i1.cdnds.net/14/38/300x522/friends-tinder-profiles-ross.jpg
这是我的pageTransform方法
https://github.com/kikoso/Swipeable-Cards
viewPager可以实现吗?
答案 0 :(得分:2)
So this was the way that I set it up - its a little hacky because I manually trigger the transformPage
method as mentioned in my comment here:
Android ViewPager manually call PageTransformer transformPage
BUT, it works!
@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);
}
}
答案 1 :(得分:0)
您无法使用PageTransformer接口实现tinder效果,因为位置值只是1轴值。您应该有其他值,例如x,y轴上的触摸点坐标,因为tinder效果使用三角函数。
答案 2 :(得分:-1)
您可以使用Android库Truffle-Shuffle轻松地做到这一点。您可以在卡片中添加X张卡片以及任何xml内容。 https://github.com/intuit/truffle-shuffle