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

一、简介

承接上文:尚硅谷Android项目之_硅谷商城项目全套源码解析(二、主框架搭建) 

上篇博客概括的介绍了硅谷商城项目主框架搭建。本篇内容给大家讲解硅谷商城项目首页模块,该模块用到的技术包括但不仅限于OkHttpUtils、fastjson、Banner、CountdownView、ScrollViewContainer、RecyclerView、webview。

 二、详细资源地址

由于篇幅所限,详情情况见如下地址视频和笔记

项目免费视频讲解下载地址:http://www.atguigu.com/download.shtml

github地址:https://github.com/atguigu01/Shopping

作者:大海哥


三、运行效果

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

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

四、技术详解

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());
    }



你可能感兴趣的:(Android,android,商城,尚硅谷,源码)