Android Viewpager tinder 与 UI 相似,具有 3D 卡片堆栈外观
Android Viewpager tinder like UI with 3D card stack appearance
我正在尝试使用 ViewPager 在 android 中创建类似 tinder 的 UI。
我看过这个库:https://github.com/kikoso/Swipeable-Cards
,但我希望在向右滑动后能够看到之前的卡片,因此我更喜欢 ViewPager。
我正在寻找的具体 UI 详细信息是:
在当前视图下方下一个视图的轮廓堆叠图像。我已经能够通过 ViewPager.PageTransformer 界面实现视图的堆叠,但是我无法获得 寻呼机内部后续视图的堆栈轮廓 - 给它一个 3d 的部分看 - 就像这里 - 卡片叠在另一张卡片上 - 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 可以吗?
不能用PageTransformer接口实现tinder效果,因为位置值只是1轴值。你应该有其他值,比如 x, y 轴上的触摸点坐标,因为火种效果使用三角函数。
这就是我设置它的方式 - 它有点老套,因为我手动触发了 transformPage
方法,正如我在此处评论中提到的:
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);
}
}
您可以使用 Android 库 Truffle-Shuffle 轻松做到这一点。您可以添加 X 张卡片,卡片中包含任何 xml 内容。 https://github.com/intuit/truffle-shuffle
我正在尝试使用 ViewPager 在 android 中创建类似 tinder 的 UI。
我看过这个库:https://github.com/kikoso/Swipeable-Cards
,但我希望在向右滑动后能够看到之前的卡片,因此我更喜欢 ViewPager。
我正在寻找的具体 UI 详细信息是:
在当前视图下方下一个视图的轮廓堆叠图像。我已经能够通过 ViewPager.PageTransformer 界面实现视图的堆叠,但是我无法获得 寻呼机内部后续视图的堆栈轮廓 - 给它一个 3d 的部分看 - 就像这里 - 卡片叠在另一张卡片上 - 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 可以吗?
不能用PageTransformer接口实现tinder效果,因为位置值只是1轴值。你应该有其他值,比如 x, y 轴上的触摸点坐标,因为火种效果使用三角函数。
这就是我设置它的方式 - 它有点老套,因为我手动触发了 transformPage
方法,正如我在此处评论中提到的:
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);
}
}
您可以使用 Android 库 Truffle-Shuffle 轻松做到这一点。您可以添加 X 张卡片,卡片中包含任何 xml 内容。 https://github.com/intuit/truffle-shuffle