Android 3.0~4.0 新特性调研

从Android 3.0到Android4.0 SDK 新增了很多特性,其中新的UI改变很大,所以我们在这里主要深入的了解一下UI方面的API。

1.     Fragment

自从Android 3.0中引入fragments 的概念,根据词海的翻译可以译为:碎片、片段。其上的是为了解决不同屏幕分辩率的动态和灵活UI设计。大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments 。fragments的设计不需要你来亲自管理view hierarchy 的复杂变化,通过将Activity 的布局分散到frament 中,可以在运行时修改activity 的外观,并且由activity管理的back stack 中保存些变化。

Fragment的详解: http://blog.csdn.net/a15874647/article/details/7680530

 

Fragment事务

在Activity中使用有关Fragment的添加、删除、替换以及用它们执行其他响应用户交互行为的能力是一项伟大的功能。你提交给Activity的每组改变集合被叫做一个事务,并且你能使用FragmentTransaction中APIs来执行它。也能够把每个事务保存到被Activity管理的回退堆栈中,并允许用户通过Fragment改变来向后导航(类似同Activity的向后导航)。

Fragment事务详解: http://blog.csdn.net/fireofstar/article/details/7272853

 

Fragment的应用场景:

1)     替代Tab

TabActivity继承自ActivityGroup,每一个Tab指向一个Activity,Tab的切换也就是Activity的切换,但是ActivityGroup的设计的功能较弱,子Actiivty的生命周期不全,而且ActivityGroup没有栈,所有子Activity都是平行的关系,不能记录导航路线,另外,对子Activity的管理能力也很弱,不能灵活的添加、移除、替换子Activity。

Fragment完全解决了上述问题,它设计的功能和Activity一样强大,包括生命周期、导航等,Fragment的每次导航都可以记录下来用于返回。

2)     实现大屏或横屏时标题和内容同时展现,小屏或竖屏时打开新的界面

在Fragment之前我们如果实现此功能很麻烦,需要3个独立的Activity,而且包含相同的逻辑,现在我们只需要2个Fragment,分别包含标题列表和内容的逻辑。

3)     设计更灵活的程序结构

Fragment的意思就是碎片,因为碎所以能更灵活的拼装

2.     ActionBar

Action Bar主要是用于代替传统的标题栏,对于Android平板设备来说屏幕更大它的标题使用ActionBar来设计可以展示更多丰富的内容,方便操控。

 

Action Bar主要功能包含:

1)     显示选项菜单

2)     提供标签页的切换方式的导航功能,可以切换多个fragment.

3)     提供下拉的导航条目.

4)     提供交互式活动视图代替选项条目

5)     使用程序的图标作为返回Home主屏或向上的导航操作。

      ActionBar使用详解:http://zwkufo.blog.163.com/blog/static/2588251201132805532568/

3.     Newwidget and layout

1)       ViewPager

ViewPager类提供了多界面切换的新效果。新效果有如下特征:

u  当前显示一组界面中的其中一个界面。

u  当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分。

u  滑动结束后,界面自动跳转到当前选择的界面中

             http://www.2cto.com/kf/201209/153095.html

2)       GridLayout

GridLayout 是一个新的视角地方子视图在一个矩形网格。不像TableLayout,GridLayout依靠扁平式,不用中间观点,如表行提供结构。相反,我们指定哪些行(s)和列(s)他们应该占据(单元可以跨越多行和/或列),在默认情况下,是奠定在网格顺序的行和列。GridLayout取向决定是否连续的默认了孩子水平或垂直。间隔空间的我们可能被指定或者通过,使用新的空间景观实例或设置相应的参数对我们。

3)       TextureView

TextureView是一个全新的视角,允许你来显示内容流,比如视频或一个开放式绘图介面现场。虽然SurfaceView相似,TextureView是独特的,因为它表现得像一个普通的观点,而不是创造另一个窗口,所以你可以把它像其他视图对象。例如,你可以申请转变,有生命的,它使用ViewPropertyAnimator,或调整其混浊setAlpha()。

