質問編集履歴

1

実現したいこと

2017/05/20 11:22

投稿

sjyrnt7710
sjyrnt7710

スコア13

title CHANGED
File without changes
body CHANGED
@@ -3,44 +3,92 @@
3
3
 
4
4
  ###発生している問題・エラーメッセージ
5
5
 
6
- OnTouchEventではなくOnTouchで座標取得したいですが反応しません
6
+ 下記のプログラムjavaに直接レイアウトを書かずに実現したいです。
7
7
  どうすればいいでしょうか
8
8
 
9
9
  ###該当のソースコード
10
10
  import android.app.Activity;
11
+ import android.graphics.Color;
11
12
  import android.os.Bundle;
12
13
  import android.util.Log;
13
14
  import android.view.MotionEvent;
15
+ import android.view.SurfaceView;
14
16
  import android.view.View;
15
17
  import android.view.View.OnTouchListener;
18
+ import android.view.Window;
19
+ import android.widget.LinearLayout;
16
20
 
17
21
  public class MainActivity extends Activity implements OnTouchListener {
18
22
 
23
+ float x1=0;
24
+ float y1=0;
25
+ float x2=0;
26
+ float y2=0;
27
+ float x3=0;
28
+ float y3=0;
19
29
 
30
+
20
31
  /** Called when the activity is first created. */
21
32
  @Override
22
33
  public void onCreate(Bundle savedInstanceState) {
23
34
  super.onCreate(savedInstanceState);
35
+ // タイトルは無しで。
36
+ this.requestWindowFeature(Window.FEATURE_NO_TITLE);
37
+
38
+ // レイアウトを作って設定
39
+ LinearLayout layout = new LinearLayout(this);
24
- setContentView(R.layout.main);
40
+ this.setContentView(layout);
41
+
42
+
43
+ // テキストボックス表示する
44
+
45
+ // GLSurfaceViewを作る
46
+ final SurfaceView surfaceView = new SurfaceView(this);
47
+ surfaceView.setLayoutParams(new LinearLayout.LayoutParams(
48
+ LinearLayout.LayoutParams.MATCH_PARENT,
49
+ LinearLayout.LayoutParams.WRAP_CONTENT));
50
+ surfaceView.setOnTouchListener(this);
51
+ surfaceView.setBackgroundColor(Color.CYAN);
52
+ layout.addView(surfaceView);
25
53
  }
26
54
 
55
+ ////////////////////////////////////////////////////////////
56
+ // タッチされたイベントが全部こっちにくる
27
57
  public boolean onTouch(View v, MotionEvent event) {
28
58
 
29
59
  switch (event.getAction() & MotionEvent.ACTION_MASK) {
30
60
  case MotionEvent.ACTION_DOWN:
31
61
  Log.d("TouchEvent", "X:" + event.getX() + ",Y:" + event.getY());
62
+ x1=event.getX();
63
+ y1=event.getY();
32
64
  break;
33
65
  case MotionEvent.ACTION_UP:
34
66
  Log.d("TouchEvent", "X:" + event.getX() + ",Y:" + event.getY());
67
+ x2=event.getX();
68
+ y2=event.getY();
35
69
  break;
36
70
  }
37
71
 
72
+ if(x1>x2){
73
+ x3=x1-x2;
74
+ }else{
75
+ x3=x2-x1;
76
+ }
77
+
78
+ if(y1>y2){
79
+ y3=y1-y2;
80
+ }else{
81
+ y3=y2-y1;
82
+ }
83
+
84
+ Log.d("TouchEvent", "X:" +x3);
85
+ Log.d("TouchEvent", "Y:" +y3);
86
+
38
87
  return true;
39
88
  }
40
89
  }
41
-
42
90
  ###試したこと
43
- レイアウトを直接java内に書いてあるサンプルでは取得することができました。
44
91
 
92
+
45
93
  ###補足情報(言語/FW/ツール等のバージョンなど)
46
94
  より詳細な情報