如何在android中显示随机xml布局

时间:2013-06-18 12:48:28

标签: android xml android-layout

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

2 个答案:

答案 0 :(得分:6)

布局参考是整数。您只需选择一个:

int[] layouts = new int[] {R.layout.one, R.layout.two, R.layout.three ...};

setContentView(layouts[new Random().nextInt(layouts.length)]);

答案 1 :(得分: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()在app中的某个地方使用此ID。

private static final int DEFAULT_ID = R.layout.default;

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
setContentView(getInt(MyApplication.LAYOUT_ID, DEFAULT_ID));

如果您在主Activity中执行此操作,即使在方向更改或类似事件上也可能会应用新布局。