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