画面上のボタンがタッチされると”ボタンがタッチされました”、ボタン以外のエリアがタッチされると”画面がタッチされました”というメッセージを表示します。
ここで”タッチ”というのは、ボタンに指が触っているけど離されていない、押されたままの状態です。
.Net Framework的な言い方だとOnPress()な感じです。
ボタンタッチ時
画面タッチ時(ボタン以外のエリア)
コード
package com.example.test1; import android.os.Bundle; import android.app.Activity; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; public class MainActivity extends Activity { Button btnAddAlerm; TextView txtMessage; /** * 画面生成時のハンドラ */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //-------------------- // 画面レイアウトを作成 //-------------------- LinearLayout layout = new LinearLayout( this ); layout.setOrientation( LinearLayout.VERTICAL ); setContentView( layout ); //---------------------------- // テキスト表示欄と、ボタンを画面に追加 //---------------------------- txtMessage = new TextView( this ); txtMessage.setText( "こんにちは" ); btnAddAlerm = new Button( this ); btnAddAlerm.setText( "click me" ); layout.addView( txtMessage ); layout.addView( btnAddAlerm ); // ボタンタッチ時のイベントを定義 btnAddAlerm.setOnTouchListener( new BtnAddAlermTouchListener() ); } /** 画面がタッチされた時のハンドラ */ @Override public boolean onTouchEvent( MotionEvent e ) { if ( e.getAction() == MotionEvent.ACTION_DOWN ) { txtMessage.setText( "画面がタッチされました" ); } if ( e.getAction() == MotionEvent.ACTION_UP ) { txtMessage.setText( "画面から離れました" ); } return true; } /** ボタンがタッチされた時のハンドラ */ private class BtnAddAlermTouchListener implements OnTouchListener { @Override public boolean onTouch(View v, MotionEvent e) { if ( e.getAction() == MotionEvent.ACTION_DOWN ) { txtMessage.setText( "ボタンがタッチされました" ); } if ( e.getAction() == MotionEvent.ACTION_UP ) { txtMessage.setText( "ボタンから離れました" ); } return true; } } } |
関連記事
コメントを残す