我的应用程序以Main Activity开头,按下“next button”后创建了一个新片段。
我的问题是按下“下一步”按钮后,新片段从顶部动画。
我想禁用此动画,但我发现网络上没有任何效果。
这是我找到的主要结果,但对我没什么用处:
这是我的代码的一部分: ... //内部按钮单击侦听器
case R.id.btnNext:
if(Maindb.getSingleSetting("isFisrtTime").equals("true"))
{
String str = Maindb.getSingleSetting("isFisrtTime");
fragmentLanguage = new ActChooseLanguage();
if (fragmentLanguage != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragmentLanguage).commit();
}
}
else
{
fragmentHome = new ActHome();
if (fragmentHome != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragmentHome).commit();
}
}
break;
这是片段的主要部分:
public class ActChooseLanguage extends Fragment{
private View rootView ;
DrawerLayout mDrawerLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
getActivity().overridePendingTransition(0, 0);
rootView = inflater.inflate(R.layout.activity_choose_language, container, false);
ImageButton btnACMenu = (ImageButton) getActivity().getActionBar().getCustomView().findViewById(R.id.imgHamburger);
btnACMenu.setVisibility(View.INVISIBLE);
getActivity().getIntent().addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
getActivity().getActionBar().show();
return rootView;
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
.
.
.
}
如果有其他解决方案,请告诉我。 感谢
更新
问题发生的原因是ActionBar而不是Fragment,解决方案如下:
答案 0 :(得分:0)
好的,我找到了这个问题的答案:
我发现它HERE。
解决方案是:
public static void disableShowHideAnimation(ActionBar actionBar) {
try
{
actionBar.getClass().getDeclaredMethod("setShowHideAnimationEnabled", boolean.class).invoke(actionBar, false);
}
catch (Exception exception)
{
try {
Field mActionBarField = actionBar.getClass().getSuperclass().getDeclaredField("mActionBar");
mActionBarField.setAccessible(true);
Object icsActionBar = mActionBarField.get(actionBar);
Field mShowHideAnimationEnabledField = icsActionBar.getClass().getDeclaredField("mShowHideAnimationEnabled");
mShowHideAnimationEnabledField.setAccessible(true);
mShowHideAnimationEnabledField.set(icsActionBar,false);
Field mCurrentShowAnimField = icsActionBar.getClass().getDeclaredField("mCurrentShowAnim");
mCurrentShowAnimField.setAccessible(true);
mCurrentShowAnimField.set(icsActionBar,null);
}catch (Exception e){
//....
}
}
}
我不知道动画来自动作栏,因此在调用此功能后动画被禁用。