我在项目中有2张PNG格式的图像(logo1.png和logo2.png)。目前该项目已加载(在imageview中)logo1.png,但我会根据变量的值加载logo1.png或load logo2.png在imageview控件中。
该项目目前有20个活动图片(每个都有自己的XML格式),我不会在20个屏幕上更改代码,它可以用一个简单的指令来验证变量的值,但是必须在20个屏幕上进行更改。
想知道根据变量的值无法做到这一点,更改ImageView中的图像。
能够从同一个XML访问变量的值吗?
提前致谢。
答案 0 :(得分:2)
我有点困惑,但我会试一试。
是的,您可以使用全局变量来定义要加载的图像。但根据我的理解,您需要更改加载该图像的活动中的代码,以使它们通过代码隐藏动态加载图像。
我怀疑它会是这样的:
SetImageToLoad(someValue)
在每个加载图像的类中,您需要检索先前在步骤2中设置的值。
公共类HelperClass
{
int resIDOfImageToLoad = 0;
public static void SetImageToLoad(String imageName)
{
if(imageName.equals("abc"))
{
resIDOfImageToLoad = R.id.abc;
}
else if(imageName.equals("xyz"))
{
resIDOfImageToLoad = R.id.xyz;
}
}
public static int GetResourceIDOfImageToLoad()
{
return resIDOfImageToLoad;
}
}
然后在需要加载图像的类中,你会调用类似这样的东西
ImageView myImage = (ImageView)findViewById(...)
myImage.setImageResource(HelperClass.GetResourceIDOfImageToLoad());
答案 1 :(得分:0)
如果我理解正确的话。创建图像的新XML视图,例如logo.xml并在所有20个视图中使用它,当您想要仅在logo.xml中更改该图像时。
答案 2 :(得分:0)
假设您有一个基类Activity类,您可以在基类中定义一个方法getLogo()
,该方法将返回png(或文件名或任何适合您的文件)。然后在膨胀布局时调用该方法。
最初,您必须更改所有活动,但之后,如果您决定更改选择要显示的图像的逻辑,则只需更改基类。 (如果这不是您的意图,请澄清您的问题。)
答案 3 :(得分:0)
我建议使用Style or Themes。阅读有关继承的部分,并为每个徽标声明一个单独的Style
。然后,您可以在每个XML文件中重用Style
。
如果您决定以编程方式确定要使用的图像,则可以声明可以在应用程序范围内使用的static
方法,以确定在每个上下文中使用哪个徽标,然后相应地setImageResource()
。