动态选择drawable

时间:2014-07-30 10:44:01

标签: android eclipse dynamic wallpaper

我希望用户选择一个壁纸,我将其设置为Android壁纸。 我目前正在使用这一行:

myWallpaperManager.setResource(R.drawable.a1);

问题是它不是动态的,我想根据我得到的数字将所选图像更改为R.drawable.a2R.drawable.a3R.drawable.a4等。 所以如果我有int chosenPicNum = 3我想创建字符串“R.drawable.a”+ 3然后调用myWallpaperManager.setResource(R.drawable.a3);

但我不能这样做。错误是eclipse将其读作字符串而不是资源。 目前这里是我最接近的地方:

String imageResource="R.drawable.a"+chosenPicNum) ;

因此,在这种情况下,imageResource是字符串类型“R.drawable.a3”但我希望它是R.drawable.a3。

感谢您的帮助!!

Dvir,雄心勃勃的20岁:)

3 个答案:

答案 0 :(得分:2)

像这样使用getIdentifier():

public final static String PACKAGE = "..."; // insert your package name

private int getDrawable(String name) {
    return getId(name, "drawable");
}

private int getId(String name, String type) {
    return getResources().getIdentifier(name, type, PACKAGE);
}

使用以下方法访问该方法:

myWallpaperManager.setResource(getDrawable("a" + chosenPicNum));

答案 1 :(得分:0)

当您使用资源时,您已经知道它们的编号和名称。所以使用数组:

int[] ids = new int[] {R.drawable.a1, R.drawable.a2, R.drawable.a3, };

当你有你选择的NumPic(假设它基于0)时:

if (chosenNumPic >= 0 && chosenNumPic < ids.length) {
    myWallpaperManager.setResource(ids[chosenNumPic]);
}

希望有所帮助:)

答案 2 :(得分:0)

试试这个

int resId = getResources().getIdentifier("your_drawable_name"), "drawable", getActivity().getPackageName());
imageview.setBackgroundResource(resId);