2013年10月7日月曜日

サーバーに格納している画像を表示させる(ImageView, URL)

URLから、画像を表示する方法です。

作り方はbitmapファイルをURLから、作成して、
BitmapをImageViewで表示しています。

Http通信して、画像を持ってくる方法もありますが、
個人的には画像を表示するだけなら、こちらの方法がお勧めです。

■サンプルソース
package com.example.imageview;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        //レイアウトパラム定数(縦横の長さの定数)の格納
        final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;
        final int MP = ViewGroup.LayoutParams.MATCH_PARENT;
     
        super.onCreate(savedInstanceState);
        //基礎画面の作成
        LinearLayout oLayout = new LinearLayout(getApplicationContext());
        oLayout.setOrientation(LinearLayout.VERTICAL);
        setContentView(oLayout);
       
        //普通のviewの生成
        ImageView oImg = new ImageView(getApplicationContext());
        //横MAXの縦幅は画像と同じ高さ
        oImg.setLayoutParams(new LinearLayout.LayoutParams(MP, WC));
       
        URL url;
        InputStream istream;
        try {
            //画像のURLを直うち
            url = new URL("https://www.gstatic.com/android/market_images/web/play_logo_x2.png");
            //インプットストリームで画像を読み込む
            istream = url.openStream();
            //読み込んだファイルをビットマップに変換
            Bitmap oBmp = BitmapFactory.decodeStream(istream);
            //ビットマップをImageViewに設定
            oImg.setImageBitmap(oBmp);
            //インプットストリームを閉じる
            istream.close();
        } catch (IOException e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
        }
        oLayout.addView(oImg);
    }
}


■実行結果





こんな感じになります。

サーバーの画像を読みこむので、
通信が遮断されてる時や、サーバ自体の故障時には
エラーになります。
try catcchの中をちゃん考慮して、
記述してください。

どんな、エラー処理をすればいいかというと、
画像を読み込む前に電波があるのかの確認とか、
エラー時の画像を用意するとか必要になります。

0 件のコメント:

コメントを投稿