我的应用程序有一堆 xml 布局文件。现在,我想添加一个功能,其中定义的数量(即 15 个)将包含在活动中。每次启动活动时,应随机选择 15 个布局。我怎么做?我正在考虑一个数组,但找不到关于如何在数组中包含 xml 文件(随机)的任何好的参考。
问问题
729 次
2 回答
6
布局参考是整数。你可以简单地选择一个使用:
int[] layouts = new int[] {R.layout.one, R.layout.two, R.layout.three ...};
setContentView(layouts[new Random().nextInt(layouts.length)]);
于 2013-06-18T12:50:54.570 回答
1
您可以覆盖 Application.onCreate 或在主 Activity.onCreate() 中,并在 SharedPreference 中设置所需布局的资源 ID。
public static final String LAYOUT_ID = "random.layout.id";
private static int[] LAYOUTS = new int[] { R.layout.default, R.layout.fancy };
public void onCreate() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().putInt(LAYOUT_ID, getRandomLayoutId()).commit();
}
private int getRandomLayoutId() {
Random r = new Random(Calendar.getInstance().getTimeInMillis());
return LAYOUTS[r.nextInt(LAYOUTS.length)];
}
然后可以通过 setContentView() 在您的应用程序中的某处使用此 id。
private static final int DEFAULT_ID = R.layout.default;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
setContentView(getInt(MyApplication.LAYOUT_ID, DEFAULT_ID));
如果您在主 Activity 中执行此操作,即使在方向更改或类似事件时,它也可能会应用新布局。
于 2013-06-18T12:52:32.173 回答