質問編集履歴

5

2021/07/31 12:00

投稿

schoolstudent
schoolstudent

スコア5

test CHANGED
@@ -1 +1 @@
1
- [Android java]画像をタップして色コードを取得
1
+ 画像をタップして色コードを取得し、近い色を探して色名を得プログラム
test CHANGED
File without changes

4

教えてくださったことを参考にプログラムを編集しました。 カラーコードから色名の取得について質問を追加しました。

2021/07/31 12:00

投稿

schoolstudent
schoolstudent

スコア5

test CHANGED
File without changes
test CHANGED
@@ -10,8 +10,16 @@
10
10
 
11
11
  (下記プログラムは端末内の画像を選択し出力、そして、タップした座標を求めるプログラムです。)
12
12
 
13
+ ◎追加記
14
+
15
+ タップした場所のカラーコードを取得するプログラムにしました。
16
+
17
+ カラーコードから色名を取得、出力する方法をご教授お願いします。
18
+
13
19
  ```java
14
20
 
21
+
22
+
15
23
  import androidx.appcompat.app.AppCompatActivity;
16
24
 
17
25
  import androidx.core.content.ContextCompat;
@@ -20,6 +28,8 @@
20
28
 
21
29
 
22
30
 
31
+ import android.annotation.SuppressLint;
32
+
23
33
  import android.content.Intent;
24
34
 
25
35
  import android.graphics.Bitmap;
@@ -64,7 +74,9 @@
64
74
 
65
75
  private ImageView imageView;
66
76
 
77
+ private Bitmap bmp;
78
+
67
- private TextView tap = null;
79
+ private TextView colorRGB;
68
80
 
69
81
 
70
82
 
@@ -82,7 +94,7 @@
82
94
 
83
95
 
84
96
 
85
- this.tap = (TextView) findViewById(R.id.tap_id);
97
+ colorRGB = (TextView)findViewById(R.id.colorrgb);
86
98
 
87
99
 
88
100
 
@@ -132,7 +144,7 @@
132
144
 
133
145
  try {
134
146
 
135
- Bitmap bmp = getBitmapFromUri(uri);
147
+ bmp = getBitmapFromUri(uri);
136
148
 
137
149
  imageView.setImageBitmap(bmp);
138
150
 
@@ -172,17 +184,33 @@
172
184
 
173
185
 
174
186
 
187
+ @SuppressLint("SetTextI18n")
188
+
175
189
  @Override
176
190
 
177
191
  public boolean onTouchEvent(MotionEvent event) {
178
192
 
193
+ switch (event.getAction()) {
194
+
195
+ case MotionEvent.ACTION_DOWN:
196
+
179
197
  int x = (int) event.getRawX(); //タッチしたX座標
180
198
 
181
199
  int y = (int) event.getRawY(); //タッチしたY座標
182
200
 
183
201
 
184
202
 
203
+ int touchedRGB = bmp.getPixel(x, y);
204
+
205
+
206
+
185
- tap.setText("X座標 " + x + "Y座標 " + y);
207
+ colorRGB.setText("touched color: " + "#" + Integer.toHexString(touchedRGB));
208
+
209
+ colorRGB.setTextColor(touchedRGB);
210
+
211
+ break;
212
+
213
+ }
186
214
 
187
215
 
188
216
 

3

誤字

2021/07/29 16:21

投稿

schoolstudent
schoolstudent

スコア5

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  どうかご教授お願いします。
10
10
 
11
- (下記プログラムは端末内の画像を選択し出力るプログラムです。)
11
+ (下記プログラムは端末内の画像を選択し出力、そして、タップした座標を求めるプログラムです。)
12
12
 
13
13
  ```java
14
14
 

2

座標を求めるプログラムを追加しておきました。

2021/07/28 22:40

投稿

schoolstudent
schoolstudent

スコア5

test CHANGED
File without changes
test CHANGED
@@ -64,6 +64,8 @@
64
64
 
65
65
  private ImageView imageView;
66
66
 
67
+ private TextView tap = null;
68
+
67
69
 
68
70
 
69
71
 
@@ -77,6 +79,10 @@
77
79
  setContentView(R.layout.activity_main);
78
80
 
79
81
  imageView = (ImageView) findViewById(R.id.image_view);
82
+
83
+
84
+
85
+ this.tap = (TextView) findViewById(R.id.tap_id);
80
86
 
81
87
 
82
88
 
@@ -164,12 +170,28 @@
164
170
 
165
171
  }
166
172
 
173
+
174
+
167
175
  @Override
168
176
 
169
177
  public boolean onTouchEvent(MotionEvent event) {
178
+
179
+ int x = (int) event.getRawX(); //タッチしたX座標
180
+
181
+ int y = (int) event.getRawY(); //タッチしたY座標
182
+
183
+
184
+
185
+ tap.setText("X座標 " + x + "Y座標 " + y);
186
+
187
+
188
+
189
+ return true;
170
190
 
171
191
 
172
192
 
173
193
  }
174
194
 
195
+ }
196
+
175
197
  ```

1

誤字

2021/07/28 22:38

投稿

schoolstudent
schoolstudent

スコア5

test CHANGED
File without changes
test CHANGED
@@ -7,6 +7,8 @@
7
7
  また、座標を求めることはできたのですが、やりたいことは同じなので画像とか関係なく座標の数値だけで色コードを取得することはできませんか?(取得範囲を画面全体にするということ)
8
8
 
9
9
  どうかご教授お願いします。
10
+
11
+ (下記プログラムは端末内の画像を選択し、出力するプログラムです。)
10
12
 
11
13
  ```java
12
14
 
@@ -61,8 +63,6 @@
61
63
  private static final int RESULT_PICK_IMAGEFILE = 1000;
62
64
 
63
65
  private ImageView imageView;
64
-
65
- private TextView colorRGB;
66
66
 
67
67
 
68
68