2013年9月9日月曜日

Volleyを使ってみる(NetworkImageView編)

Volleyを使って画像を表示する場合のNetworkImageView版になります。

ImageRequestを使った方法はこちらの記事になります
Volleyを使ってみる。(ImageRequest編)
NetworkImageViewはImageViewの拡張クラスになっています。
利用時には引数にImageCacheを実装したクラスが必要になるので指定してあげる必要がある。

今回はキャッシュを利用しない方法にするので、
ImageCacheのgetBitmapメソッド内でnullを返しています。
画像の読み込みには、setImageUrlを使うだけで(・∀・)イイ!!ので楽チンです
AsyncTaskを利用しなくても非同期で処理を行ってくれる。

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.volleyexample2"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

    <!-- インターネットへのアクセスを許可 -->
    <uses-permission android:name="android.permission.INTERNET"/>    
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.volleyexample2.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
activity_main.xml
<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" >
  
    <com.android.volley.toolbox.NetworkImageView
        android:id="@+id/image"
  android:layout_width="wrap_content"   
  android:layout_height="wrap_content"/>

</RelativeLayout>
MainActivity.java
package com.example.volleyexample2;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.view.Menu;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;
import com.android.volley.toolbox.NetworkImageView;
import com.android.volley.toolbox.ImageLoader.ImageCache;

public class MainActivity extends Activity {

 //ログ出力時のタグ名
 private static final String TAG_LOG = "Log";
 //Volleyでリクエスト時に設定するタグ名。キャンセル時に利用する。
 private static final Object TAG_REQUEST_QUEUE = new Object();
 //画像のURL
 private static final String REQUEST_URL_IMAGE = "画像URL";
 //RequestQueueのインスタンス用
 private RequestQueue mRequestQueue;
 //ImageLoader
 private ImageLoader mImageLoader;
 //ImageLoaderのキャッシュ
 private ImageCache mCache;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  //キャッシュの情報を取得する
  mCache = getCacheNone();
  //RequestQueueのインスタンス用を取得
  mRequestQueue = Volley.newRequestQueue(getApplicationContext());
  //
  mImageLoader = new ImageLoader(mRequestQueue, mCache);
  
  //NetworkImageViewを取得する
  NetworkImageView image = (NetworkImageView)findViewById(R.id.image);
  //画像の読み込み
  image.setImageUrl(REQUEST_URL_IMAGE, mImageLoader);

 }
 /*
  * onCreateの後に呼び出される。
  */
 @Override
 public void onStart(){
  super.onStart();
 }
 
 /*
  * アプリが見えなくなったときに呼び出される。
  * (他のアプリを立ち上げたりした時など)
  */
 @Override
 public void onStop(){
  super.onStop();
  mRequestQueue.cancelAll(TAG_REQUEST_QUEUE);
 }
 
 @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;
 }
 /*
  * キャッシュを利用しないためnullにする
  */
 private ImageCache getCacheNone(){
  
  return new ImageCache(){
   @Override
   public Bitmap getBitmap(String url) {
    return null;
   }
   @Override
   public void putBitmap(String url, Bitmap bitmap) {
   }   
  };
  
 }

}

次のように指定した画像が表示されたらOKです( ´∀`)bグッ!


以上です(`・ω・´)ゞビシッ!!

参考URL

0 件のコメント:

コメントを投稿