以外に分かっているようで、分かっていないAndroidのボタン操作。
最初に、ボタンクリック時の基本動作を覚えておくとその後の理解が早まります。
ボタンイベントの流れ
- ①ボタンを押すと、最初にOnTouchイベントが発生
- ②長押しした場合、次にOnLongClickイベントが発生
- ③ボタンを離したら、再度OnTouchイベントが発生
- ④最後に、onClickイベントが発生(※1)
※1・・①、③のOnTouchイベントはアクションで区別可能。最初は、MotinoEvent.ACTION_UP アクション、最後はMotionEvent.ACTION_UP アクション。
図にするとこんな感じです。
では、上記流れを理解したうえで以下の動きをする簡単なサンプルを作ります。
・ボタン押下時にメッセージを表示
・ボタン長押し時にメッセージを表示
それでは実際に作ってみましょう。まずは、画面上にボタンを1つ作ります。
次に、MainActivityを以下のようにします。黄色行に注目してください。
package com.example.hoge.buttonproject;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener,View.OnLongClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// クリックイベントを取得したいボタン
Button btnSend =(Button)this.findViewById(R.id.button);
// Listenerをボタンオブジェクトに追加
btnSend.setOnClickListener(this);
btnSend.setOnLongClickListener(this);
}
@Override
public void onClick(View v) {
Toast.makeText(this, "onClick 実施", Toast.LENGTH_SHORT).show();
}
@Override
public boolean onLongClick(View v) {
Toast.makeText(this, "onLongClick 実施", Toast.LENGTH_SHORT).show();
return true;
}
}
黄色行をMainActivity に追加しました。簡単に説明すると。
・9行目に implements で View.OnClickListener,View.OnLongClickListener を追加。
・17行目に ボタンオブジェクトのIDを取得。
・20、21行目でボタンオブジェクトにListenerを追加。
・26~31行は onClick,onLongClick をOverrideして内容を実装。
となっています。
それではRunを押してプログラムを実行してみましょう。
ボタンクリック時に 以下のように『 onClick 実施 』とメッセージが表示されましたか?
同様に、ボタン長押し時に『 onLongClick 実施 』と表示されましたか?
もし、されないのでしたらもう一度プログラムを確認して下さい。
次のその②はちょっとプログラムを変更して、動作を変更してみます。