一、Android碎片(Fragment)的最佳实践——简易版新闻应用

第一步:新建FragmentBestPractice项目,在app/build.gradle当中添加:RecyclerView 依赖库,注意:添加完成后,一定要记住点击右上角的:Sync now

第二步:创建新闻实体类

第三步:创建新闻内容的布局文件:news_content_frag.xml

  新闻内容布局主要分为两个部分:头部显示新闻标题、正文显示新闻内容,中间用一条细线分隔开,细线利用View来实现,通过background属性设置一下颜色就行了

第四步:创建新闻内容的碎片:NewsContentFragment类,继承Fragment,注意:这里继承的Fragment不是系统自带的Fragment,而是:android.support.v4.app.Fragment

  上面我们已经把新闻内容的碎片和布局创建好了,但是它们都是在双页模式中使用的,如果是单页模式中使用的话,我们还需要再创建一个新闻内容的活动:NewsContentActivity,并指定对应的布局文件名为:news_content.xml

第五步:在news_content.xml中直接引入NewsContentFragment碎片,新闻内容的布局:news_content_frag.xml也自动加载了进来。

第六步:在NewsContentActivity中显示新闻标题和内容

第七步:创建新闻的标题列表布局:news_title_frag.xml,在这个列表中由于只有标题,所以使用RecyclerView控件

第八步:使用RecyclerView控件就必须要有子项布局,即:标题列表中一个标题的布局:news_item.xml. 标题使用TextView表示就行了

  android:padding  给控件周围补白,这样不至于让文本内容会紧贴在边缘上

  android:singleLine  设置为true表示让这个TextView只能单行显示

  android:ellipsize  用于设定文本的内容超出控件宽度时,文本的缩略方式。这里表示在尾部进行缩略。

第九步:新闻的标题列表和子项布局创建完成后,创建标题碎片:newsTitleFragment

为了让news_content_layout只在双页模式中出现,可以借助我们刚刚学过的限定词来实现

第十步:修改activity_main.xml,用于单页模式下,会加载新闻标题列表一个碎片

第十一步:在res目录下,新建layout-sw600dp文件夹,在该文件夹下再建一个activity_main.xml,并在其中指定一个id:news_content_layout,用于双页模式下,加载两个碎片:新闻标题列表、新闻内容

  新闻内容放在了一个FragmentLayout布局中,并且id就为:news_content_layout

第十二步:在NewsTitleFragment中新建一个内部类:NewsAdapter 作为RecyclerView的适配器,用来将新闻列表展示出来

第十三步:最后一步,向RecyclerView中填充数据,修改NewsTitleFragment中的代码

第十四步:运行程序

在手机上运行程序,只会显示新闻的标题列表(左),可以上下滑动屏幕,点击任意标题,切换到新闻内容的活动界面(右)

      

在PAD上面运行程序,新闻标题列表和新闻内容都在一个界面显示出来

二、总结思路

  在手机上运行,先显示出一个新闻的标题列表,通过点击标题跳转页面,显示出新闻的内容

  在PAD上运行,同时显示出新闻标题列表和新闻内容

Android学习之基础知识七—碎片的最佳实践的更多相关文章

  1. Android学习之基础知识七—碎片的使用

    碎片(Fragment)是一种可以嵌入在活动中的UI片断,它能让程序更加合理和充分地利用大屏幕的空间,它与活动相似,可以简单的理解为一个迷你型的活动,它也有自己的生命周期.碎片在平板的应用非常广泛. ...

  2. Android学习之基础知识十三 — 四大组件之服务详解第一讲

    一.服务是什么 服务(Service)是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使程序被切换到后台, ...

  3. Android学习之基础知识十六 — Android开发高级技巧的掌握

    一.全局获取Context的技巧 前面我们很多地方都使用到了Context,弹出Toast的时候.启动活动的时候.发送广播的时候.操作数据库的时候.使用通知的时候等等.或许目前来说我们并没有为得不到C ...

  4. Android学习之基础知识十五 — 最佳UI体验(Material Design实战)

    一.前言 长久以来,大多数人都认为Android系统的UI并不美观,至少没有iOS系统的美观.以至于很多IT公司在进行应用界面设计的时候,为了保证双平台的统一性,强制要求Android端的界面风格必须 ...

  5. Android学习之基础知识十—内容提供器(Content Provider)

    一.跨程序共享数据——内容提供器简介 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能 ...

  6. Android学习之基础知识十四 — Android特色开发之基于位置的服务

    一.基于位置的服务简介 LBS:基于位置的服务.随着移动互联网的兴起,这个技术在最近的几年里十分火爆.其实它本身并不是什么时髦的技术,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动 ...

  7. Android学习之基础知识十一 —运用手机多媒体

    一.使用通知(Notification) 通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助 ...

  8. Android学习之基础知识十二 — 第一讲:网络技术的使用

    这一节主要讲如何在手机端使用HTTP协议和服务器端进行网络交互,并对服务器返回的数据进行解析,这也是Android中最常用的网络技术. 一.WebView的用法 有时候我们可能会碰到比较特殊的需求,比 ...

  9. Android学习之基础知识五—Android常用的七大控件

    一.TextView控件:在界面上显示一段文本信息 先看XML代码和执行效果:         代码分析: 1.android:id属性,给当前控件定义了一个唯一的标识符 2.android:layo ...

随机推荐

  1. Android实现两次点击返回键提示退出

    Android的很多app中,都有点击一次返回键提示再次点击退出app的功能. 今天就看了下实现的方式,其实就是在相应的Activity中重写了onKeyDown()方法.在onKeyDown()方法 ...

  2. userDefineFunc.js

    var scareMe = function(){ console.log("cynthia") scareMe = function(){ console.log("w ...

  3. Python 练习:使用 * 输出直角三角形

    正方向 height = int(input("please input height: ")) tmp = 1 while tmp <= height: width = t ...

  4. JavaScript数组学习总结

    数组   数组 1.数组:数组是一组数据(数据类型不限,任意)的有序集合===>我们写代码,一般一个数组只放一种数据类型的数据 2.我们写代码,一般一个数组只放一种类型的数据 3.注意: 大多数 ...

  5. VUE 实现复制内容到剪贴板功能

    注: 依赖第三方插件 clipboard 一.安装插件 npm install vue-clipboard2 --save 二.全局注入(main.js) import VueClipboard fr ...

  6. 测试思想 QA的价值体现

    QA的价值体现 by:授客 QQ:1033553122 1.  缺陷挖掘价值 QA人员一个很重要的价值就是在尽可能短的时间内找出尽可能多的缺陷. 某种意义上说,缺陷直观的反应了产品的质量,QA发现的有 ...

  7. 图片缩放PhoneView

    第一步:导包 implementation 'com.github.chrisbanes:PhotoView:2.0.0' 第二步:加bmob仓库地址 在build.gradle(project)中的 ...

  8. (网页)js常见报错之Unexpected token in JSON at position

    出现这个报错提示,根本原因只有一个--json解析异常,所以请大家直接去关注自己json的返回数据注意检查其返回内容和内容的格式是否正确,至于本文血案的导火索是因为json注释滴问题.

  9. Python-初识模块

    #系统自带的模块 import sys print(sys.path)#打印环境变量 print(sys.argv)#打印绝对路径 import os #cmd_res = os.system(&qu ...

  10. Scrapy爬取遇到的一点点问题

    学了大概一个月Scrapy,自己写了些东东,遇到很多问题,这几天心情也不大好,小媳妇人也不舒服,休假了,自己研究了很久,有些眉目了 利用scrapy 框架爬取慕课网的一些信息 步骤一:新建项目 scr ...