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では、設定画面にアクセスでき、そこからメニュー1またはメニュー2に切り替えることができます。メニュー1でテストドローアブルを使用する場合は正常に機能しますが、メニュー1とメニュー2の両方でこれを使用する場合ドローアブルをテストし、メニュー1に戻って設定に戻り、メニュー2に戻り、設定に戻り、次にメニュー1に戻り、2回目にメニュー1にアクセスすると、ドローアブルは半分のサイズに縮小しました。それでもメニュー2の画像は問題ありません。これを逆に行うと、つまり、メニュー2、メニュー1、メニュー2の順にアクセスします。次に、メニュー2の画像が台無しになりますが、メニュー1の画像は問題ありません。
なぜこれが起こっているのか、私は単に途方に暮れています。同じDrawableを呼び出すページが多すぎるものはありますか?それとも、これはビューフリッパーが画像を台無しにする問題ですか?
誰かが私を正しい方向に向けることができれば非常にありがたいです
編集:
また、この方法を使用して画像をフェッチしてみました
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;
}
}
サイジングの問題は解決すると聞いたのですが、同じ問題が発生します。