来自InputStream的Drawables随ViewFlipper而变化

时间:2012-04-25 12:41:01

标签: android

我有一个标签式应用程序,它有5个标签。应用程序中的图像来自Web调用,因此在tab1中,例如,第一个活动,进行Web调用,返回图像。我正在使用此代码

    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使用测试drawable,那么它工作正常,但是如果菜单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;
    }
}

正如我所说,这样可以解决尺寸问题,但会出现同样的问题。

1 个答案:

答案 0 :(得分:1)

修复了问题,不得不重置每页加载的图像