一、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. Django + Mysql 中关于时间异常返回500错误的解决

    问题描述: 最近在阿里云部署 Django(1.11.x) 时,在后台发布文章后,页面返回 500 异常. 刚开始的时候,遇到这个问题一脸懵逼,不知道该如何入手.后来把 settings.py 中 D ...

  2. React 入门学习笔记整理(一)——搭建环境

    使用create-react-app脚手架搭建环境 1.安装node .软件下载地址:https://nodejs.org/en/,我下的推荐的版本. 安装之后测试是否安装成功.windows系统下, ...

  3. 机器学习算法(SVM)公开课4月25日开讲

    从深蓝到AlphaGo,聪明的人工智能一再“羞辱”人类大脑: 指纹识别.以图搜图.语音助手.无人驾驶···生活里它无孔不入 离不开智能手机的我们,是否已开始被人工智能的“奴役”? 或许,你不需要会运用 ...

  4. OSPF协议总结

    总结: 1.ospf协议报文不会泛洪扩散,而是逐级路由器处理后,再从所有ospf启用端口发送出去,也就是说,只能从邻居接收到ospf报文,报文的源ip是邻居的ip地址,目的ip是组播ip. 2.开启o ...

  5. 安卓开发_关于WebView使用链接时调用浏览器显示的问题

    在我们的实际开发中,我们用到WebView就是为了在自己的APP中的某个部分来显示指定网页的效果. 但是在学习的过程中,我发现一个问题: 有的网页使用WebView控件显示出来以后,再点击网页中的某个 ...

  6. Android-仿“抖音”的评论列表的UI和效果

    在design包里面 有一个 BottomSheetDialogFragment 这个Fragment,他已经帮我们处理好了手势,所以实现起来很简单.下面是代码: public class ItemL ...

  7. 【HANA系列】SAP HANA XS的JavaScript API详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS的Java ...

  8. 第五章 绘图基础(BEZIER)

    /*----------------------------- BEZIER.C -- Bezier Splines Demo (c) Charles Petzold, 1998 ---------- ...

  9. Python基础知识:字典

    1.字典中键-值为一对,keys()返回一个列表,包含字典中所有键,values()返回所有值 favorite_languages ={ 'jack':"python", 'al ...

  10. 【PAT】B1070 结绳(25 分)

    此题太给其他25分的题丢人了,只值15分 注意要求最终结果最长,而且向下取整 #include<stdio.h> #include<algorithm> using names ...