首先 创建一个Util类
public class ZoomOutSlideTransformer extends ABaseTransformer {
private static final float MIN_SCALE = 0.85f;
private static final float MIN_ALPHA = 0.5f;
@Override
protected void onTransform(View view, float position) {
if (position >= -1 || position <= 1) {
// Modify the default slide transition to shrink the page as well
final float height = view.getHeight();
final float width = view.getWidth();
final float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
final float vertMargin = height * (1 - scaleFactor) / 2;
final float horzMargin = width * (1 - scaleFactor) / 2;
// Center vertically
view.setPivotY(0.5f * height);
view.setPivotX(0.5f * width);
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));
}
}
之后
mVp = view.findViewById(R.id.pager); imageView = view.findViewById(R.id.hottest_image); mVp.setPageMargin(60);//控制两幅图之间的间距,尽量以屏幕的宽度来确定 mVp.setPageTransformer(true,new ZoomOutSlideTransformer()); //3D画廊模式 mVp.setPageTransformer(true,new ZoomOutSlideTransformer());//3D画廊模式 //
mVp.setOffscreenPageLimit(list.size());//设置预加载数量 mVp.setAdapter(myAdapter); Glide.with(context).load(list.get(0)).bitmapTransform(new BlurTransformation(context,35)).into(imageView);
适配器
public class MyAdapter extends PagerAdapter{
private List<String> list;
private Context context;
public MyAdapter(List<String> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
ImageView imageView = new ImageView(context);
SimpleDraweeView simpleDraweeView = new SimpleDraweeView(context);
//设置图片进行展示 setImageResource 对应SRC
ImageLoader.getInstance().displayImage(list.get(position),imageView, MApp.getoPetions());
Log.i("TT",list.size()+"DDDD");
//将图片拉伸
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
// simpleDraweeView.setImageURI(Uri.parse(list.get(position)));
//一个视图的组 每次加载前后中3张图片
container.addView(imageView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onClick.setOnClickPosition(position);
}
});
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
OnClick onClick;
public void setOnClick(OnClick onClick) {
this.onClick = onClick;
}
public interface OnClick{
void setOnClickPosition(int position);
}
}
本文介绍如何在Android应用中自定义ViewPager的滑动效果,包括实现缩放和平移的过渡动画,并展示了如何使用Glide加载图片以及创建适配器。
1580

被折叠的 条评论
为什么被折叠?



