1. 写在开始

这是学习 Android 的第二个月,前一个月将 Mars 老师的视频看了一边,也将《第一行代码》开了一遍,并将书中的代码都敲了一遍,这个月从网上下载了黑马的 Android 项目教程:智慧北京,用来对 Android 基础知识进行巩固和练习。“智慧北京”算是一个新闻客户端,前前后后我大概写了两遍,第一遍是边看视频边写代码,第二遍没有看视频,是按照自己的回忆和理解来写的,刚开始,感觉很艰辛,视频一关,就忘记怎么写了,不过随着理解的加深、敲代码感觉的提高,后来渐渐的就不再需要忘记,就算忘记,也会根据自己的理解写出,这种感觉棒棒的。

2. 总结

作为一个新闻客户端项目,也是我第一个项目,我从中学到了很多,当然,就算是同一个项目,不同的人会看到、学到不同的东西,对我来说,“智慧北京”这个项目的最大作用,是培养了我的代码感觉,有了充分的练习,能够自己写出代码。这里记录下我学到的知识点:

  • 闪屏页和引导页的制作
  • ViewPager 和 ListView 的适配器自定义
  • Fragment 相关知识的使用
  • 开源项目的引用和使用
  • UI 架构的策略

2.1 闪屏页和引导页

这个只是针对我这个新手而言是一个知识点,明白了概念以及流程,我觉得闪屏页还有点用处,但是引导页就不明白有什么用了,在用其它 App 的时候我都是快速滑过,然后进入,基本没有看引导页具体有什么内容。

当然,这是我作为一个新手现在的想法,以后可能会有所改变吧。

闪屏的实现方式,我看到的有两种,一种是利用 Handler 发送一个空的延时消息,就可以在闪屏界面停留一定的时间。另一种是利用动画,动画播放的时间就是闪屏停留的时间。

2.2 ViewPager 和 ListView 的适配器自定义

这个知识点我觉得是我学到的最重要的知识点之一了,首先 ViewPager 是第一次用,ListView 之前在看《第一行代码》的时候,继承的是 ArrayAdapter 或者直接使用系统自带的适配器,只是一些基础使用,相对比较简单,这次提高了一点,继承的是 BaseAdapter,与使用 ViewPager 控件时继承的 PagerAdapter 的使用方式很相似,通用性很好;关键是在项目中用了很多次,现在都特别熟悉了,几个方法闭着眼睛都能写,呵呵…

2.3 Fragment 相关知识的使用

之前学习基础的时候也用过,不过那属于练习,用过一次,只是保证以后看到了能够看懂,自己能不能写出来就不一定了。

“智慧北京”这个项目的主界面以及菜单界面都是使用的 Fragment,最开始,FrameLayout、Fragment 类、Fragment 布局文件、FragmentManager 几个概念把我搞蒙了,废了半天劲,才把它们理顺:

  • FrameLayout: 是一种布局,非常简单的布局,它只是简单的将自己的 Children 采用叠加方式展现,一般使用 Fragment 的时候都采用这种布局,所以最开始给了我一种错觉:FrameLayout 只能用来添加 Fragment,而 Fragment 只能使用 FrameLayout 布局(没有把你绕晕吧)
  • Fragment 类:与 Activity 类似,可以理解为精简版的 Activity,同样需要加载一个布局文件,就是 Fragment 布局文件
  • Fragment 布局文件:就是一个普通的布局文件,只是我们将它用作 Fragment 类的布局,所以称为 Fragment 布局文件,但它也可以用作其它布局使用。
  • FragmentManager:用来管理 Fragment 类,具体怎么管理,现在可以不用深究,可以简单的理解为它是一个 Fragment 的列表

2.4 开源项目的使用

“智慧北京”项目中用到了三个 GitHub 上的开源项目,分别是:SlidingMenu、xUtils、ViewPagerIndicator。在引用几个开源项目库的时候,也遇到了一些问题(以后会提到),当时废了好大的劲才解决,现在看来,都是小问题啦,哈哈…

2.4.1 SlidingMenu:滑动菜单

