chi*_*dev 3 android android-support-library
我使用Activity支持-v4库最近支持的ActivityOptionsCompat和ActivityCompat实现了窗口动画.
我使用下面的代码实现动画:
Intent subActivity = new Intent(WindowAnimations.this,
AnimatedSubActivity.class);
// The enter/exit animations for the two activities are
// specified by xml resources
Bundle translateBundle = ActivityOptionsCompat
.makeCustomAnimation(WindowAnimations.this,
R.anim.slide_in_left, R.anim.slide_out_left)
.toBundle();
ActivityCompat.startActivity(WindowAnimations.this,
subActivity, translateBundle);
Run Code Online (Sandbox Code Playgroud)
上面的代码在android 4.3和4.0中运行良好.
任何人都能够在2.X中工作吗?任何帮助表示赞赏.
MH.*_*MH. 10
@Luksprog基本上已经在你的问题的第一个回答了这个问题,但是这里有更多的文档来进一步支持这个说法.
首先,仔细阅读javadoc .我突出了一些相关的关键字:ActivityCompat#startActivity(Activity activity, Intent intent, Bundle options)
如果能够,请使用其他启动信息启动活动.
在Android 4.1+中,引入了其他选项以允许更多地控制活动启动动画.应用程序可以将此方法与ActivityOptionsCompat一起使用,以便在可用时使用这些动画.在不存在此功能的平台版本上运行时,活动将正常启动.
所以这基本上告诉我们(可选)动画功能只适用于原生支持它的Android版本.在所有其他平台版本中,Activity将"正常"启动 - 即没有可选动画.
实际证据可以在以下源代码中找到ActivityCompat:
public static void startActivity(Activity activity, Intent intent, Bundle options) {
if (Build.VERSION.SDK_INT >= 16) {
ActivityCompatJB.startActivity(activity, intent, options);
} else {
activity.startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说:如果这个代码在pre-JB设备上执行,那么普通的旧startActivity()调用就会生气,其中options参数会被忽略.只有JB设备最终会使用它.
也许多余的提及,但显然同样适用于startActivityForResult()对应方.
总结一下:目前支持库只提供了一个静态助手类,以"向后兼容的方式"执行某些功能- 它实际上并没有向后移植该功能.它在这个阶段所做的就是节省你必须if/else在你自己的应用程序中写入条件.
话虽如此,当前的实现确实允许未来的实际功能的后端口.这也可能是ActivityOptionsCompat班级存在的原因.现在,该类为前置JB设备提供了一个"空"实现,从理论上讲,它可以在以后阶段"填充".通过这些兼容性帮助程序调用的任何代码将自动开始工作.
ActivityOptionsCompat返回空实现的调用示例:
public static ActivityOptionsCompat makeCustomAnimation(Context context,
int enterResId, int exitResId) {
if (Build.VERSION.SDK_INT >= 16) {
return new ActivityOptionsImplJB(
ActivityOptionsCompatJB.makeCustomAnimation(context, enterResId, exitResId));
}
return new ActivityOptionsCompat();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3130 次 |
| 最近记录: |