布局:
主页面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context="fragment.RecommendFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:orientation="vertical">
<!-- <com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sim"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_margin="50dp"
></com.facebook.drawee.view.SimpleDraweeView>-->
<!-- <android.support.v4.view.ViewPager
android:id="@+id/home_viewpager_banner"
android:layout_width="match_parent"
android:layout_height="164dp"
android:layout_margin="50dp"
android:clipChildren="false">
</android.support.v4.view.ViewPager>
-->
<com.recker.flybanner.FlyBanner
android:id="@+id/flybanner"
android:layout_width="match_parent"
android:layout_margin="50dp"
android:layout_height="200dp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginTop="5sp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="热销新品"
android:textColor="#ff7f57"
android:textSize="16sp" />
<ImageView
android:layout_width="24dp"
android:layout_height="12dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="24dp" />
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/hot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"></android.support.v7.widget.RecyclerView>
</LinearLayout>
</ScrollView>
</LinearLayout>
适配器
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:orientation="vertical">
<!-- <com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/MyImage"
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_gravity="center_horizontal"/>-->
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/MyImage"
android:layout_width="140dp"
android:layout_height="140dp"
fresco:actualImageScaleType="centerCrop"
fresco:placeholderImage="@mipmap/ic_launcher"
fresco:placeholderImageScaleType="centerCrop"
fresco:roundTopLeft="true"
fresco:roundTopRight="true"
fresco:roundBottomLeft="false"
fresco:roundBottomRight="false"
fresco:roundedCornerRadius="25dp"
/>
<TextView
android:id="@+id/MyName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:ellipsize="end"
android:singleLine="true"
android:layout_marginLeft="10dp"
android:text="咖喱牛肉饭" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
>
<TextView
android:id="@+id/MyPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="¥150"
android:layout_marginLeft="10dp"
android:textColor="#f00" />
<ImageView
android:layout_width="40dp"
android:layout_height="18dp"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
package com.example.dell.a20190212.adapter;
import android.content.Context;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.dell.a20190212.R;
import com.example.dell.a20190212.bean.Bean;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class Fresco extends RecyclerView.Adapter<Fresco.SubViewHolder> {
Context context;
private ArrayList<Bean.DataBean.TuijianBean.ListBeanX> beanList;
public Fresco(ArrayList<Bean.DataBean.TuijianBean.ListBeanX> datas, Context context) {
this.beanList = datas;
this.context = context;
}
@NonNull
@Override
public SubViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(context, R.layout.mytest, null);
SubViewHolder subViewHolder = new SubViewHolder(view);
return subViewHolder;
}
@Override
public void onBindViewHolder(@NonNull SubViewHolder subViewHolder, int i) {
/*vh.tv.setText(datas.get(position).getName());
vh.tv2.setText(datas.get(position).getAgio());
vh.iv.setImageURI(Uri.parse(datas.get(position).getImage()));*/
/* subViewHolder.tv.setText(beanList.get(i).getTitle());*/
/* String images = beanList.get(i).getImages();
Pattern pen = compile("\\|");
String [] img = pen.split(images);
*//* subViewHolder.iv.setImageURI(Uri.parse(beanList.get(i).getImages()));*//*
subViewHolder.iv.setImageURI(Uri.parse(img[0]));*/
subViewHolder.MyName.setText(beanList.get(i).getTitle());
subViewHolder.MyPrice.setText("¥" + beanList.get(i).getPrice());
String url = beanList.get(i).getImages();
if (!url.isEmpty()) {
String[] split = url.split("\\|");
if (split != null) {
for (int j = 0; j < split.length; j++) {
String replace = split[j].replace("https", "http");
Uri parse = Uri.parse(replace);
subViewHolder.MyImage.setImageURI(parse);
}
} else {
String replace = url.replace("https", "http");
Uri parse = Uri.parse(replace);
subViewHolder.MyImage.setImageURI(parse);
}
}
}
@Override
public int getItemCount() {
return beanList.size();
}
class SubViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.MyImage)
SimpleDraweeView MyImage;
@BindView(R.id.MyName)
TextView MyName;
@BindView(R.id.MyPrice)
TextView MyPrice;
/* @BindView(R.id.iv)
SimpleDraweeView iv;
@BindView(R.id.tv)
TextView tv;*/
public SubViewHolder(@NonNull View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}
主页面
package com.example.dell.a20190212.fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.dell.a20190212.Apis;
import com.example.dell.a20190212.R;
import com.example.dell.a20190212.adapter.Fresco;
import com.example.dell.a20190212.bean.Bean;
import com.example.dell.a20190212.mvp.presenter.ShowPresenter;
import com.example.dell.a20190212.mvp.view.IView;
import com.recker.flybanner.FlyBanner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
public class RecommendFragment extends Fragment implements IView {
Context context;
@BindView(R.id.flybanner)
FlyBanner flybanner;
@BindView(R.id.hot)
RecyclerView hot;
private FlyBanner flyBanner;
private String url = "http://www.zhaoapi.cn/home/getHome";
Unbinder unbinder;
private ArrayList<Bean.DataBean.TuijianBean.ListBeanX> mdd = new ArrayList<>();
private Fresco fresco;
private ShowPresenter mPresent = new ShowPresenter(this);
/* private ViewPager_Adapter_Home adapter;
private List<Bean.DataBean.BannerBean> mAd1;*/
/* private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
int currentItem = homeViewpagerBanner.getCurrentItem();
if (currentItem == mAd1.size() - 1) {
currentItem = 0;
} else {
currentItem++;
}
homeViewpagerBanner.setCurrentItem(currentItem);
sendEmptyMessageDelayed(0, 2000);
break;
}
}
};*/
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.banner, container, false);
flyBanner = view.findViewById(R.id.flybanner);
ArrayList<String> list = new ArrayList<>();
list.add("http://f.expoon.com/sub/news/2016/01/21/887844_230x162_0.jpg");
list.add("http://attach.bbs.miui.com/forum/201303/16/173716jzszx8vbbb0z9o4k.jpg");
list.add("http://pic28.photophoto.cn/20130929/0034034819144555_b.jpg");
flyBanner.setImagesUrl(list);
mPresent = new ShowPresenter(this);
unbinder = ButterKnife.bind(this, view);
initView();
initData();
return view;
}
private void initData() {
Map<String, String> map = new HashMap<>();
map.put("mpage", "1");
mPresent.startRequest(Apis.URL_Q, map, Bean.class);
}
private void initView() {
//瀑布流
//2、*布局管理器
//①线性 LinearLayoutManager
//②网格 GridLayoutManager
//③瀑布流 StaggeredGridLayoutManager
//LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
//GridLayoutManager manager = new GridLayoutManager(context, 2,GridLayoutManager.VERTICAL,false);
//final StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
//xRecyclerView.setLayoutManager(manager);
GridLayoutManager manager = new GridLayoutManager(context, 2, GridLayoutManager.VERTICAL, false);
hot.setLayoutManager(manager);
fresco = new Fresco(mdd,getActivity());
hot.setAdapter(fresco);
}
@Override
public void showResposneData(Object data) {
final Bean bannerBean = (Bean) data;
mdd.addAll(bannerBean.getData().getTuijian().getList());
fresco = new Fresco(mdd,getActivity());
hot.setAdapter(fresco);
/* if(data instanceof Bean.DataBean.MiaoshaBean){
Bean.DataBean.MiaoshaBean bean = ( Bean.DataBean.MiaoshaBean) data;
mdd = bean.getList();
fresco.setData(mdd);
}*/
/* mAd1 = data.getAd1();
adapter = new ViewPager_Adapter_Home(mAd1, getActivity());
vp.setAdapter(adapter);
mHandler.sendEmptyMessageDelayed(0, 2000);
*/
/* Map<String, String> map = new HashMap<>();
map.put("mpage", "1");
mPresent.startRequest(Apis.URL_Q, map, Bean.DataBean.BannerBean.class);
homeViewpagerBanner.setAdapter(adapter);
mHandler.sendEmptyMessageDelayed(0, 2000);*/
}
@Override
public void showResponseFail(Object data) {
}
@Override
public void onDestroy() {
super.onDestroy();
mPresent.onDetach();
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
}
App
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//Fresco的初始化
//磁盘缓存的配置
DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(this)
.setBaseDirectoryPath(getCacheDir())
.setMaxCacheSize(8*1024*1024)
.build();
//把磁盘缓存的设置,设置到三级缓存中
ImagePipelineConfig pipelineConfig = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(diskCacheConfig)
.build();
Fresco.initialize(this,pipelineConfig);
}
}
Fresco简单加载图片
public class MainActivity extends AppCompatActivity {
@BindView(R.id.sdv_icon)
SimpleDraweeView sdvIcon;
@BindView(R.id.sdv_gifIcon)
SimpleDraweeView sdvGifIcon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
//加载Fresco图片
Uri imageUri = Uri.parse("https://ws1.sinaimg.cn/large/0065oQSqgy1fze94uew3jj30qo10cdka.jpg");
//圆角效果
RoundingParams roundingParams = RoundingParams.fromCornersRadius(20f);
sdvIcon.getHierarchy().setRoundingParams(roundingParams);
//加载显示时的进度条
sdvIcon.getHierarchy().setProgressBarImage(new ProgressBarDrawable());
sdvIcon.setImageURI(imageUri);
//加载Fresco动图
Uri gifUri = Uri.parse("https://ww1.sinaimg.cn/large/0073sXn7ly1fze96rdfhmg308w0ft7wh");
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(gifUri)
.setAutoPlayAnimations(true)
.build();
sdvGifIcon.setController(controller);
}
}