这里的情景:活动包含片段A,又使用getChildFragmentManager()添加片段A1,并A2在其onCreate像这样:
getChildFragmentManager()
.beginTransaction()
.replace(R.id.fragmentOneHolder, new FragmentA1())
.replace(R.id.fragmentTwoHolder, new FragmentA2())
.commit()
Run Code Online (Sandbox Code Playgroud)
到目前为止,这么好,一切都按预期运行.
然后,我们在Activity中运行以下事务:
getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(anim1, anim2, anim1, anim2)
.replace(R.id.fragmentHolder, new FragmentB())
.addToBackStack(null)
.commit()
Run Code Online (Sandbox Code Playgroud)
在转换期间,enter片段的动画B正确运行,但片段A1和A2完全消失.当我们使用"后退"按钮恢复事务时,它们会正确初始化并在popEnter动画期间正常显示.
在我的简短测试中,它更奇怪 - 如果我为子片段设置动画(见下文),exit当我们添加片段时,动画会间歇性地运行B
getChildFragmentManager()
.beginTransaction()
.setCustomAnimations(enter, exit)
.replace(R.id.fragmentOneHolder, new FragmentA1())
.replace(R.id.fragmentTwoHolder, new FragmentA2())
.commit()
Run Code Online (Sandbox Code Playgroud)
我想要实现的效果很简单 - 我希望片段(anim2)上的exit(或应该是popExit?)动画A运行,为整个容器(包括其嵌套的子容器)设置动画.
有没有办法实现这一目标?
编辑:请在这里找到一个测试用例
编辑2:感谢@StevenByle推动我继续尝试使用静态动画.显然你可以在每个操作的基础上设置动画(不是整个事务的全局),这意味着孩子们可以有一个不确定的静态动画集,而他们的父可以有不同的动画,整个事情可以在一个事务中提交.请参阅下面的讨论和更新的测试用例项目.
android android-fragments android-support-library android-nested-fragment
在我看来android有一个包含Renderscript支持的android.support.v8包.问题是,这似乎没有在任何地方记录 - 支持库文档没有说任何关于v8包,只有v4和v13.
API级别8及以上的所有设备是否支持该软件包,是否可以安全地用于生产?
这是一个示例程序:
#include <stdio.h>
void foo(int b[]){
printf("sizeof in foo: %i\n", sizeof b);
}
int main(){
int a[4];
printf("sizeof in main: %i\n", sizeof a);
foo(a);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
sizeof in main: 16
sizeof in foo: 8
Run Code Online (Sandbox Code Playgroud)
问题是,如果它只是在函数边界转换为标准指针,那么该语法的意义是什么?
这是设置:
A加载的应用程序liba.so(在编译时链接)liba.so导出一个符号expAA或liba.solibmine.so到同一进程中dlopenexpAfromlibmine.so但不知道如何在不明确链接到的情况下找到它liba.so,这就是我到目前为止一直在做的事情。我认为这在现实世界中不起作用,因为不能保证该符号与我的本地副本中的符号位于同一地址liba.so(或者是吗?)。libmine.so将是闭源的并且不能用A.我从来没有做过这样的事情,所以我对库加载的细节有点不清楚。例如,如果我尝试dlopen("liba.so")从内部libmine.so,我会得到已加载的库或新副本的句柄吗?
就如何libmine.so加载而言,我所知道的是它将被加载RTLD_LAZY(除此之外什么也没有)。
任何帮助和指示将不胜感激!