我有一个关于Android支持库,片段的问题,并且作为一个具体的例子,ViewPager该类.我的目的是创建一个与Android Developer网站上提供的示例功能类似的应用程序(http://developer.android.com/training/animation/screen-slide.html或http://developer.android.com/ training/implementation-navigation/lateral.html).查看他们的代码,我注意到他们使用了android.support.v4.app库,我的研究是访问ViewPager该类的唯一方法.
在我的情况下,我对向后兼容性没兴趣.最低API级别为14(Ice Cream Sandwich),构建目标为4.2 Jelly Bean.在它最简单的形式中,我的应用程序与我在Android开发网站上链接的第二个演示完全一样 - 只需在三个选项卡之间滑动,每个选项卡中包含内容.
我读过的所有文章/帖子/答案似乎都非常支持v4支持库.现在,对于我,尽管是冗长的问题:
构建我的应用程序的最佳方法是什么 - 使用android.support.v4.app,从而使用SupportFragments,或使用提供的片段android.app- 以及为什么?
如果碎片来自android.app何方,最佳接近方式是ViewPagers什么?
如果SupportFragments最适合这项任务,我估计它们具有与另一项相同的功能 - 那么在内部拥有它们的目的是什么android.app?
希望有更清楚理解的人可以给我一些澄清,因为我很难过......
android android-fragments android-viewpager android-support-library
我正试图在两个片段之间进行翻转卡片动画,例如 - > 显示卡片翻转动画,方法是:
private void switchFragment(Fragment fragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
if ((fragment != null) && !(fragment.equals(currentFragment))) {
if (transactionByMenu) {
fragmentTransaction.setCustomAnimations(android.R.anim.fade_in,
android.R.anim.fade_out);
} else {
fragmentTransaction.setCustomAnimations(
R.animator.card_flip_right_in,
R.animator.card_flip_right_out);
}
Fragment nextFragment = fragment;
fragmentTransaction.hide(currentFragment);
fragmentTransaction.show(nextFragment);
currentFragment = nextFragment;
}
fragmentTransaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
交易if(transactionByMenu){...}有效,但没有else{...}
我检查我的库和东西,我目前的目标高于api 11但我仍然有这个错误消息:
05-22 11:32:34.706: E/AndroidRuntime(6801): FATAL EXCEPTION: main
05-22 11:32:34.706: E/AndroidRuntime(6801): java.lang.RuntimeException: Unknown animation name: objectAnimator
05-22 11:32:34.706: E/AndroidRuntime(6801): at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:124)
05-22 11:32:34.706: E/AndroidRuntime(6801): …Run Code Online (Sandbox Code Playgroud) Android仪表板显示只有一半的设备具有Android 5.0及更高版本,但我们的客户数据集的数字看起来不同 - 超过93%的用户.因此,我们决定放弃对Android版本低于5.0且minSdkVersion从15 更改为21的设备的支持.
此升级要求我们审查所有过时的功能并清理我们应用于支持旧版本的一些hacky变通方法.我们现在可以应用的主要功能之一是替换android.support.v4.app.Fragment为android.app.Fragment.这听起来不错,特别是当我们知道片段API已被审查和改进时.
只是为了确保我走正确的道路并且android.app.fragment不会让我感到惊讶我想从这个stackoverflow线程中解释一下问题- 你是否正在使用支持库中的片段,即使它们已经可用,在为Android 5开发时?片段API中是否存在Android 5.0及更高版本中出现的错误并在支持库中修复?
更新
在Android-KTX发布后,Jake Wharton在其中一个PR中发表了以下声明:
感谢您花时间制作PR(带有测试!),但我们想鼓励开发人员只使用支持库片段.下一版本的Android将弃用作为平台一部分的片段版本.因此,我们不会在此项目中添加任何扩展来支持它们.
因此,使用支持库中的片段是正确的做法.