1

我的应用程序有一堆 xml 布局文件。现在,我想添加一个功能,其中定义的数量(即 15 个)将包含在活动中。每次启动活动时,应随机选择 15 个布局。我怎么做?我正在考虑一个数组,但找不到关于如何在数组中包含 xml 文件(随机)的任何好的参考。

4

2 回答 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 回答