質問編集履歴
5
追記
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
項目内容の変更
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
コード内のコメントの追加
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
コード内のコメント追加
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
追記
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です。
|