- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【Android开发Wiki】进阶篇创建向后兼容的用户界面(三):用较早版本的APIs实现抽象类
eoe 移动开发者社区 /
原文链接:
/training/backward-compatible-ui/older-implementation.html
用较早版本的APIs 实现抽象类
这节课程我们讨论如何创建一个实现类,即能对应新版本的API,又能够保持对老版本API
的支持。
寻找一个替代的解决方案
为了保持向后兼容,我们需要用老版本平台的UI 框架特性来实现新本版的UI 框架特性,这
是一件非常具有挑战性的任务。在很多情况下,我们是完全可以做到这一点的,请看下边的
例子:
o Action bars 能够用一个 horizontalLinearLayout 在你Activity Layout 中实现,这个
LinearLayout 可以添加一个自定义的标题或者是Views,加上image buttons,执行的动作
可以在设备的Menu button 来显示。
o Action bar tabs 可以用horizontal LinearLayout 加上按钮或者用TabWidget UI 来实
现。
o NumberPicker 和Switch 部件可以用Spinner 和ToggleButton 部件分别实现。
o ListPopupWindow 和PopupMenu 部件可以用PopupWindow 部件来实现。
一般情况下,我们无法找到一个完美的方案,可以把新UI 组件的完全的移植到旧版本的设
备上。在这个问题上我们应该多考虑一下用户体验,使用老版本设备的用户可能对新版本的
设计模式并不熟悉。因此我们在实现的时候要考虑相同的功能实现尽量用用户熟悉的方式来
实现。很多情况下我们不必过于担心这个问题,如果这个新的UI 组件在应用程序的环境中
设计的比较优秀(比如:Action Bar)或者交互模式非常简单和直观的(比如:
Swip Views应用 ViewPager。
用较早版本API 实现Tabs
我们可以用TabWidget 和TabHost 我们也可以用horizontally laid-out Button 部件来
实现ActionBar标签。因为我们使用了Android 2.0 (Eclair)以下的APIs,所以我们
的实现类名字叫做TabHelperEclair 和CompatTabEclair:
eoe 移动开发者社区 /
图1:Eclair 实现tabs 的类图
实现CompatTabEclair 时需要在变量中保存tab 的属性,比如:text、icon 等。因为我们
已经没有现成的ActionBar.Tab 可以帮助来处理这些属性了。
1. public class CompatTabEclair extends CompatTab {
2. // Store these properties in the instance,
3. // as there is no ActionBar.Tab object.
4. private CharSequence mText ;
5. ...
6.
7. public CompatTab setText(int resId) {
8. // Our older implementation simply stores this
9. // information in the object instance.
10. mText = mActivity.getResources ().getText(resId);
11. return this ;
12. }
13.
14. ...
15. // Do the same for other properties (icon, callback, etc.)
16. }
实现TabHelperEclair 时需要需要用到TabHost 部件来创建TabHost.TabSpec 对象和tab i
ndicators:
1. public class TabHelperEclair extends TabHelper {
文档评论(0)