SQLの窓

2013年05月27日


Android 4.2.2 : インターネット上の画像の表示 / AsyncTask<String, Void, Drawable>



Android SDK の変わり目( 4.0.3 ) で、AsyncTask を使うようになりましたが、わざわざクラスを作成するほどの処理でも無い場合は、以下のように『無名クラス』で実行すると簡単です
package com.example.httpimageview;

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

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     
        // 画面定義上の View を ID から取得して、目的のクラスでキャスト
        Button button = (Button)this.findViewById(R.id.button1);
        // 引数が、onClickListener インターフェイスの setOnClickListener を実行  
        button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Log.i("button", "クリックされました");
				
				String url = "https://lh3.googleusercontent.com/-0ZRziQFtS9E/UKuFllC5bVI/AAAAAAAAJm0/4cP6WwTLoSk/s800/dl_de772d3b5ed4837976694426a015383f.jpg";
				String option = "引渡しテスト";
				
				// Android 非同期処理用『無名』クラス
				// String は、doInBackground
				// Void は、Progress 用( ここでは未使用 )
				// Drawable は、doInBackground の戻り値でかつ、onPostExecute の引数
				new AsyncTask<String, Void, Drawable>() {

					// 非同期処理
					@Override
					protected Drawable doInBackground(String... params) {
						// params は、可変長引数
						Log.i("button", params[0]);
						Log.i("button", params[1]);
						
						Drawable img_data = null;

			    		try {
			    			// インターネット上の画像をバイナリで取得して、Drawable に変換
				    		URL url = new URL( params[0] );
				    		InputStream is = (InputStream)url.getContent();
				    		img_data = Drawable.createFromStream(is, "");
			    		}
			    		catch(Exception e) {
			    			Log.i("button", e.getMessage());
			    		}						
						return img_data;
					}

					// 画面描画用
					@Override
					protected void onPostExecute(Drawable result) {
						
						if ( result != null ) {
							// imageView1 には、プロジェクト内のリソースを初期表示しているので、
							// null でなかった場合のみ表示変更
							ImageView imageView = (ImageView)findViewById(R.id.imageView1);
							imageView.setImageDrawable(result);
						}
					}
					
				}.execute(url,option);	// クラス作成後メソッドを実行
				
			}
		});
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

     <Button
         android:id="@+id/button1"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentRight="true"
         android:layout_alignParentTop="true"
         android:text="画像表示" />

     <ImageView
         android:id="@+id/imageView1"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_alignLeft="@+id/button1"
         android:layout_below="@+id/button1"
         android:src="@drawable/ic_launcher" />

</RelativeLayout>
関連する記事

Android ADT : ボタンのクリックコードの取り出し

Android ADT : AsyncTask コードの取り出し( 匿名のインナー型 でその場で実行する )



【Androidの最新記事】
posted by lightbox at 2013-05-27 16:20 | Android | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり