我想在Android Studio的app活动类之外的类中从我的drawable文件夹创建一个图像数组。我可以使用getResources()方法,但只能在活动中使用。我想保持我的代码干净整洁,如果我积累更多图像,在我的活动中创建一个数组可能会变得混乱。是否有类似的东西或从外部类访问getResources()方法的方法?我想要做的是使用我的drawable文件夹中的图像生成随机背景。我很乐意接受建议,因为我是一名新开发人员,可能会错误地解决这个问题。
答案 0 :(得分:4)
您本身不需要Activity
即可暂停Resources
。 Activity
从Context
延伸;它是Context
,可让您访问自己的资源。如果您只想获得Context
的参考,那么您所需要的只是一个Resources
的课程。
答案 1 :(得分:0)
我可以通过导入android.content.res.Resources;
然后访问这样的图像来实现:
Resources res = getResources();
Drawable image = res.getDrawable(R.drawable.imageName);
在外面的课堂上。您的类应该扩展View
之类的内容以访问MainActivity的上下文。例如:
public class MyClass extends View{
Resources res = getResources();
Drawable image = res.getDrawable(R.drawable.imageName);
public MyClass(Context context) {
super(context);
}
}
R.drawable
指向图像所在的文件夹。只需将其更改为R.folderName即可满足您的需求。此文件夹必须位于项目的res文件夹中。
答案 2 :(得分:0)
这就是我解决问题的方法:
我错误地认为我需要一种类似JComboBox<String> combobox = new JComboBox<String>(new Vector<String>(myArrayList));
的方法来将我的图像文件存储在一个数组中。
相反,我发现你可以简单地存储这样的文件:
getResources()
我在public class BackgroundCatalogue {
public int[] mBackgroundCatalogue = {
R.drawable.image1,
R.drawable.image2,
R.drawable.image3,
R.drawable.image4
};
}
中使用getResources
遇到问题,因为我希望我的应用在API 14及更高版本上运行。解决方法是使用Activity
,如下所示:
ResourcesCompat
Drawable drawable = ResourcesCompat.getDrawable(getResources(), mBackgroundCatalogue.getBackground(), null);
backgroundImageView.setImageDrawable(drawable);
是我在我的另一个类中定义的自定义方法,它选择存储在数组中的随机图像文件。