一、简介
承接上文:尚硅谷Android项目之_硅谷商城项目全套源码解析(二、主框架搭建)
上篇博客概括的介绍了硅谷商城项目主框架搭建。本篇内容给大家讲解硅谷商城项目首页模块,该模块用到的技术包括但不仅限于OkHttpUtils、fastjson、Banner、CountdownView、ScrollViewContainer、RecyclerView、webview。
二、详细资源地址
由于篇幅所限,详情情况见如下地址视频和笔记
项目免费视频讲解下载地址:http://www.atguigu.com/download.shtml
github地址:https://github.com/atguigu01/Shopping
作者:大海哥
三、运行效果
四、技术详解
1、采用OkHttpUtils联网获取数据
public void getDataFromNet() { OkHttpUtils .get() .url(Constants.HOME_URL) .id(100) .build() .execute(new MyStringCallback()); } public class MyStringCallback extends StringCallback { @Override public void onBefore(Request request, int id) { } @Override public void onAfter(int id) { } @Override public void onError(okhttp3.Call call, Exception e, int id) { } public void onError(Call call, Exception e, int id) { Log.e("TAG", "联网失败" + e.getMessage()); } @Override public void onResponse(String response, int id) { //当联网成功后会回调这里 } }2、 采用fastjson解析数据
private voidprocessData(String json) {
TypeBean typeBean = JSON.parseObject(json,TypeBean.class);
result = typeBean.getResult();
}
3、采用Banner实现轮播图的效果;
详细使用情况见:https://github.com/youth5201314/banner
4、采用CountdownView实现秒杀倒计时的效果
详细使用情况见:https://github.com/iwgang/CountdownView
5、采用ScrollViewContainer实现详情页面动态滚动
详细使用情况见:https://github.com/jingchenUSTC/ScrollViewContainer
6、采用RecyclerView 实现首页数据的整体展示
1)导包
compile 'com.android.support:recyclerview-v7:24.2.1'
2)初始化采用ButterKnife
@BindView(R.id.rv_home)
RecyclerView rvHome;
@Override
public View initView() {
View view = View.inflate(mContext, R.layout.fragment_home, null);
ButterKnife.BindView(this, view);
//设置点击事件
return view;
}
3)加载适配器
adapter = new HomeAdapter(mContext, resultBean);
rvHome.setAdapter(adapter);
7)采用webview展示商品详情信息
(1)布局文件
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
(2)代码
//设置数据
private void setData() {
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
//设置检索缓存的
webSettings.setCacheMode(webSettings.LOAD_CACHE_ELSE_NETWORK);
//设置不跳转到系统的浏览器
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebViewview, WebResourceRequest request) {
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.LOLLIPOP) {
view.loadUrl(request.getUrl().toString());
}
return true;
}
@Override
public boolean shouldOverrideUrlLoading(WebViewview, String url) {
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebViewview, String url) {
super.onPageFinished(view, url);
progressbar.setVisibility(View.GONE);
}
});
webview.loadUrl(Constants.BASE_URL_IMAGE+webViewBean.getUrl());
}