Button

■事前準備

①.新しいプロジェクト「ButtonTest」を作成する

②.HelloWorldの文字を消す

③.一度実行してエミュレータの起動を行っておく

■追加方法

Buttonの追加はPaletteのWidgetsからButtonを選択して、
D&Dでエディタ画面のAndroidに追加します。

mb_0096

●ボタンのProperties一例
	・layout_width、layout_height
		ボタンの横と縦のサイズ設定ができます。

		・数値
			指定した値のサイズになります。

		・wrap_content
			wrap_contentは文字のサイズなどを考慮して
			ボタンのサイズを自動調整してくれます。

		・match_parent
			match_parentは親layoutと同じサイズになります。

	・background
		backgroundはボタンの背景を変更できる機能です。
		背景の変更は色だけではなく、絵の設定もできるようになります。

	・text
		ボタンに表示するテキストの設定を行います。
		propertiesにはtext設定を行う箇所は2箇所ありますが、
		上側のtextがアプリ上では優先されて表示されます。

	・textSize
		ボタンに表示しているテキストのサイズを変更します。

	・textColor
		ボタンに表示しているテキストの色を変更します。

■サンプル

public class MainActivity extends AppCompatActivity implements View.OnClickListener 
{

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

		findViewById(R.id.button2).setOnClickListener(this);

	}

	/*
		アラート表示
	*/
	private void DrawAlert(String title, String message)
	{
		AlertDialog.Builder aleart = new AlertDialog.Builder(this);
		// アラートダイアログのタイトルを設定します
		aleart.setTitle(title);
		// アラートダイアログのメッセージを設定します
		aleart.setMessage(message);

		// ボタン追加
		aleart.setPositiveButton("終了", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int wdhich)
			{
			}
		});

		// アラートダイアログのキャンセルが可能かどうかを設定します
		aleart.setCancelable(true);
		AlertDialog dialog = aleart.create();
		// アラートダイアログを表示します
		dialog.show();
	}

	public void onClick(View view)
	{
		DrawAlert("ボタンチェック", "押されました");
	}
}

	mb_0097

■クリック判定

ボタンがクリックされたかどうかを判定するには「onClick」メソッドを使用します。
onClickはViewがクリックされた際に呼び出されることを
前提として作られており、OnClickListenerインターフェースの抽象メソッドです

●インターフェース
	Javaにおけるインターフェースとは抽象メソッドと定数のみで
	構成されているクラスを指しており、多重継承することが可能です。
	継承には「implements」キーワードを使用します。
	詳細は継承とインターフェースにて説明しています。

●無名(匿名)クラス
	無名クラスとはその名のとおりクラス名を持たないクラスのことで、
	継承を必須とするインターフェースを専用クラスを作らなくとも
	インスタンス化できます。

	例:
		OnClickListener listener = new OnClickListener() {
			@Override
			public void onClick(View v) 
			{
	     		   // 押下時の処理
		   	}
		};

		上の例のように無名クラスを使用することでインタスタンス化に必要な
		仮想関数のオーバーライドを作成することができ、
		インターフェースのみでのインスタンス化が可能です。

●onClick
	関数名:
		onClick
	
	戻り値:
		なし
	
	引数:
		View v
			クリックされたView
	
	内容:
		このメソッドを実装しているViewがクリックされた際に
		呼び出されます。

●onClick実装方法
	OnClickListenerを使用する方法は複数ありますので、
	各方法について説明します。

	①.Activityで継承する
		ActivityでOnClickListenerを継承し、
		ボタンクリック時の挙動を実装します。

		例:
			public class MainActivity extends AppCompatActivity 
								implements OnClickListener
			{
			    @Override
			    public void onClick(View v) {
			        // 押下時の処理
			    }
			}

	②.無名クラスとして作成する
		無名クラスの機能を利用してOnClickListenerをインスタンス化して
		ボタンクリック時の挙動を実装します。

		OnClickListener listener = new OnClickListener() {
							@Override
							public void onClick(View v) 
							{
								// 押下時の処理
				    			}
						};

		findViewById(R.id.ボタンのID).setOnClickListener(listener);

	③.OnClickListenerを継承した専用のクラスを作成する
		Activityで継承を行うのではなく専用のクラスを用意して
		そちらにOnClickListenerを継承し、ボタンクリック時の挙動を実装します。

		例:
			class JunkenButton implements OnClickListener 
			{
				@Override
				public void onClick(View v) {
				
		    		}
			}

			findViewById(R.id.ボタンのID).setOnClickListener(new JunkenButton());

●setOnClickListener
	onClickはクリックされた際の挙動を実装するメソッドです。
	このメソッドが呼び出されるようにするにはどのViewがクリックされたのかを
	知る必要があります。
	そこで、各Viewには「setOnClickListener」というonClick持つクラスと
	Viewを関連付けるメソッドが用意されています。

	・メソッド詳細
		void setOnClickListener(OnClickListener l);

		戻り値:
			なし

		引数:
			OnClickListener:関連付けを行うOnClickListenerインターフェース

		内容:
			Viewに対してOnClickListenerの関連付けを行う

	このメソッドをAndroid画面で設定しているボタンなどが使用することで、
	タッチされた際に関連付けられているonClickが呼ばれるようになります。

	mb_0050

■ButtonとImageButton

PaletteにImages項目にImageButtonがあります。
ImageButtonのクリック判定処理の設定方法などは通常のButtonと同様にできます。

●Buttonとの違い
	・画像の扱い
		Buttonでも背景に画像が設定できるので、
		同様の扱いができるように思えますが、
		Buttonはあくまでも背景扱いです。
		画像の設定を変更することができません。

		mb_0098

		ImageButtonにもbackground設定があるので、
		背景色(画像も可)の変更ができます。

	・文字の有無
		Buttonは文字の設定ができますが、ImageButtonはできません。