質問編集履歴

5

追記

2017/02/09 08:55

投稿

ko20vonobird
ko20vonobird

スコア50

test CHANGED
File without changes
test CHANGED
@@ -251,3 +251,9 @@
251
251
  ということを表しています。
252
252
 
253
253
  ・実機はAndroid 6.0のXperia z4です。
254
+
255
+ ・マジックナンバー、指定領域について
256
+
257
+ →まず、winWとwinHは画面の幅と高さを表しています。そして、txとtyはタッチされた座標です。例えば、winW*0.15fは画面幅の15%の位置を使用するという意味で、winW-(winW*0.33f)は画面幅の右から33%の位置を使用するという意味です。これを使用する意図は、どんな画面幅になっても対応できるようにということから使用しています。
258
+
259
+ また、領域は角丸四角形なので、四隅の半径を短い方に合わせて円と長方形、そして円で表現できるようにしています。なので、powを使っているところは円の公式を用いているということになります。

4

項目内容の変更

2017/02/09 08:55

投稿

ko20vonobird
ko20vonobird

スコア50

test CHANGED
File without changes
test CHANGED
@@ -220,7 +220,7 @@
220
220
 
221
221
  ###試したり考えたりしたこと
222
222
 
223
- ログ出力を試しましたがなぜか実機だと出ません。
223
+ ログ出力を試しましたがなぜか実機だと**ログ自体がなぜか出ません。**
224
224
 
225
225
  手汗が原因ではないかと思いましたが、比較対象がないため分かりません。
226
226
 

3

コード内のコメントの追加

2017/02/09 08:40

投稿

ko20vonobird
ko20vonobird

スコア50

test CHANGED
File without changes
test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  tty = new float[fingnum];
38
38
 
39
- //タッチ箇所が一本以上の時
39
+ //タッチ箇所が一本以上の時trueを返し、処理を行う。また、下にあるelseifで指が一本の時の処理もある。
40
40
 
