●イベント
■クリック
XXX.setOnClickListener(new onClick_listener());
private class onClick_listener implements android.view.View.OnClickListener {
public void onClick(android.view.View view) {
}
}
■長押し、ロングクリック
XXX.setOnLongClickListener(new onLongClick_listener());
private class onLongClick_listener implements android.view.View.OnLongClickListener {
public boolean onLongClick(android.view.View view) {
return false//falseでonClickイベントを呼び出す
}
}
■タッチ・スライド
XXX.setOnTouchListener(new OnTouch_listener());
private class OnTouch_listener implements android.view.View.OnTouchListener
{
@Override
public boolean onTouch(android.view.View v, android.view.MotionEvent e){
//MotionEvent.ACTION_DOWN タッチを押した
//MotionEvent.ACTION_UP タッチを上げた
//MotionEvent.ACTION_MOVE タッチしてスライドした 対象のオブジェクトの外まで座標が取れる
if(android.view.MotionEvent.ACTION_DOWN==e.getAction()) {
android.widget.TextView t=(android.widget.TextView)findViewById(R.id.textView4);
t.setText( "ACTION_DOWN " + e.getX() + " : " + e.getY());
}
return true;
}
}
▼マルチタッチ
private class OnTouch_listener implements android.view.View.OnTouchListener
{
@Override
public boolean onTouch(android.view.View v, android.view.MotionEvent e){
android.widget.TextView t=(android.widget.TextView)findViewById(R.id.textView4);
String str="";
int count=e.getPointerCount()
for(int i=0;i<count;i++) {
str=str + e.getX(i) + " : " + e.getY(i) + "\n";
}
t.setText(str);
return true;
}
}
e.getPointerCount()にマルチタッチの個数が入ってきます。
インデックスが5個までのタッチが入ってきます。
座標を取るには、e.getX(i) e.getY(i)の引数に取るべきインデックスを入れるとそれぞれの座標が取得できます。
■無名クラスを使ってイベントリスナを登録する方法
名前付きクラスを作ってイベントリスナを登録するよりも、無名クラスを使って
登録した方がシンプルに書けます。
android.widget.ToggleButton tb=(android.widget.ToggleButton)findViewById(R.id.toggleButton);
tb.setOnClickListener(new android.view.View.OnClickListener() {
public void onClick(android.view.View view) {
}
});
無名クラスにより、かなりシンプルになりました。
▲トップページ
>
android