我有一个超类在库中。这个库负责初始化一些基本布局组件和其他东西。我的问题是它需要1.x秒来加载布局,并在设置子指定布局之前显示默认布局。
这是我的超类方法:
public void InitializeWindow(Activity act, int layoutResourceId, String windowTitle,
Object menuAdapter, int slideMenuMode) {
super.setContentView(layoutResourceId);
super.setBehindContentView(R.layout.menu_frame);
this.menuAdapter = menuAdapter;
this.slideMenuMode = slideMenuMode;
setWindowTitle(windowTitle);
initializeSlidingMenu();
}
这被称为这种方式:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.InitializeWindow(this, R.layout.activity_home, "\t\tHome",
new MenuAdapter(this, R.menu.slide_menu), SlidingMenu.TOUCHMODE_FULLSCREEN);
}
应用程序运行良好,但正如我所说,从子类传递的布局需要大约1.x秒才能加载。为什么会这样呢?
根据要求,这是我的initializeSlideMenu()
方法:
public void initializeSlidingMenu() {
this.setSlidingActionBarEnabled(true);
getSlidingMenu().setBehindOffsetRes(R.dimen.actionbar_home_width);
getSlidingMenu().setShadowWidthRes(R.dimen.shadow_width);
getSlidingMenu().setShadowDrawable(R.drawable.shadow);
getSlidingMenu().setTouchModeAbove(slideMenuMode);
getSlidingMenu().setBehindScrollScale(0.25f);
ListView v = new ListView(this);
v.setBackgroundColor(Color.parseColor("#000000"));
v.setAdapter((ListAdapter) menuAdapter);
getSlidingMenu().setMenu(v);
}
InitializeWindow()
方法花费了太多时间来创建布局,而你的基类已经完成了当前Activity的绘图视图并准备好了窗口。 - user370305InitializeWindow()
时,此时你的基础活动已经完成了配置和准备工作。因此,你必须从子活动中调用setContentView()
,如果可能的话,不要在基类方法上做太多的工作,这样你的子活动就有足够的时间来准备布局,之后你可以调用其他准备好的视图选项。 - user370305