ImageViewを使用する

View

ImageViewの使用方法を見ていきます。

ImageViewをリソース(XML)で定義する

ImageViewをXMLに定義する場合は、以下のように定義します。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/linearlayout01"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="jp.yocchin.viewsample.MainActivity" >
    
	<ImageView
	    android:id="@+id/image01"
		android:layout_height="wrap_content"
		android:layout_width="wrap_content"
		android:src="@drawable/ic_launcher"
		android:contentDescription="@string/image01_desc"
	/>

</LinearLayout>

「android:src」で対象のリソース(画像イメージ)を指定します。
「android:contentDescription」は必須ではありませんが、
未設定の場合「Missing contentDescription attribute on image」という警告が出ます。

TextViewで定義可能な要素はこちらを参考にしてください。
Android ImageView Reference

TextViewをプログラムで追加する

ある処理を実行した後にイメージ画像を表示させたいなど、任意のタイミングでイメージ画像を表示させたい場合は、
プログラム側からImageViewを追加することで実現可能です。

package jp.yocchin.viewsample;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

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

		//①****IDから取得してイメージ画像を再設定する場合****
		
		// IDを元にImageViewオブジェクトを取得
		ImageView iv = (ImageView)this.findViewById(R.id.image01);
		// drawableフォルダにある任意のイメージを設定
		iv.setImageResource(R.drawable.ic_launcher); 
		
		
		//②****新規にImageVIewを追加する場合****
		
		// ImageViewのインスタンスを新規に作成
		ImageView iv2 = new ImageView(this);
		// drawableフォルダにある任意のイメージを設定
		iv.setImageResource(R.drawable.ic_launcher); 
		// 親のViewGroupを取得して、Viewを追加
		LinearLayout lay = (LinearLayout)this.findViewById(R.id.linearlayout01);
		lay.addView(iv2);
		
	}
}

ImageViewにクリックイベントを追加する

それでは、イメージ画像にクリックイベント追加してみましょう。
クリックイベントを追加することで、対象のイメージ画像がクリックされたタイミング任意の処理を実行できます。

package jp.yocchin.viewsample;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		// IDを元にImageViewオブジェクトを取得
		ImageView iv = (ImageView)this.findViewById(R.id.image01);
		// drawableフォルダにある任意のイメージを設定
		iv.setImageResource(R.drawable.ic_launcher); 
		
		// ImageViewオブジェクトにクリックイベントを追加する
		iv.setOnClickListener(
				new View.OnClickListener() {
					public void onClick(View v) {
						// イメージ画像がクリックされたときに実行される処理
						Toast.makeText(MainActivity.this, "画像01がクリックされました", Toast.LENGTH_LONG).show();
					}
				}
			);
	}
}

ImageViewクラスのsetOnClickListenerメソッドに、
クリック処理を定義したOnClickListenerクラスのインスタンスを渡します。

ImageViewにロングクリックイベント(長押しイベント)を追加する

同じ方法で、ロングクリックイベント(長押しイベント)も追加してみます。

package jp.yocchin.viewsample;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		// IDを元にImageViewオブジェクトを取得
		ImageView iv = (ImageView)this.findViewById(R.id.image01);
		// drawableフォルダにある任意のイメージを設定
		iv.setImageResource(R.drawable.ic_launcher); 
		
		// ImageViewオブジェクトにクリックイベントを追加する
		iv.setOnClickListener(
				new View.OnClickListener() {
					public void onClick(View v) {
						// イメージ画像がクリックされたときに実行される処理
						Toast.makeText(MainActivity.this, "画像01がクリックされました", Toast.LENGTH_LONG).show();
					}
				}
			);
		
		// ImageViewオブジェクトにロングクリックイベントを追加する
		iv.setOnLongClickListener(
				new View.OnLongClickListener() {
					public boolean onLongClick(View v) {
						// イメージ画像がクリックされたときに実行される処理
						Toast.makeText(MainActivity.this, "画像01がクリックされました", Toast.LENGTH_LONG).show();
						// tureを返すと、onClickイベントが実行されなくなる
						return true;
					}
				}
			);
	}
}

コメント

タイトルとURLをコピーしました