SlidingMenu 可以说是现在最流行的菜单样式框架,主要方式是从左边或右边滑出菜单项。简单使用如下(Activity 需要继承 SlidingFragmentActivity),详情参见后期文章。

<code class="language-Java hljs glsl has-numbering">    <span class="hljs-comment">//设置菜单页面</span>setBehindContentView(R.<span class="hljs-keyword">layout</span>.left_menu);<span class="hljs-comment">//获取菜单对象</span>SlidingMenu slidingMenu = getSlidingMenu();<span class="hljs-comment">//设置滑出菜单的方式</span>slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);<span class="hljs-comment">//滑出菜单后能够看到的主界面的宽度</span>slidingMenu.setBehindOffset(<span class="hljs-number">700</span>);</code><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>

2.4.2 xUtils

xUtils 翻译过来就是很牛X的工具,的确很牛瓣,“智慧北京”主要使用了其中的 HttpUtils、BitmapUtils 和注解,由于我是练习,就没有用有点偷懒的注解。简单使用如下。
HttpUtils:

<code class="language-Java hljs java has-numbering">    HttpUtils utils = <span class="hljs-keyword">new</span> HttpUtils();<span class="hljs-comment">//参数1:请求方式;参数2:请求Url;参数3:回调函数</span>utils.send(HttpRequest.HttpMethod.GET, GlobalConstants.CATEGORY_URL, <span class="hljs-keyword">new</span> RequestCallBack<String>() {<span class="hljs-annotation">@Override</span><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onSuccess</span>(ResponseInfo<String> responseInfo) {String result = responseInfo.result;processData(result);}<span class="hljs-annotation">@Override</span><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onFailure</span>(HttpException e, String s) {Toast.makeText(mActivity,<span class="hljs-string">"网络访问错误"</span>,Toast.LENGTH_SHORT).show();}});</code><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul>

BitmapUtils:

<code class="language-Java hljs avrasm has-numbering">    BitmapUtils bitmapUtils<span class="hljs-comment">;</span>bitmapUtils = new BitmapUtils(mActivity)<span class="hljs-comment">;</span>//设置加载图片时显示的图片bitmapUtils<span class="hljs-preprocessor">.configDefaultLoadingImage</span>(R<span class="hljs-preprocessor">.mipmap</span><span class="hljs-preprocessor">.topnews</span>_item_default)<span class="hljs-comment">;</span>//加载图片。参数<span class="hljs-number">1</span>:显示图片的控件;参数<span class="hljs-number">2</span>:图片的UrlbitmapUtils<span class="hljs-preprocessor">.display</span>(view,imageUrl)<span class="hljs-comment">;</span></code><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>

2.4.3 ViewPagerIndicator:指示器

基于用户体验考虑,ViewPager 的每次滑动,都有一个指示器来标识 ViewPager 滑动的位置,这个指示器就是 ViewPagerIndicator,具体实现一句两句说不清楚,为了篇幅,这里就不给出代码了,给几张效果图吧。

2.5 UI 架构的策略

这里说的 UI 架构的策略不是想象中的那么高深的东西,而是面临设计好的 UI 图,整理实现方式方法的策略。在实现 UI 时,需要一层一层的去架构,先分析最外围的布局方式,采用什么控件,然后分析下一层的 UI 的布局方式…不一定一次就把所有 UI 都分析出来用什么布局、用什么控件实现,可以分析一层,实现一层,按需实现 UI。

