package com.proto.otheraction;
import java.util.ArrayList;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
public class OtherActionView extends View
implements GestureDetector.OnGestureListener,
GestureDetector.OnDoubleTapListener {
private ArrayList info;
private GestureDetector gestureDetector;
// コンストラクタ
public OtherActionView(Context context) {
super(context);
// 背景色の指定 (android.graphics.Colorの定義)
setBackgroundColor(Color.WHITE);
// 操作イベント取得情報の生成
info=new ArrayList();
info.add("操作イベントの取得情報");
// ジェスチャーディテクター(身振り検出)の生成
gestureDetector=new GestureDetector(context,this);
// フォーカス指定(タッチ操作受け取り)
setFocusable(true);
}
//描画
@Override
protected void onDraw(Canvas canvas) {
// 描画オブジェクトの生成
Paint paint=new Paint();
paint.setAntiAlias(true); // 文字の縁を滑らかに描く
paint.setTextSize(18); // 文字サイズ
paint.setColor(Color.MAGENTA); // 文字色
// 操作イベント取得情報の描画
for (int i=0;i30) info.remove(info.size()-1);
}
// タッチイベントの処理
@Override
public boolean onTouchEvent(MotionEvent event) {
//ジェスチャーディテクターの処理
gestureDetector.onTouchEvent(event);
return true;
}
// ダウンイベントの処理
public boolean onDown(MotionEvent e) {
addInfo("Down");
return false;
}
// 長押しイベントの処理
public void onLongPress(MotionEvent e) {
addInfo("LongPress");
}
// フリック(軽く打つ)イベントの処理(速度単位はPixel/秒)
public boolean onFling(MotionEvent e0,MotionEvent e1,
float velocityX,float velocityY) {
addInfo("Fling("+velocityX+","+velocityY+")");
return false;
}
// スクロールイベントの処理
public boolean onScroll(MotionEvent e0,MotionEvent e1,
float distanceX,float distanceY) {
addInfo("Scroll("+distanceX+","+distanceY+")");
return false;
}
// プレスイベントの処理(down後moveなし)
public void onShowPress(MotionEvent e) {
addInfo("ShowPress");
}
// シングルタップアップ(完了)イベントの処理
public boolean onSingleTapUp(MotionEvent e) {
addInfo("SigngleTapUp");
return false;
}
// ダブルタップイベントの処理
public boolean onDoubleTap(MotionEvent e) {
addInfo("DoubleTap");
return false;
}
// ダブルタップイベントイベントの処理(down,move,up含む)
public boolean onDoubleTapEvent(MotionEvent e) {
addInfo("DoubleTapEvent");
return false;
}
// シングルタップイベントの処理
public boolean onSingleTapConfirmed(MotionEvent e) {
addInfo("SingleTap");
return false;
}
}
|