Cdacians

Cdacians
Cdacians

Tuesday 7 August 2012

Detect Touch Event, test on Custom View


Detect Touch Event, test on Custom View; part II.

Following the former post "Detect Touch Event, test on Custom View". In order to trace the trigged MotionEvent in onTouchEvent(), it's modified to have a TextView to display the event.

Test Single Touch

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package com.TestSingleTouch;
 
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
 
public class TestSingleTouch extends Activity {
  
 public class TouchView extends View {
   
  private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
  private float x, y;
  boolean touching = false;
 
  public TouchView(Context context) {
   super(context);
   // TODO Auto-generated constructor stub
  }
 
  @Override
  protected void onDraw(Canvas canvas) {
   // TODO Auto-generated method stub
   if(touching){
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(1);
    paint.setColor(Color.WHITE);
    canvas.drawCircle(x, y, 50f, paint);
   }
  }
 
  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
   // TODO Auto-generated method stub
   setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
         MeasureSpec.getSize(heightMeasureSpec));
  }
 
  @Override
  public boolean onTouchEvent(MotionEvent event) {
   // TODO Auto-generated method stub
    
   String act;
 
   int action = event.getAction();
   switch(action){
   case MotionEvent.ACTION_MOVE:
    act = "ACTION_MOVE\n";
    x = event.getX();
    y = event.getY();
    touching = true;
    break;
   case MotionEvent.ACTION_DOWN:
    act = "ACTION_DOWN\n";
    x = event.getX();
    y = event.getY();
    touching = true;
    break;
   case MotionEvent.ACTION_UP:
    act = "ACTION_UP\n";
    touching = false;
    break;
   default:
    act = "XXX\n";
    touching = false;
   }
    
   act += event.toString();
   textView.setText(act);
    
   invalidate();
   return true;
  }
 
 }
 
 TextView textView;
 
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     //setContentView(new TouchView(this));
   
     textView = new TextView(this);
     textView.setText("Waiting");
     TouchView touchView = new TouchView(this);
     LinearLayout mainScreen = new LinearLayout(this);
     mainScreen.setOrientation(LinearLayout.VERTICAL);
     mainScreen.addView(textView);
     mainScreen.addView(touchView);
     setContentView(mainScreen);
 
 }
 
}


akm
www.cdacians.com

No comments:

Post a Comment