Android 项目实战:智慧北京(黑马)相关推荐

  1. 【Android项目实战 | 从零开始写app(十二)】实现app首页智慧服务热门推荐热门主题、新闻

    说在前面,由于各种adapter,xml布局,bean实体类,Activity,也为了让看懂,代码基本都是"简单粗暴直接不好看",没啥okhttp和util工具类之类的封装,本篇幅 ...

  2. 【Android项目实战 | 从零开始写app一一智慧服务】完结篇系列导航篇、源代码

    目录 文章介绍 涉及知识 系列汇总 项目源代码 文章介绍 本系列小文是一个简单的Android app项目实战,对于刚入门Android 的初学者来说,基础学完了,但是怎么综合的去写一个小app,可能 ...

  3. (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结

    Android项目实战(二十七):数据交互(信息编辑)填写总结 前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: 先 ...

  4. 关于《基于eclipse的android项目实战—博学谷》的问题,为了这个差点疯了

    前面都是废话,想要干的直接点我你就对了 <基于eclipse的android项目实战-博学谷>这篇文章已经一个星期没有更新了,原因是后面出了些问题,然后我花了整整一个星期才解决. < ...

  5. 【Android项目实战 | 从零开始写app (六) 】用TabLayout+ViewPager搭建App 框架主页面底部导航栏

    本篇实现效果: 搭建app框架的方式有很多,本节主要用TabLayout+ViewPager搭建App框架,这种方式简单易实现,在主页中加载Fragment碎片,实现不同功能页面的切换效果图如下: 文 ...

  6. 【Android项目实战 | 从零开始写app(十三)】实现用户中心模块清除token退出登录信息修改等功能

    五一后,被ji金伤了,哇呜呜,还是得苦逼老老实实打工写代码,看下面吧 本篇实现效果: 实现登录用户名展示到用户中心页面上,并且页面有个人信息,订单列表,修改密码,意见反馈发送到服务端,前面登录后,通过 ...

  7. Android项目实战(四):ViewPager切换动画(3.0版本以上有效果)

    原文:Android项目实战(四):ViewPager切换动画(3.0版本以上有效果) 学习内容来自"慕课网" 一般APP进去之后都会有几张图片来导航,这里就学习怎么在这张图片切换 ...

  8. android 视频沉浸式,Android项目实战(四十一):游戏和视频类型应用 状态栏沉浸式效果...

    原文: Android项目实战(四十一):游戏和视频类型应用 状态栏沉浸式效果 需求: 手机app ,当打游戏或者全屏看视频的时候会发现这时候手机顶部的状态栏是不显示的,当我们从手机顶端向下进行滑动或 ...

  9. (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例

    Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21 我要评论 这篇文章主要介绍了Android项 ...

  10. Android项目实战(三十二):圆角对话框Dialog

    原文:Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对 ...

最新文章

  1. java 编写小工具 尝试 学习(四)
  2. 【皇甫】☀一本好书 你值得浏览
  3. AT2305-[AGC010D]Decrementing【博弈论】
  4. 物联网设备的互操作性问题探讨
  5. coderfoces D. Gourmet choice
  6. 活动丨PGConf.Asia大会11月17-20日线上直播!
  7. 简单的实现了Dijkstra,
  8. RHEL7.X双网卡绑定
  9. 黑马旅游网完整代码_黑马旅游网(二)注册登陆
  10. PLSQL Developer多 表 查 询
  11. Git commit --amend
  12. 华东师大计算机全国排名,华东师范大学就这水平进的985?
  13. 进度模型方法论,利用“削峰填谷”进行资源优化
  14. excel对不同岗位进行名次排序
  15. mac mysql php_Mac下搭建Apache+PHP+MySql运行环境
  16. Amazon 云服务 名词解释
  17. vue axios在开发中遇到的问题
  18. VMware设置任务栏图标显示与隐藏
  19. Potplayer制作视频缩略图的方法
  20. shell编程实例1--参数表示

热门文章

  1. 微信 图片二维码识别不了的问题
  2. HGOI 20190711 题解
  3. 5331. 【NOIP2017提高A组模拟8.23】壕游戏 费用流 动态连边
  4. 大疆技术总监:如何用六年成为一个全能的机器人工程师
  5. qnx限制ssh连接的数量
  6. VS2019中,解决“错误CS0006:未能找到元数据文件”
  7. 如何批量在文件夹中建立php,怎样快速实现批量建立文件夹 电脑一次性快速批量新建多个文件夹的方法...
  8. 链表---给定一个排序链表,删除所有重复的元素每个元素只留下一个
  9. 测试apk-异常管控Bluetooth攻击者开发
  10. css3 图片裁剪菱形,利用CSS3 clip-path裁剪各种图形。