Viewpage实现3D画廊+高斯模糊

@Override
public void data(HotNews hotNews) {


    if (flag == false) {
       List<HotNews.ResultBean> result = hotNews.getResult();
        hotviewPage.setVisibility(View.VISIBLE);
        hotsimp.setVisibility(View.VISIBLE);
        hotRevyView.setVisibility(View.GONE);
        //3D画廊
        HotAdapter adapter = new HotAdapter(result, getActivity());
        hotviewPage.setAdapter(adapter);
        hotviewPage.setPageMargin(20);
        hotviewPage.setOffscreenPageLimit(result.size());
        //设置画廊样式
        hotviewPage.setPageTransformer(true, new ZooOutPageTransformer());
        //左右都有图片
        hotviewPage.setCurrentItem(0);
        //ViewPage左右两边滑动无效的处理
        linHot.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return hotviewPage.dispatchTouchEvent(event);
            }
        });
        //高斯
        String imageUrl = result.get(0).getImageUrl();
        showUrlBlur(imageUrl);
    } else if (flag == true) {
        hotviewPage.setVisibility(View.GONE);
        hotsimp.setVisibility(View.GONE);
        hotRevyView.setVisibility(View.VISIBLE);
        List<HotNews.ResultBean> result = hotNews.getResult();
        HotItemAdapter adapter = new HotItemAdapter(getActivity(),result);
        LinearLayoutManager manager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
        hotRevyView.setLayoutManager(manager);
        hotRevyView.setAdapter(adapter);
    }


}

//高斯模糊
private void showUrlBlur(String imageUrl) {
    try {
        Uri uri = Uri.parse(imageUrl);
        ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
                .setPostprocessor(new IterativeBoxBlurPostProcessor(2, 30))
                .build();
        AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
                .setOldController(hotsimp.getController())
                .setImageRequest(request)
                .build();

        hotsimp.setController(controller);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
ZooOutPageTransformer------------------------------------------------------------------------------------
    ‘package com.example.weiduyingyuan.mvp;

import android.support.annotation.NonNull;
import android.support.v4.view.ViewPager;
import android.view.View;

public class ZooOutPageTransformer implements ViewPager.PageTransformer{
    //自由控制缩放比例
    private static final float MAX_SCALE = 1.2f;
    private static final float MIN_SCALE = 0.1f;//0.85f
    @Override
    public void transformPage(@NonNull View page, float position) {
        if(position<=1){
            float scaleFactor = MIN_SCALE +(1 - Math.abs(position)*(MAX_SCALE-MIN_SCALE));
            page.setScaleX(scaleFactor);

            if (position>0){
                page.setTranslationX(-scaleFactor*2);
            }else if(position<0){
                page.setTranslationX(scaleFactor*2);
            }

            page.setScaleY(scaleFactor);
        }else{
            page.setScaleX(MIN_SCALE);
            page.setScaleY(MIN_SCALE);
        }
    }
}

--------------------------------------------------------------------------------------------------adapter

package com.example.weiduyingyuan.mvp.adapter;

import android.content.Context;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;

import com.example.weiduyingyuan.R;
import com.example.weiduyingyuan.bean.HotNews;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

public class HotAdapter extends PagerAdapter{
    private List<HotNews.ResultBean> list;
    private Context context;
    public HotAdapter(List<HotNews.ResultBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {

        SimpleDraweeView simpleDraweeView = new SimpleDraweeView(context);
        simpleDraweeView.setScaleType(ImageView.ScaleType.CENTER);
        simpleDraweeView.setImageURI(Uri.parse(list.get(position).getImageUrl()));
        container.addView(simpleDraweeView);
        return simpleDraweeView;
    }


    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View)object);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值