質問

URLから画像を表示しようとしています。これは、画面の寸法よりも大きい場合があります。私はそれが一種の機能していますが、画面に合うようにスケーリングしたいと思います。また、画面の向きが変わったときにも問題があります。画像は小さく、画面に幅を拡大してほしいと思います。 (どちらの場合も、画像をスクロールバーで画面幅に埋めたいと思います(高さが必要な場合)。

これが私のImageViewです:

<ImageView android:id="@+id/ImageView01" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:scaleType="fitCenter"
    android:adjustViewBounds="true">
</ImageView>

これが画像をロードするJavaコードです:(簡単にするために削除されたエラー処理コード)

    Object content = null;
    try{
      URL url = new URL("http://farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg");
      content = url.getContent();
    }
      catch(Exception ex)
    {
        ex.printStackTrace();
    }
    InputStream is = (InputStream)content;
    Drawable image = Drawable.createFromStream(is, "src");
    Image01.setImageDrawable(image);

Android:Scaletypeのさまざまな設定を試しました。この質問が以前に質問された場合はごめんなさい。私はこのテーマに関する多くのチュートリアルを経験しましたが、それらは私のために働いていないようです。画像のロード方法と関係があるかどうかはわかりません。 (ローカルリソースの代わりにWebから)

別の問題は、画像がロードされない場合があることです。ランタイムエラーはありません。ImageViewには何も得られません。

詳細情報や説明が必要な場合はお知らせください。

役に立ちましたか?

解決

「画像がロードされないことがある」という問題はコンテキストに関連しているため、この関数を使用してその問題を解決しました

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

したがって、画面の幅を画像で埋めるには、このようなコードが必要です

    try{
        String url = "http://farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg";           
        Drawable image =ImageOperations(this,url);
        Image01.setImageDrawable(image);
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }


    Image01.setMinimumWidth(width);
    Image01.setMinimumHeight(height);

    Image01.setMaxWidth(width);
    Image01.setMaxHeight(height);

更新::大きなサイズの画像をロードすると、明らかにもっと時間を待つ必要があり、UnkNowhostexceptionのために問題をダウンロードする必要があります。

はい、あなたはあなたの画像をローカルに保存します、ローカルアクセスはダウンロードよりも高速です。

回転の問題を回避するには、configchanges = "keyboardhidden | Orientation" Manifest.xmlのプロパティを設定します。

<activity android:name=".myActivity"
...
         android:configChanges="keyboardHidden|orientation"   >
...
/>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top