1. 程式人生 > >Viewpage實現3D畫廊+高斯模糊

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();
    }
}

--------------------------------------------------------------------------------------------------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);
    }
}