2013年6月8日土曜日

画像表示(ImageView, setScaleType)

ImageViewを使ってみました。

個人的には、ImageView単体で使ったことがなかったので、
便利な機能をいろいろと発見できました。

//イメージビューを生成
ImageView oImage = new ImageView(Context);


画像を設定する方法は3つ

1.ビットマップを読み込む
//ビットマップの作成
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.~) )
//ビットマップを設定
oImage.setImageBitmap(bmp)

2.リソースから読み込む
oImage.setImageResource(R.drawable.~); 

3.Drawableから読み込む
oImage.setImageDrawable(getResources().getDrawable(R.drawable.~)); 


だいたいの流れはこんな感じです。

oImage.setBackgroundResource(R.drawable.~)

とはなにか違いがあるのか??
疑問を持ちました。。。

イメージビューとして生成する意味とかあるのかな??


とか思っていたのですが、
なんか便利な使い方見つけました。。。

setScaleType

画像をいい感じに拡大縮小するメソッドです。
oImage.setScaleType(ImageView.ScaleType.FIT_XY)

CENTER       サイズ変更せずにエリアの中央に表示
CENTER_CROP  横幅いっぱいに画像を拡大し中央に表示
FIT_CENTER   縦幅いっぱいに像を拡大し中央に表示
FIT_END      縦幅いっぱいに画像を拡大し右端に寄せて表示
FIT_START    縦幅いっぱいに画像を拡大し左端に寄せて表示
FIT_XY       全体に画像を拡大して表示


イメージビューに用意されているメソッドですので、
ただ単に画像を表示するだけでなく、いろいろと画像を反転されたいな とか、拡大されたいなってときには、ImageViewは使えそうです。


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

import android.os.Bundle;
import android.app.Activity;
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));
        oImg.setImageResource(R.drawable.ic_launcher);
        oLayout.addView(oImg);

        //CENTER_CROPさせる画像の生成
        ImageView oImgCENTER_CROP = new ImageView(getApplicationContext());
        //横幅縦幅ともにMAX
        oImgCENTER_CROP.setLayoutParams(new LinearLayout.LayoutParams(MP, MP));
        oImgCENTER_CROP.setImageResource(R.drawable.ic_launcher);
        oImgCENTER_CROP.setScaleType(ImageView.ScaleType.CENTER_CROP );
        oLayout.addView(oImgCENTER_CROP);
    }

}

■実行結果