《Android编程权威指南》 学习笔记(一)

第6章Android SDK版本与兼容
6.1Android SDK 版本

6.2Android编程与兼容性问题

6.2.1全新的系统版本——Honeycomb

6.2.2SDK最低版本

6.2.3SDK目标版本

6.2.4SDK编译版本

6.2.5安全添加新版本API中的代码

6.3使用Android开发者文档

    http://developer.android.com/

第7章 UI fragment与fragment管理器

7.1UI设计的灵活性需求

      activity自身并不具有灵活性,activity视图可以在运行时切换,但控制视图的代码必须在activity中实现。因而,各个activity还是得和特定的用户紧紧绑定在一起。

7.2fragment的引入

     采用fragment而不是activity进行应用的UI管理,可绕开Android系统activity规则的限制。

     fragment是一种控制器对象,activity可以委派它完成一些任务,通常这些任务就是管理用户界面。受管的用户界面可以是一整屏或是整屏的一部分。

   管理用户界面的fragment又称为UI fragment。他也有自己产生于布局文件的视图。fragment视图包含了用户可以交互的可视化UI元素。

   activity视图含有可供fragment视图插入的位置。如果有多个fragment要插入,activity视图也可以提供多个位置。

    根据应用和用户的需求,可联合使用fragment及activity来组装或重新组装用户界面。

    *达成这种灵活性的代价是更加复杂的应用、更多的不见管理以及更多的实现代码。

7.3开发示例 P109

      fragment支持库android-support-v4.jar

      FragmentActivity是Activity的子类,具有新系统版本Activity类管理fragment的能力,即便是在较早版本的Android设备上也可以对fragment进行管理。

      用法是将其作为Activity的超类

7.4托管UI fragment

       为托管UI fragment,activity必须做到:(1)在布局中为fragment的视图安排位置

                                                                      (2)管理fragment实例的生命周期

7.4.1 fragment的生命周期

       fragment的生命周期类似于activity。

         *关键区别在于,fragment的生命周期方法是由托管activity而不是操作系统调用的。操作系统无从知晓activity用来管理视图的fragment,其实用是activity自己内部的事情。

7.4.2 托管的两种方式

        (1)添加fragment到activity布局中

                   *简单但不够灵活,也不是一无是处

      (2)在activity代码中添加fragment

              *是唯一一种可以在运行时控制fragment的方式,我们可以决定何时将fragment添加到activity中及随后可以完成何种具体任务,也可以移除fragment,用其他fragment代替当前fragment,然后再重新添加易译移除的fragment。

7.4.3 定义容器视图

     虽然我们要在托管activity代码中添加UI fragment,但还是需要在activity视图层级结构中为fragment视图安排位置。托管activity布局还可定义多个容器视图。

7.5创建UI fragment

       步骤与创建一个activity的步骤相同:(1)通过定义布局文件中的组件,组装界面

                                                                 (2)创建fragment类并设置其视图为定义的布局

                                                                 (3)通过代码的方式,连接布局文件中生成的组件

      
       1、实现fragment生命周期方法

          注意:在Fragment.onCreate()方法中,并没有生成fragment的视图。虽然在Fragment.onCreate()方法中配置了fragment实例,但创建和配置fragment视图是通过另一个fragment声明周期方法onCreateView()来完成的

     2、在fragment中关联组件

7.6 添加UI fragment到FragmentManager

      Fragment类引入到Honeycomb时,为协同工作,Activity类被更改为含有FragmentManager类。该类负责管理fragment并将他们的视图添加到activity的视图层级结构中。

          具体管理的是:

                  (1)fragment队列

                  (2)fragment事务的回退栈

7.6.1fragment事务

     fragment事务被用来添加、移除、附加、分离或替换fragment队列中的fragment。

     这是使用fragment在运行时组装和重新组装用户界面的核心方式。

    FragmentManager管理着fragment事务的回退栈。

