• 検索結果がありません。

2 // TODO Auto-generated method stub float x = event.getx(); float y = event.gety(); String action = ""; switch(event.getaction()) { case MotionEvent.

N/A
N/A
Protected

Academic year: 2021

シェア "2 // TODO Auto-generated method stub float x = event.getx(); float y = event.gety(); String action = ""; switch(event.getaction()) { case MotionEvent."

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

1

タッチイベントを取得する

タッチパネルを操作すると, タッチイベントが ACTION_DOWN→ACTION_MOVE(繰返 し)→ACTION_UP の順に発生する. このタッチイベントを取得するには, onTouchEvent メソッドをオーバーライドする. また, dispatchTouchEvent メソッドをオーバーライドしても, 同様の情報を取得すること ができる. dispatchTouchEvent メソッドは, onTouchEvent メソッドよりも先にコールされ る. アクティビティで取得する o Activity#onTouchEvent メソッドをオーバーライドする. o MotionEvent#getX メソッド, getY メソッドで, タッチされた x, y 座標を取 得できる. o MotionEvent#getAction メソッドで, タッチアクション (DOWN/MOVE/UP/CANCEL)を取得できる. o MotionEvent#getEventTime メソッドで, イベント発生時刻(ms)を取得で きる. (サンプルコードでは未使用) package sample.android.touchevent01; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent;

public class TouchEvent01 extends Activity { /** Called when the activity is first created. */ @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main); }

@Override

(2)

2 // TODO Auto-generated method stub float x = event.getX();

float y = event.getY(); String action = "";

switch(event.getAction()) {

case MotionEvent.ACTION_DOWN: action = "Touch Down";

break;

case MotionEvent.ACTION_MOVE: action = "Touch Move";

break;

case MotionEvent.ACTION_UP: action = "Touch Up";

break;

case MotionEvent.ACTION_CANCEL: action = "Touch Cancel";

break; }

Log.v("Touch", action + " x=" + x + ", y=" + y); return super.onTouchEvent(event);

} }

(3)

3 View で取得する

o View#onTouchEvent メソッドをオーバーライドする.

o MotionEvent#getX メソッド, getY メソッドで, タッチされた x, y 座標を取

得できる.

o MotionEvent#getAction メソッドや getEventTime メソッドも Activity 同

様使用できる. package sample.android.touchevent02; import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.os.Bundle; import android.view.MotionEvent; import android.view.View;

public class TouchEvent02 extends Activity { /** Called when the activity is first created. */ @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

MyView view = new MyView(this); setContentView(view);

} }

class MyView extends View {

(4)

4 public MyView(Context context) { super(context);

setFocusable(true); }

@Override

protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub canvas.drawColor(Color.WHITE); Paint paint = new Paint();

paint.setColor(Color.BLUE); paint.setStrokeWidth(3); Point po = null;

for(int i=0; i<points.size(); i++) { po = points.get(i);

canvas.drawPoint(po.x, po.y, paint); }

super.onDraw(canvas); }

@Override

public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub

int x = (int)event.getX(); int y = (int)event.getY(); points.add(new Point(x, y)); invalidate(); // 通知

return true; }

(5)

5 ●実行結果

クリックイベント、タッチイベント、キーイベントの同居

package sample.android.multievent; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.Window; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Toast; import android.view.View;

public class MultiEventSample extends Activity implements View.OnClickListener { /** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

(6)

6

linearLayout.setOrientation(LinearLayout.VERTICAL); setContentView(linearLayout);

Button button1 = new Button(this); button1.setText("Yes");

button1.setOnClickListener(this);//ボタンにクリックリスナー設定 linearLayout.addView(button1, new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); }

// 画面タッチイベント発生時、呼び出されます @Override

public boolean onTouchEvent(MotionEvent event) { String action = ""; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: action = "ACTION_DOWN"; break; case MotionEvent.ACTION_UP: action = "ACTION_UP"; break; case MotionEvent.ACTION_MOVE: action = "ACTION_MOVE"; break; case MotionEvent.ACTION_CANCEL: action = "ACTION_CANCEL"; break; } //ログ情報を LogCat 画面に出力

Log.i("MotionEvent", "action = " + action + ", " + "x = "

+ String.valueOf(event.getX()) + ", " + "y = " + String.valueOf(event.getY()));

return super.onTouchEvent(event); }

(7)

7 // キーイベント発生時、呼び出されます

public boolean dispatchKeyEvent(KeyEvent event) {

if (event.getAction() == KeyEvent.ACTION_UP) { // キーが離された時 switch (event.getKeyCode()) { case KeyEvent.KEYCODE_DPAD_CENTER: // 十字中央キー Toast.makeText(this, "十字中央キー", Toast.LENGTH_SHORT).show(); return true; case KeyEvent.KEYCODE_DPAD_RIGHT: // 十字右キー Toast.makeText(this, "十字右キー", Toast.LENGTH_SHORT).show(); return true; default: } } return super.dispatchKeyEvent(event); } //ボタンをタッチしたときの処理 public void onClick(View arg0) {

Toast.makeText(this, "ボタンをタッチ", Toast.LENGTH_SHORT).show(); }

参照

関連したドキュメント

災害発生当日、被災者は、定時の午後 5 時から 2 時間程度の残業を命じられ、定時までの作業と同

PB、MDF 日本繊維板工業会登録書 日本繊維板工業会登録番号 接着剤 MSDS ※1

目視によって塗膜欠陥の有無を調査し,欠陥が見られ

屋外工事から排出される VOC については、低 VOC 資材を選択するための情報を整理した「東京都 VOC 対策ガイド〔建築・土木工事編〕 」 ( 「同〔屋外塗装編〕

事務用品等 コピー機、マーカー(有機溶剤)、接着剤 堀雅宏: ALIA NEWS , 37 , 30-39 ( 1997 )を改変..

▼ 企業名や商品名では無く、含有成分の危険性・有害性を MSDS 、文献

Economic Resource Type Economic Commitment Economic Event Type Economic Role.

職場環境の維持。特に有機溶剤規則の順守がポイント第2⇒第3