Tôi có đối tượng đơn giản ImageView
colorSquare
.Lấy màu nền của ImageView
Thật đơn giản để đặt màu của đối tượng bằng cách gọi.
colorSquare.setBackgroundColor(color);
Nhưng làm cách nào để làm ngược lại, tức là lấy màu của nền ImageView?
Tôi có đối tượng đơn giản ImageView
colorSquare
.Lấy màu nền của ImageView
Thật đơn giản để đặt màu của đối tượng bằng cách gọi.
colorSquare.setBackgroundColor(color);
Nhưng làm cách nào để làm ngược lại, tức là lấy màu của nền ImageView?
Điều bạn có thể làm là
nhận ColorDrawable từ ImageView.
ColorDrawable drawable = (ColorDrawable) colorSquare.getBackground();
tại
drawable.getColor()
sẽ cung cấp cho u màu.
này sẽ chỉ làm việc nếu u đã thiết lập màu hoặc khác u sẽ nhận được ClassCastException
private int colorfindcolor(View v, int x, int y) {
int offset = 1; // 3x3 Matrix
int pixelsNumber = 0;
int xImage = 0;
int yImage = 0;
Bitmap imageBitmap = BitmapFactory.decodeResource(context.getResources(),
R.drawable.palette_color);
xImage = (int) (x * ((double) imageBitmap.getWidth()/(double) paletteImg
.getWidth()));
yImage = (int) (y * ((double) imageBitmap.getHeight()/(double) paletteImg
.getHeight()));
for (int i = xImage - offset; i <= xImage + offset; i++) {
for (int j = yImage - offset; j <= yImage + offset; j++) {
try {
color = imageBitmap.getPixel(i, j);
pixelsNumber += 1;
} catch (Exception e) {
// Log.w(TAG, "Error picking color!");
}
}
}
return color;
}
Trong đó x, y là event.getX(), event.getX() của sự kiện liên lạc ImageView
WTH có phản hồi này phải thực hiện câu hỏi không? – swooby
Yup, điều đó có tác dụng. – CjS
Điều này sẽ chỉ hoạt động trên API cấp 11 trở lên – Maragues
@Maragues Có nó sẽ chỉ hoạt động đối với Cấp API> = 11 –