Android根据全局变量更改图像

时间:2012-05-29 14:29:45

标签: java android xml eclipse variables

问题很简单。

我在项目中有2张PNG格式的图像(logo1.png和logo2.png)。目前该项目已加载(在imageview中)logo1.png,但我会根据变量的值加载logo1.png或load logo2.png在imageview控件中。

该项目目前有20个活动图片(每个都有自己的XML格式),我不会在20个屏幕上更改代码,它可以用一个简单的指令来验证变量的值,但是必须在20个屏幕上进行更改。

想知道根据变量的值无法做到这一点,更改ImageView中的图像。

能够从同一个XML访问变量的值吗?

提前致谢。

4 个答案:

答案 0 :(得分:2)

我有点困惑,但我会试一试。

是的,您可以使用全局变量来定义要加载的图像。但根据我的理解,您需要更改加载该图像的活动中的代码,以使它们通过代码隐藏动态加载图像。

我怀疑它会是这样的:

  1. 从数据库中获取指示要加载的值的信息。
  2. SetImageToLoad(someValue)
  3. 在每个加载图像的类中,您需要检索先前在步骤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;
     }
    

    }

  4. 然后在需要加载图像的类中,你会调用类似这样的东西

    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()