0

the question is simple.

I have 2 images in PNG format (logo1.png and logo2.png) in the project. Currently the project is loaded (in a imageview) the logo1.png, but I would do, depending on the value of a variable load the logo1.png or load logo2.png in imageview control.

The project currently has 20 Activitys with this picture (each with its own layout in XML), I will not be changing code on the 20 screens, it could do with a simple instruction to verify the value of the variable, but would have to make change in the 20 screens.

wonder if there is no way to do that depending on the value of a variable, change the image in the ImageView.

will be able to access the value of the variable from the same XML?

Thanks in advance.

4

4 回答 4

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;
     }
    

    }

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

ImageView myImage = (ImageView)findViewById(...)
myImage.setImageResource(HelperClass.GetResourceIDOfImageToLoad());
于 2012-05-29T14:48:38.940 回答
0

假设您有一个基类 Activity ,您可以getLogo()在基类中定义一个返回 png(或文件名或任何适合您的名称)的方法。然后在扩展布局时调用该方法。

最初,您必须更改所有活动,但之后,如果您决定更改选择显示哪个图像的逻辑,则只需更改基类。(如果这不是您想要的,请澄清您的问题)。

于 2012-05-29T14:50:35.063 回答
0

如果我理解正确的话。创建图像的新 XML 视图,例如 logo.xml,并在所有 20 个视图中使用它,当您想要更改该图像时,仅在 logo.xml 中更改。

于 2012-05-29T14:46:11.420 回答
0

我建议使用Style 或 Themes。阅读有关继承的部分,并Style为每个徽标声明一个单独的部分。Style然后,您可以在每个 XML 文件中重用。

如果您决定以编程方式确定要使用的图像,则可以声明一个static可在应用程序范围内使用的方法来确定在每个上下文中使用哪个徽标,然后setImageResource()相应地确定。

于 2012-05-29T14:53:57.410 回答