布局
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="@dimen/dp_300"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:overScrollMode="never"
android:clipChildren="false" />
工具类
public class ScaleAlphaPageTransformer implements
ViewPager.PageTransformer{
public static final float MAX_SCALE = 1.0f;
public static final float MIN_SCALE = 0.8f;
public static final float MAX_ALPHA = 1.0f;
public static final float MIN_ALPHA = 0.5f;
private boolean alpha = true;
private boolean scale = true;
@Override
public void transformPage(View page, float position) {
if (position < -1) {
position = -1;
} else if (position > 1) {
position = 1;
}
float tempScale = position < 0 ? 1 + position : 1 - position;
if(scale){
float slope = (MAX_SCALE - MIN_SCALE) / 1;
//一个公式
float scaleValue = MIN_SCALE + tempScale * slope;
page.setScaleX(scaleValue);
page.setScaleY(scaleValue);
}
if(alpha){
//模糊
float alope = (MAX_ALPHA - MIN_ALPHA) / 1;
float alphaValue = MIN_ALPHA + tempScale * alope;
page.setAlpha(alphaValue);
}
}
/***
* 设置是否模糊和改变大小
* @param scale
*/
public void setType( boolean scale){
this.alpha = alpha;
this.scale = scale;
}
}
适配器
public class ViewPagerAdapter extends PagerAdapter {
private List<YqBean>list;
private Context mContext;
public ViewPagerAdapter(List<YqBean> list, Context mContext) {
this.list = list;
this.mContext = mContext;
}
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(final ViewGroup container, int position) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item, container, false);
ImageView image = (ImageView) view.findViewById(R.id.iv_big);
final ImageView yqmIma = (ImageView) view.findViewById(R.id.yqm_ima);
TextView yqm = (TextView) view.findViewById(R.id.yqm);
image.setImageResource(list.get(position%list.size()).getImage());
yqm.setText(list.get(position%list.size()).getYqm());
//添加判断
if(!isDestroy((Activity)mContext)){
RoundedCorners roundedCorners = new RoundedCorners(20);
RequestOptions options = new RequestOptions().bitmapTransform(roundedCorners);
Glide.with(mContext).load(list.get(position%list.size()).getIma()).apply(options).into(yqmIma);
}
container.addView(view);
return view;
}
/**
* 判断Activity是否Destroy
* @param
* @return
*/
public static boolean isDestroy(Activity mActivity) {
if (mActivity== null || mActivity.isFinishing() || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && mActivity.isDestroyed())) {
return true;
} else {
return false;
}
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
调用
fenx.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog();
}
});
ViewPagerAdapter adapter = new ViewPagerAdapter(list, this);
mViewPager.setPageMargin(-50);
mViewPager.setAdapter(adapter);
mViewPager.setOffscreenPageLimit(3);
ScaleAlphaPageTransformer mScaleAlphaPageTransformer = new ScaleAlphaPageTransformer();
mScaleAlphaPageTransformer.setType(true);
mViewPager.setPageTransformer(true, mScaleAlphaPageTransformer);
mViewPager.setCurrentItem(0);