41
41
  if (fingnum > 1) {
42
42
 
@@ -52,7 +52,7 @@
52
52
 
53
53
  ty = event.getY(index);
54
54
 
55
- //繰り返し回数一回目
55
+ //繰り返し回数一回目の時処理を行う
56
56
 
57
57
  if (cnt == 0){
58
58
 
@@ -66,7 +66,7 @@
66
66
 
67
67
  }
68
68
 
69
- //繰り返し回数二回目
69
+ //繰り返し回数二回目の時処理を行う
70
70
 
71
71
  if (cnt == 1){
72
72
 
@@ -84,11 +84,11 @@
84
84
 
85
85
  tty[cnt] = ty;//上に同じ
86
86
 
87
- //何もタッチされていない初期状態の時
87
+ //何もタッチされていない初期状態の時処理を行う
88
88
 
89
89
  if (colchk == 0) {
90
90
 
91
- //指定領域かどうかを判定
91
+ //指定領域かどうかを判定し、領域内でタッチされていたら処理を行う。
92
92
 
93
93
  if (pow(tx - (winW * 0.15f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || pow(tx - (winW * 0.33f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || (winW * 0.15f <= tx && tx <= winW * 0.33f) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
94
94
 
@@ -100,7 +100,7 @@
100
100
 
101
101
  }
102
102
 
103
- //指定領域かどうかを判定
103
+ //指定領域かどうかを判定し、領域内でタッチされていたら処理を行う。
104
104
 
105
105
  if (pow(tx - (winW - (winW * 0.33f)), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || pow(tx - (winW - (winW * 0.15f)), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || (winW - (winW * 0.33f) <= tx && tx <= winW - (winW * 0.15f)) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
106
106
 
@@ -114,11 +114,11 @@
114
114
 
115
115
  }
116
116
 
117
- //左がタッチされている時
117
+ //左がタッチされている時に処理を行う。
118
118
 
119
119
  if (colchk == 1) {
120
120
 
121
- //指定領域かどうかを判定
121
+ //指定領域かどうかを判定し、領域内でタッチされていたら処理を行う。
122
122
 
123
123
  if (pow(tx - (winW - (winW * 0.33f)), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || pow(tx - (winW - (winW * 0.15f)), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || (winW - (winW * 0.33f) <= tx && tx <= winW - (winW * 0.15f)) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
124
124
 
@@ -132,11 +132,11 @@
132
132
 
133
133
  }
134
134
 
135
- //右がタッチされている時
135
+ //右がタッチされている時に処理を行う。
136
136
 
137
137
  if (colchk == 2){
138
138
 
139
- //指定領域かどうかを判定
139
+ //指定領域かどうかを判定し、領域内でタッチされていたら処理を行う。
140
140
 
141
141
  if (pow(tx - (winW * 0.15f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || pow(tx - (winW * 0.33f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || (winW * 0.15f <= tx && tx <= winW * 0.33f) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
142
142
 
@@ -150,7 +150,7 @@
150
150
 
151
151
  }
152
152
 
153
- //何もタッチされていない時
153
+ //何もタッチされていない時に処理を行う。
154
154
 
155
155
  if (colchk == 0) {
156
156
 
@@ -162,7 +162,7 @@
162
162
 
163
163
  }
164
164
 
165
- } else if (fingnum == 1) {//タッチ箇所が一か所の時
165
+ } else if (fingnum == 1) {//タッチ箇所が一か所の時処理を行う。
166
166
 
167
167
  int cnt = 0;
168
168
 
@@ -182,7 +182,7 @@
182
182
 
183
183
  Log.d("tx,ty", "tx:" + ltx + " ty:" + lty);
184
184
 
185
- //指定領域かどうかを判定
185
+ //指定領域かどうかを判定し、領域内でタッチされていたら処理を行う。
186
186
 
187
187
  if (pow(tx - (winW * 0.15f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winW * 0.1f), 2) || pow(tx - (winW * 0.33f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winW * 0.1f), 2) || (winW * 0.15f <= tx && tx <= winW * 0.33f) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
188
188
 
@@ -192,6 +192,8 @@
192
192
 
193
193
  Log.d("hand", "left");
194
194
 
195
+ //↓指定領域かどうかを判定し、領域内でタッチされていたら処理を行う。
196
+
195
197
  } else if (pow(tx - (winW - (winW * 0.33f)), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winW * 0.1f), 2) || pow(tx - (winW - (winW * 0.15f)), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winW * 0.1f), 2) || (winW - (winW * 0.33f) <= tx && tx <= winW - (winW * 0.15f)) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
196
198
 
197
199
  colchk = 2;

2

コード内のコメント追加

2017/02/09 08:36

投稿

ko20vonobird
ko20vonobird

スコア50

test CHANGED
File without changes
test CHANGED
@@ -36,8 +36,12 @@
36
36
 
37
37
  tty = new float[fingnum];
38
38
 
39
+ //タッチ箇所が一本以上の時
40
+
39
41
  if (fingnum > 1) {
40
42
 
43
+ //タッチされている数だけ処理を行う
44
+
41
45
  for (int cnt = 0; cnt < fingnum; cnt++) {
42
46
 
43
47
  pid = event.getPointerId(cnt);
@@ -48,6 +52,8 @@
48
52
 
49
53
  ty = event.getY(index);
50
54
 
55
+ //繰り返し回数一回目
56
+
51
57
  if (cnt == 0){
52
58
 
53
59
  textView1.setText("tx1:" + tx + " ty1:" + ty);
@@ -60,6 +66,8 @@
60
66
 
61
67
  }
62
68
 
69
+ //繰り返し回数二回目
70
+
63
71
  if (cnt == 1){
64
72
 
65
73
  textView2.setText("tx2:" + tx + " ty2:" + ty);
@@ -76,8 +84,12 @@
76
84
 
77
85
  tty[cnt] = ty;//上に同じ
78
86
 
87
+ //何もタッチされていない初期状態の時
88
+
79
89
  if (colchk == 0) {
80
90
 
91
+ //指定領域かどうかを判定
92
+
81
93
  if (pow(tx - (winW * 0.15f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || pow(tx - (winW * 0.33f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || (winW * 0.15f <= tx && tx <= winW * 0.33f) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
82
94
 
83
95
  colchk = 1;
@@ -88,6 +100,8 @@
88
100
 
89
101
  }
90
102
 
103
+ //指定領域かどうかを判定
104
+
91
105
  if (pow(tx - (winW - (winW * 0.33f)), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || pow(tx - (winW - (winW * 0.15f)), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || (winW - (winW * 0.33f) <= tx && tx <= winW - (winW * 0.15f)) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
92
106
 
93
107
  colchk = 2;
@@ -100,8 +114,12 @@
100
114
 
101
115
  }
102
116
 
117
+ //左がタッチされている時
118
+
103
119
  if (colchk == 1) {
104
120
 
121
+ //指定領域かどうかを判定
122
+
105
123
  if (pow(tx - (winW - (winW * 0.33f)), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || pow(tx - (winW - (winW * 0.15f)), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || (winW - (winW * 0.33f) <= tx && tx <= winW - (winW * 0.15f)) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
106
124
 
107
125
  colchk = 3;
@@ -114,8 +132,12 @@
114
132
 
115
133
  }
116
134
 
135
+ //右がタッチされている時
136
+
117
137
  if (colchk == 2){
118
138
 
139
+ //指定領域かどうかを判定
140
+
119
141
  if (pow(tx - (winW * 0.15f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || pow(tx - (winW * 0.33f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winH * 0.1f), 2) || (winW * 0.15f <= tx && tx <= winW * 0.33f) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
120
142
 
121
143
  colchk = 3;
@@ -128,6 +150,8 @@
128
150
 
129
151
  }
130
152
 
153
+ //何もタッチされていない時
154
+
131
155
  if (colchk == 0) {
132
156
 
133
157
  sc.colreturn();
@@ -138,7 +162,7 @@
138
162
 
139
163
  }
140
164
 
141
- } else if (fingnum == 1) {
165
+ } else if (fingnum == 1) {//タッチ箇所が一か所の時
142
166
 
143
167
  int cnt = 0;
144
168
 
@@ -158,6 +182,8 @@
158
182
 
159
183
  Log.d("tx,ty", "tx:" + ltx + " ty:" + lty);
160
184
 
185
+ //指定領域かどうかを判定
186
+
161
187
  if (pow(tx - (winW * 0.15f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winW * 0.1f), 2) || pow(tx - (winW * 0.33f), 2) + pow(ty - (winH - (winH * 0.15f)), 2) < pow((winW * 0.1f), 2) || (winW * 0.15f <= tx && tx <= winW * 0.33f) && (winH - (winH * 0.25f) <= ty && ty <= winH - (winH * 0.05f))) {
162
188
 
163
189
  colchk = 1;

1

追記

2017/02/09 08:20

投稿

ko20vonobird
ko20vonobird

スコア50

test CHANGED
File without changes
test CHANGED
@@ -203,3 +203,23 @@
203
203
  前回の質問の延長ですが、本質が違うと感じたので別の質問にしました。
204
204
 
205
205
  マルチタッチなので実機でテストしています。
206
+
207
+
208
+
209
+ ###追記
210
+
211
+ ・ログはコード内にありますが、
212
+
213
+ Log.d("tx,ty", "tx:" + ltx + " ty:" + lty);で座標
214
+
215
+ Log.d("hand", "left");で左がタッチされている
216
+
217
+ Log.d("hand", "right");で右がタッチされている
218
+
219
+ Log.d("hand", "leftright");で左右がタッチされている
220
+
221
+ Log.d("hand", "out");でタッチされていない
222
+
223
+ ということを表しています。
224
+
225
+ ・実機はAndroid 6.0のXperia z4です。