本身没有难度,记录下算法和阴影数值而已。
package com.example.testtransformer;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.ViewPager;
public class CardTransformer implements ViewPager.PageTransformer {
@Override
public void transformPage(@NonNull View view, float position) {
Log.e("info", "transformPage======>" + position);
//缩放比例
int mScale = 70;
float scale = (view.getWidth() - mScale * position) / (float) (view.getWidth());
// 设置卡片背景色
if (view.getBackground() == null) {
view.setBackgroundColor(0xFFFFFFFF);
}
// 设置Z轴及阴影
view.setTranslationZ(scale * 20);
// 设置横向缩放
view.setScaleX(scale * 0.85f);
// 设置纵向缩放
view.setScaleY(scale * 0.85f);
if (position <= 0.0f) { // 当前页
//X轴偏移
view.setTranslationX((view.getWidth() / 3f * position));
//打开点击事件
view.setClickable(true);
} else if (position > 0) { // 后一页
//X轴偏移
int mTranslation = 61;
view.setTranslationX((-view.getWidth() * position) + (mTranslation * position));
//屏蔽点击事件
view.setClickable(false);
}
}
}