Java Android根据全局变量更改图像
问题很简单 我在项目中有两个PNG格式的图像(logo1.PNG和logo2.PNG)。目前,该项目(在imageview中)加载了logo1.png,但我会这样做,具体取决于imageview控件中加载logo1.png或加载logo2.png变量的值 该项目目前有20个带有此图片的活动(每个活动都有自己的XML布局),我不会在20个屏幕上更改代码,它可以通过一个简单的指令来验证变量的值,但必须在20个屏幕上进行更改 不知道是否没有办法根据变量的值来执行此操作,请更改ImageView中的图像 是否能够从相同的XML访问变量的值Java Android根据全局变量更改图像,java,android,xml,eclipse,variables,Java,Android,Xml,Eclipse,Variables,问题很简单 我在项目中有两个PNG格式的图像(logo1.PNG和logo2.PNG)。目前,该项目(在imageview中)加载了logo1.png,但我会这样做,具体取决于imageview控件中加载logo1.png或加载logo2.png变量的值 该项目目前有20个带有此图片的活动(每个活动都有自己的XML布局),我不会在20个屏幕上更改代码,它可以通过一个简单的指令来验证变量的值,但必须在20个屏幕上进行更改 不知道是否没有办法根据变量的值来执行此操作,请更改ImageView中的图像
提前谢谢。如果我理解正确的话。为图像创建一个新的XML视图,例如logo.XML,并在所有20个视图中使用它,当您想更改该图像时,只在logo.XML中更改。我有点困惑,但我会尝试一下 是的,您可以使用一个全局变量来定义要加载的图像。但根据我的理解,您需要更改加载该映像的活动中的代码,使它们通过代码隐藏动态加载映像 我怀疑会是这样的:
SetImageToLoad(someValue)
{ }
ImageView myImage = (ImageView)findViewById(...)
myImage.setImageResource(HelperClass.GetResourceIDOfImageToLoad());
假设您有一个基本活动类,您可以在基类中定义一个方法
getLogo()
,该方法将返回png(或文件名或任何适合您的内容)。然后在膨胀布局时调用该方法
最初,您必须更改所有活动,但之后,如果您决定更改选择显示哪个图像的逻辑,则只需要更改基类。(如果这不是您想要的,请澄清您的问题)。我建议使用。阅读有关继承的部分,并为每个徽标声明一个单独的样式。然后可以在每个XML文件中重用样式
如果您决定以编程方式确定要使用的图像,可以声明一个可在应用程序范围内使用的static
方法来确定在每个上下文中使用哪个徽标,然后相应地setImageResource()
。没错,这就是我打算做的,但我必须在每个屏幕上都这样做,而这正是我想要避免的,如果没有其他方法,那么我将不得不这样做。因为您正在从数据库读取值,它需要在运行时更改/加载,这意味着每个图像都需要尝试并确定要显示的图像。最后,是的,您需要对每个活动进行更改,但除了最初的工作之外,您只需要更改一段代码来添加不同的图像。没错,现在我意识到没有太多需要更改的地方,非常感谢您的帮助。
ImageView myImage = (ImageView)findViewById(...)
myImage.setImageResource(HelperClass.GetResourceIDOfImageToLoad());