我有一个选项卡式应用程序,它有 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;
}
}
正如我听说的那样,这可以解决尺寸问题,但同样的问题也会发生。