viewpage卡片轮播

布局

    <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);  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值