Android学习之基础知识七—碎片的最佳实践
一、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学习之基础知识七—碎片的最佳实践的更多相关文章
- Android学习之基础知识七—碎片的使用
碎片(Fragment)是一种可以嵌入在活动中的UI片断,它能让程序更加合理和充分地利用大屏幕的空间,它与活动相似,可以简单的理解为一个迷你型的活动,它也有自己的生命周期.碎片在平板的应用非常广泛. ...
- Android学习之基础知识十三 — 四大组件之服务详解第一讲
一.服务是什么 服务(Service)是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使程序被切换到后台, ...
- Android学习之基础知识十六 — Android开发高级技巧的掌握
一.全局获取Context的技巧 前面我们很多地方都使用到了Context,弹出Toast的时候.启动活动的时候.发送广播的时候.操作数据库的时候.使用通知的时候等等.或许目前来说我们并没有为得不到C ...
- Android学习之基础知识十五 — 最佳UI体验(Material Design实战)
一.前言 长久以来,大多数人都认为Android系统的UI并不美观,至少没有iOS系统的美观.以至于很多IT公司在进行应用界面设计的时候,为了保证双平台的统一性,强制要求Android端的界面风格必须 ...
- Android学习之基础知识十—内容提供器(Content Provider)
一.跨程序共享数据——内容提供器简介 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能 ...
- Android学习之基础知识十四 — Android特色开发之基于位置的服务
一.基于位置的服务简介 LBS:基于位置的服务.随着移动互联网的兴起,这个技术在最近的几年里十分火爆.其实它本身并不是什么时髦的技术,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动 ...
- Android学习之基础知识十一 —运用手机多媒体
一.使用通知(Notification) 通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助 ...
- Android学习之基础知识十二 — 第一讲:网络技术的使用
这一节主要讲如何在手机端使用HTTP协议和服务器端进行网络交互,并对服务器返回的数据进行解析,这也是Android中最常用的网络技术. 一.WebView的用法 有时候我们可能会碰到比较特殊的需求,比 ...
- Android学习之基础知识五—Android常用的七大控件
一.TextView控件:在界面上显示一段文本信息 先看XML代码和执行效果: 代码分析: 1.android:id属性,给当前控件定义了一个唯一的标识符 2.android:layo ...
随机推荐
- csharp: sum columns or rows in a dataTable
DataTable dt = setData(); // Sum rows. //foreach (DataRow row in dt.Rows) //{ // int rowTotal = 0; / ...
- docker-使用Dockerfile制作镜像
最近项目中有使用docker,组内做了关于docker的培训,然后自己跟着研究了一下,大概了解如何使用.我是基于tomcat镜像制作(不需要安装jdk,配置环境变量),基于centos镜像制作需要安装 ...
- Java 开源博客 Solo 1.8.0 发布 - 改进文件上传
本次发布主要是更新了编辑器,使其更好地支持文件上传.(1.8.0 版本变更记录请看这里) 我们的 Markdown 编辑器: 另外,我们对 HTTPS 的支持也更完善了,欢迎大家试用! 简介 Solo ...
- SD从零开始71 业务信息仓库(BW)
SD从零开始71 业务信息仓库(BW)概念 在线事务处理的环境OLTP Environment 在事务处理中,我们不断地填充用于跟踪我们的业务流程的数千个不同步骤的特定的表: 例如,销售凭证行条目来自 ...
- AngularJS ui-router刷新子页面路由
网上有各种刷新子页面路由的方法,但是不知道为什么放到我的页面就不行了,尴尬! 网上的方法有: <a href="#" ui-sref="app.toMenu&quo ...
- Apktool(1)——Apktool的安装
Apktool是google提供的apk的编译工具,有了它就可以做很多事情.比如获取apk的源码,apk汉化,对手机rom包做一些美化. 首先来看看apktool的安装(配置): 以下内容主要翻译字A ...
- JMeter—前置处理器(九)
参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第四节前置处理器前置处理器用来处理请求前的一些准备工作,比如参数设置.环境变变量设置等 一.BeanShell ...
- python第十七天---时间模块、random模块
作完一个作业,开始新的学习: 有由今天的时间有限所有学习了以下两个模块,明天继续! 时间模块.random模块 import time #!usr/bin/env python #-*-coding: ...
- MySQL 8.0 —— 数据字典
1.简介 MySQL 8.0 将数据库元信息都存放于InnoDB存储引擎表中,在之前版本的MySQL中,数据字典不仅仅存放于特定的存储引擎表中,还存放于元数据文件.非事务性存储引擎表中.本文将会介绍M ...
- 7.1Python异常处理
目录 目录 前言 (一)常见的异常 (二)异常的处理 ==1.异常的预防:== ==2.解决已经知道类型的异常== ==3.合并处理多个异常== ==4处理未知类型的异常== (三)with语句 目录 ...