4)       Switch(开关组件)

你可以用android:textOn 和android:textOff属性指明文字出现在交换机在断断续续的设置。

4.     PropertyAnimation

3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:propertyanimation,这三种动画模式在SDK中被称为propertyanimation,view animation,drawable animation。

1)       View Animation(Tween Animation)

View Animation(Tween Animation):补间动画,给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变。

View animation只能应用于View对象,而且只支持一部分属性,如支持缩放旋转而不支持背景颜色的改变。

而且对于View animation,它只是改变了View对象绘制的位置,而没有改变View对象本身,比如,你有一个Button,坐标(100,100),Width:200,Height:50,而你有一个动画使其变为Width:100,Height:100,你会发现动画过程中触发按钮点击的区域仍是(100,100)-(300,150)。

View Animation就是一系列View形状的变换,如大小的缩放,透明度的改变,位置的改变,动画的定义既可以用代码定义也可以用XML定义,当然,建议用XML定义。

可以给一个View同时设置多个动画,比如从透明至不透明的淡入效果,与从小到大的放大效果,这些动画可以同时进行,也可以在一个完成之后开始另一个。

用XML定义的动画放在/res/anim/文件夹内,XML文件的根元素可以为<alpha>,<scale>,<translate>,<rotate>,interpolator元素或<set>(表示以上几个动画的集合,set可以嵌套)。默认情况下,所有动画是同时进行的,可以通过startOffset属性设置各个动画的开始偏移(开始时间)来达到动画顺序播放的效果。

可以通过设置interpolator属性改变动画渐变的方式,如AccelerateInterpolator,开始时慢,然后逐渐加快。默认为AccelerateDecelerateInterpolator。

2)       DrawableAnimation(FrameAnimation)

DrawableAnimation(Frame Animation):帧动画,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果。

3)         PropertyAnimation

属性动画,这个是在Android 3.0中才引进的,以前学WPF时里面的动画机制好像就是这个,它更改的是对象的实际属性,在View Animation(Tween Animation)中,其改变的是View的绘制效果,真正的View的属性保持不变,比如无论你在对话中如何缩放Button的大小,Button的有效点击区域还是没有应用动画时的区域,其位置与大小都不变。而在Property Animation中,改变的是对象的实际属性,如Button的缩放,Button的位置与大小属性值都改变了。而且PropertyAnimation不止可以应用于View,还可以应用于任何对象。PropertyAnimation只是表示一个值在一段时间内的改变,当值改变时要做什么事情完全是你自己决定的。

Animation 详解:http://blog.csdn.net/a15874647/article/details/7683073

5.     Loader

装载器从android3.0开始引进。它使得在activity或fragment中异步加载数据变得简单。装载器具有如下特性:

u  它们对每个Activity和Fragment都有效。

u  他们提供了异步加载数据的能力。

u  它们监视数据源的一将一动并在内容改变时传送新的结果。

u  当由于配置改变而被重新创建后,它们自动重连到上一个加载器的游标,所以不必重新查询数据。

http://blog.csdn.net/a15874647/article/details/7683330

 

以上这些都是3.x或4.x才具备的特性,如何在低版本的SDK中使用这些特性呢?

新版SDK发布的同时也发布了一个扩展包android-support-v4,把部分特性单独的抽出来,使低版本的SDK也可以使用这些特性,主要支持以下特性:

u  Fragment

u  Loader

u  ViewPager

u  GridLayout

 

只需要引入android-support-v4.jar包就可以使用上述特性,人人最新的客户端就使用了这个扩展包。

 

ActionBar在这个扩展包里没有得到支持,但是可以使用第三方的包:http://actionbarsherlock.com/https://github.com/johannilsson/android-actionbar

 

附件是android-support-v4的官方samples

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值