您的位置:首页 > 移动开发 > Android开发

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

2016-12-26 00:29 573 查看
一、简介

承接上文:尚硅谷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());
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