1

我有一个选项卡式应用程序,它有 5 个选项卡。应用程序中的图像是从网络调用中获取的,因此在 tab1 中,例如第一个活动,会进行一个返回图像的网络调用。我正在使用此代码

    urln = new URL("http://10.84.4.2:8083/imageFolder/General/backgroundcurved.png");
    con = (HttpURLConnection) urln.openConnection();
    is = con.getInputStream();
    curvedBG = Drawable.createFromStream(is, "CurvedBG");
    is.close();

这可以很好地检索图像,并且对所有图像都这样做。但是,我注意到一个我似乎无法解决的相当烦人的问题。当我从视图中翻转,然后翻转回来时,图像大小似乎发生了变化。

一开始我以为是网上的图片有问题。所以为了确认这一点,我改变了它,而不是来自在线的图像,它们来自可绘制文件夹中的离线。所以我做了这个

    Drawable test;
InputStream testStream;

Resources res = getResources();
    test = Drawable.createFromStream(res.openRawResource(R.drawable.backgroundcurved), "test");

(目前,我制作了这些全局变量,以便所有活动都可以调用这些图像)

然而,同样的问题发生了。但问题比这更奇怪。在选项卡一中,您可以访问设置屏幕,然后您可以从那里切换到菜单 1 或菜单 2。如果菜单 1 使用测试可绘制对象,那么它可以正常工作,但是如果菜单 1 和菜单 2 都使用它测试drawable,然后如果我翻转到菜单1,回到设置,然后到菜单2,回到设置,然后到菜单1,然后我第二次访问菜单1,drawable已经缩小到它的一半大小,并且但是菜单 2 上的图像很好。如果我反过来做,即访问菜单 2,然后访问菜单 1,然后再次访问菜单 2。然后菜单 2 中的图像混乱,但菜单 1 中的图像很好。

我只是不知道为什么会发生这种情况。是否有太多页面调用相同的 Drawable?或者这是viewflipper搞砸图像的问题?

如果有人能指出我正确的方向,将不胜感激

编辑:

我也尝试使用这种方法获取图像

    public Object fetch(String address) throws MalformedURLException,
        IOException
{
    URL url = new URL(address);
    Object content = url.getContent();
    return content;
}

private Drawable ImageOperations(Context ctx, String url)
{
    try
    {
        InputStream is = (InputStream) this.fetch(url);
        Drawable d = Drawable.createFromStream(is, "src");
        return d;
    } catch (MalformedURLException e)
    {
        return null;
    } catch (IOException e)
    {
        return null;
    }
}

正如我听说的那样,这可以解决尺寸问题,但同样的问题也会发生。

4

1 回答 1

1

修复问题,必须在每次页面加载时重置图像

于 2012-04-26T13:00:26.313 回答