尚硅谷Android项目之_硅谷商城项目全套源码解析(三、首页)

来源:互联网 发布:吉他中国淘宝店 编辑:程序博客网 时间:2024/04/29 23:45

一、简介

承接上文:尚硅谷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;@Overridepublic 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());    }

0 0