项目框架:MVP
图片加载用Fresco
网络请求用OKhttp+Retrofit实现,完成首页数据请求
首页只用一个Recycleview实现轮播图和秒杀活动中的布局和数据展示(Recycleview 多条目实现),完成秒杀活动,
让同时跳转到一个空Activity 中;
访问网络接口获取数据,将数据展示在列表上,使用Fresco展示图片将图片显示成圆形。接口如下
http://result.eolinker.com/umIPmfS6c83237d9c70c7c9510c9b0f97171a308d13b611?uri=homepage
1.权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
2.依赖:
compile 'com.squareup.okhttp3:okhttp:3.10.0' compile 'com.google.code.gson:gson:2.2.4' compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.facebook.fresco:fresco:0.12.0' compile 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' compile 'com.github.bumptech.glide:glide:3.7.0'3.主布局页面
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.dell.zhoukao20180416.view.MainActivity"> <!--轮播图的RecyclerView布局--> <android.support.v7.widget.RecyclerView android:id="@+id/img_rcv" android:layout_width="match_parent" android:layout_height="300px"> </android.support.v7.widget.RecyclerView> <!--倒计时布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="京东秒杀" android:textSize="28px" android:textColor="#FF0000" android:textStyle="bold"/> <TextView android:id="@+id/tv_item" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="30px" android:text="秒杀剩余时间5s" /> </LinearLayout> <!--秒杀的RecyclerView布局--> <android.support.v7.widget.RecyclerView android:id="@+id/my_rcv" android:layout_width="match_parent" android:layout_height="match_parent" ></android.support.v7.widget.RecyclerView> </LinearLayout>4.M层接口
package com.example.dell.zhoukao20180416.model; import com.example.dell.zhoukao20180416.presenter.DataPresenter; public interface DataModel { //请求数据的方法 void getData(String url, DataPresenter presenter); }5.M层接收实现类
package com.example.dell.zhoukao20180416.model; import com.example.dell.zhoukao20180416.presenter.DataPresenter; import com.example.dell.zhoukao20180416.utils.OkhtttpUtils; import com.google.gson.Gson; import java.io.IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Response; public class MyDataModel implements DataModel{ //请求数据的方法 @Override public void getData(String url, final DataPresenter presenter) { OkhtttpUtils.doGet(url, new Callback() { @Override public void onFailure(Call call, IOException e) {} @Override public void onResponse(Call call, Response response) throws IOException { //接收返回的数据 String json = response.body().string(); //进行解析 得到集合 Gson gson = new Gson(); MyDataBean myDataBean = gson.fromJson(json, MyDataBean.class); MyDataBean.DataBean data = myDataBean.getData(); //调用P层方法将数据传给P层 presenter.Success(data); } }); } }6.网络请求的数据Bean
package com.example.dell.zhoukao20180416.model; import java.util.List; public class MyDataBean { private int code; private String msg; private DataBean data; public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class DataBean { private ActivityInfoBean activityInfo; private boolean creditRecived; private GoodsSpreeActivityBean goodsSpreeActivity; private List<SubjectsBean> subjects; private List<Ad1Bean> ad1; private List<Ad5Bean> ad5; private List<Ad8Bean> ad8; private List<DefaultGoodsListBean> defaultGoodsList; public ActivityInfoBean getActivityInfo() { return activityInfo; } public void setActivityInfo(ActivityInfoBean activityInfo) { this.activityInfo = activityInfo; } public boolean isCreditRecived() { return creditRecived; } public void setCreditRecived(boolean creditRecived) { this.creditRecived = creditRecived; } public GoodsSpreeActivityBean getGoodsSpreeActivity() { return goodsSpreeActivity; } public void setGoodsSpreeActivity(GoodsSpreeActivityBean goodsSpreeActivity) { this.goodsSpreeActivity = goodsSpreeActivity; } public List<SubjectsBean> getSubjects() { return subjects; } public void setSubjects(List<SubjectsBean> subjects) { this.subjects = subjects; } public List<Ad1Bean> getAd1() { return ad1; } public void setAd1(List<Ad1Bean> ad1) { this.ad1 = ad1; } public List<Ad5Bean> getAd5() { return ad5; } public void setAd5(List<Ad5Bean> ad5) { this.ad5 = ad5; } public List<Ad8Bean> getAd8() { return ad8; } public void setAd8(List<Ad8Bean> ad8) { this.ad8 = ad8; } public List<DefaultGoodsListBean> getDefaultGoodsList() { return defaultGoodsList; } public void setDefaultGoodsList(List<DefaultGoodsListBean> defaultGoodsList) { this.defaultGoodsList = defaultGoodsList; } public static class ActivityInfoBean { private String activityAreaDisplay; private List<ActivityInfoListBean> activityInfoList; public String getActivityAreaDisplay() { return activityAreaDisplay; } public void setActivityAreaDisplay(String activityAreaDisplay) { this.activityAreaDisplay = activityAreaDisplay; } public List<ActivityInfoListBean> getActivityInfoList() { return activityInfoList; } public void setActivityInfoList(List<ActivityInfoListBean> activityInfoList) { this.activityInfoList = activityInfoList; } public static class ActivityInfoListBean { private String id; private String activityImg; private String activityType; private String activityData; private String activityDataDetail; private String activityAreaDisplay; private String countDownEnable; private String remark; private int sort; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getActivityImg() { return activityImg; } public void setActivityImg(String activityImg) { this.activityImg = activityImg; } public String getActivityType() { return activityType; } public void setActivityType(String activityType) { this.activityType = activityType; } public String getActivityData() { return activityData; } public void setActivityData(String activityData) { this.activityData = activityData; } public String getActivityDataDetail() { return activityDataDetail; } public void setActivityDataDetail(String activityDataDetail) { this.activityDataDetail = activityDataDetail; } public String getActivityAreaDisplay() { return activityAreaDisplay; } public void setActivityAreaDisplay(String activityAreaDisplay) { this.activityAreaDisplay = activityAreaDisplay; } public String getCountDownEnable() { return countDownEnable; } public void setCountDownEnable(String countDownEnable) { this.countDownEnable = countDownEnable; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public int getSort() { return sort; } public void setSort(int sort) { this.sort = sort; } } } public static class GoodsSpreeActivityBean { private String id; private String