ali*_*tar 5 android fragmenttransaction
我有5个片段,我使用以下代码为FragmentTransaction setCustomAnimations:
FragmentTransaction trans = getFragmentManager().beginTransaction();
trans.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
Run Code Online (Sandbox Code Playgroud)
但是如何为这个设置自定义动画:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK ) {
if (getSupportFragmentManager().getBackStackEntryCount() == 0)
{
this.finish();
return false;
}
else
{
getSupportFragmentManager().popBackStack();
return false;
}
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
ant*_*ycr 21
还有第二个setCustomAnimations方法(这里是支持库方法),它有两个额外的ID,用于包含弹出后栈时要使用的动画.在最后一个点中弹出后堆栈(事务被反转)时,传递您希望发生的动画ID.
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setCustomAnimations(android.R.anim.slide_in_left,
android.R.anim.slide_out_right,
ANIMATION_ID_FOR_ENTERING_VIEW,
ANIMATION_ID_FOR_EXITING_VIEW);
Run Code Online (Sandbox Code Playgroud)
然后当你打电话
getFragmentManager().popBackStack();
Run Code Online (Sandbox Code Playgroud)
动画将播放,传递给该方法的第三个动画将播放您最初删除的视图,第四个动画将播放可见且正在删除的视图.根据您对初始事务的当前动画,我猜你想使用android.R.anim.slide_in_right和android.R.anim.slide_out_left作为后栈动画(见下文):
transaction.setCustomAnimations(android.R.anim.slide_in_left,
android.R.anim.slide_out_right,
android.R.anim.slide_in_right,
android.R.anim.slide_out_left);
Run Code Online (Sandbox Code Playgroud)
最初将片段添加到堆栈时,您只需要调用setCustomAnimations(就像您现在正在做的那样,只需添加额外的动画ID),后面的堆栈将记住您设置的动画,并在您弹回时自动播放它们.
注意:此方法仅在API 13及更高版本中可用,除非您使用支持v4 jar,它看起来像您(因为您使用的是getSupportFragmentManager()而不是常规方法).
| 归档时间: |
|
| 查看次数: |
16288 次 |
| 最近记录: |