博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一种解决新版本API完全兼容老版本API的方法
阅读量:5280 次
发布时间:2019-06-14

本文共 2273 字,大约阅读时间需要 7 分钟。

原文:

这节课程我们讨论如何创建一个实现类,即能对应新版本的API,又能够保持对老版本API的支持。

* 寻找一个替代的解决方案*

为了保持向后兼容,我们需要用老版本平台的UI框架特性来实现新本版的UI框架特性,这是一件非常具有挑战性的任务。在很多情况下,我们是完全可以做到这一点的,请看下边的例子:

    • Action bars_'能够用一个 horizontal''' '''在你Activity Layout中实现,这个可以添加一个自定义的标题或者是Views,加上'''image buttons''',执行的动作可以在设备的'_Menu button* 来显示。
    • Action bar tabs_' 可以用 '''horizontal LinearLayout''' 加上按钮或者用'_ UI* 来实现。
    • _'和''''''部件可以用''''''和'_* 部件分别实现。
    • _'和''''''部件可以用'_* 部件来实现。

一般情况下,我们无法找到一个完美的方案,可以把新UI组件的完全的移植到旧版本的设备上。在这个问题上我们应该多考虑一下用户体验,使用老版本设备的用户可能对新版本的设计模式并不熟悉。因此我们在实现的时候要考虑相同的功能实现尽量用用户熟悉的方式来实现。很多情况下我们不必过于担心这个问题,如果这个新的UI组件在应用程序的环境中设计的比较优秀(比如:* Action Bar_')或者交互模式非常简单和直观的(比如:'_Swip Views* 应用 )。

* 用较早版本API实现Tabs*

我们可以用和(我们也可以用* horizontally laid-out_' 部件)来实现'''ActionBar'''标签。因为我们使用了Android 2.0 (Eclair)以下的APIs,所以我们的实现类名字叫做'''TabHelperEclair'''和'_CompatTabEclair* :

文件:Backward-compatible-ui-classes-eclair.png

图1:* Eclair* 实现tabs的类图

实现* CompatTabEclair* 时需要在变量中保存tab的属性,比如:text、icon等。因为我们已经没有现成的可以帮助来处理这些属性了。

public class CompatTabEclair extends CompatTab {

// Store these properties in the instance,
// as there is no ActionBar.Tab object.
private CharSequence mText;
...

123456789
public CompatTab setText(int resId) {    // Our older implementation simply stores this    // information in the object instance.    mText = mActivity.getResources().getText(resId);    return this;}...// Do the same for other properties (icon, callback, etc.)

}

实现* TabHelperEclair_'时需要需要用到部件来创建对象和'_tab indicators* :

public class TabHelperEclair extends TabHelper {

private TabHost mTabHost;
...

1 2 3 4 5 6 7 8 9101112131415161718192021
protected void setUp() {    if (mTabHost == null) {        // Our activity layout for pre-Honeycomb devices        // must contain a TabHost.        mTabHost = (TabHost) mActivity.findViewById(                android.R.id.tabhost);        mTabHost.setup();    }}public void addTab(CompatTab tab) {    ...    TabSpec spec = mTabHost            .newTabSpec(tag)            .setIndicator(tab.getText()); // And optional icon    ...    mTabHost.addTab(spec);}// The other important method, newTab() is part of// the base implementation.

}

现在我们有* CompatTab_'和'_TabHelper* 的两个实现类了,一个用在Android 3.0或者更新的版本的APIs中,一个用在Android 2.0或更新版本的APIs中,下节课我们将讨论如何在我们的应用中使用这样两个实现类。

转载于:https://www.cnblogs.com/vus520/p/3152772.html

你可能感兴趣的文章
【Laravel】 常用的artisan命令
查看>>
Qt 中获取本机IP地址
查看>>
基本数据类型(int, bool, str)
查看>>
070102_赌博设计:概率的基本概念,古典概型
查看>>
IT人生的价值和意义 感觉真的有了
查看>>
Linux命令之df
查看>>
BaseActivity--上门啦
查看>>
JS DOM对象
查看>>
python正则表达式
查看>>
OGR – Merging Multiple SHP files
查看>>
滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(10月17日~10月23日)...
查看>>
创业公司该不该被收购?(转)
查看>>
sqlserver 行转列、列转行[转]
查看>>
【IScroll深入学习】解决IScroll疑难杂症
查看>>
lua io
查看>>
day54
查看>>
运行Jar包程序Shell
查看>>
Python Code snippet
查看>>
python——基本数据类型1——简介
查看>>
jenkins pipeline
查看>>