7.6.2 FragmentManager与fragment生命周期

        P126


7.7activity使用fragment的理由   

             实际开发中最可能使用的模式。等到需要时再添加时会产生很多问题同时带来毫无意义的内部差异。

7.8 深入学习:Honeycomb、ICS、Jelly Bean以及更高版本系统上的应用开发

               四处调整:(1)设置应用的编译目标以及SDK最低版本为API 11级或更高

                                 (2)放弃使用FragmentActivity类,转而使用标准库中的Activity类(android.app.Activity)。activity默认支持API 11或更高版本中的fragment

                                 (3)放弃使用android.support.v4.app.Fragment类,转而使用android.app.Fragment类

                                 (4)放弃使用getSupportFragmentManager()方法获取FramentManager,转而使用getFragmentManager()方法


第8章 使用布局与组件创建用户界面

8.1开发实例 P128

8.2更新布局

8.3生成并使用组件

8.4深入探讨XML布局属性

8.4.1样式、主题及主题属性

       样式(style)是XML资源文件,含有用来描述组件行为和外观的属性定义

       使用主题属性引用可将预定义的应用主题样式添加给指定组件,可以确保组件在在应用中拥有正确一致的观感。

8.4.2dp、sp以及屏幕像素密度

      dp:意为密度无关像素,无论屏幕密度如何,总能获得同样的尺寸

        sp:意为缩放无关像素。通常用来设置屏幕上的字体大小

       pt、mm、in:类似于dp的缩放单位,实际开发不建议使用



。。。。。。。。。。。。。。。。没保存上


第10章 使用fragment argument

10.1从fragment中启动activity

     实现方式基本等同与从activity中启动另一activity的实现方式。

     我们调用Fragment.startActivity(Intent)方法,该方法在后台会调用对应的Activity方法

10.1.1附加extra信息

     创建了显示intent后,调用putExtra(...)方法,传入相应***Id 的key值

10.1.2 获取extra信息

     fragment有两种方式获取保存在activity的intent内的数据信息,即简单直接的方式(直接使用getActivity()和getIntent()方法)和复杂灵活的方式(涉及fragment argument的概念)


10.1.3使用***对象的数据更新***Fragment视图


10.1.4直接获取extra信息方式的缺点

       这种方式以牺牲fragment的封装性为代价,***Fragment不再是可服用的构建单元,因为它总是需要有某个具体activity托管着。这也意味着,按照当前的编码实现,***Fragment再也无法用于任何其他的activity了

       较好的办法是将m***Id存储在**Fragment的某个地方,而不是保存在***Activity的私有空间里。这样无需依赖其intent内制定extra的存在,***Fragment就能获取自己所需的extra数据信息,这某个地方实际就是它的arguments bundle


10.2fragment argument

       每个fragment实例都可附带一个Bundle对象。改bundle包含有key-value对,我们可以如同附加extra到Activity的intent中那样使用它们。一个key-value对即一个argument。

      要创建fragment argument,首先需创建Bundle对象。然后,使用Bundle限定类型的“put”方法(类似于Intent的方法),将argument添加到bundle中

10.2.1附加argument给fragment

       需调用Fragment.setArguments(Bundle)方法。必须在fragment创建后、添加给activity前完成

       习惯做法是:添加名为newInstance()的静态方法非Fragment类。使用该方法,完成fragment实例及bundle对象的创建,然后将bundle放入argument中,最后再附加给fragment。

10.2.2获取argument

      先调用Fragment类的getArguments()方法,接着再调用Bundle的限定类型的“get”方法,如getSerializable()

10.3重新加载显示列表项

      要保证fragment视图得到刷新,在onResume()方法内更新代码是最安全的选择

10.4通过fragment获取返回结果


第11章 使用ViewPager

       通过滑动屏幕,切换查看不同列表项的明细页面

11.1创建***PagerActivity

11.1.1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值