Ответ 1
После некоторой пробной версии: сначала я пытаюсь использовать изображение как ресурс, который можно использовать, и он все еще случается (прозрачная часть изображения становится черной), во-вторых, я конвертирую изображение в png-образ, и он работает, поэтому проблема находится в файле тип (gif). так как в моем реальном приложении изображение, полученное с сервера, и я не могу запросить изображение, как всегда, в формате png, я использую решение по этой ссылке: Прозрачный GIF в Android ImageView
это просто для отображения только одного изображения (например, в моем вопросе), так как я использую Picasso, я использую цель, чтобы стереть черный цвет с изображения аватара следующим образом:
target = new Target() {
@Override
public void onPrepareLoad(Drawable arg0) {
}
@Override
public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) {
if (Build.VERSION.SDK_INT == 19/*Build.VERSION_CODES.KITKAT*/){
Bitmap editedavatar = AndroidUtils.eraseColor(bitmap, -16777216);
avatar.setImageBitmap(editedavatar);
}
}
@Override
public void onBitmapFailed(Drawable arg0) {
avatar.setImageResource(R.drawable.ic_profile_default);
где стирание - статический метод
public static Bitmap eraseColor(Bitmap src, int color) {
int width = src.getWidth();
int height = src.getHeight();
Bitmap b = src.copy(Config.ARGB_8888, true);
b.setHasAlpha(true);
int[] pixels = new int[width * height];
src.getPixels(pixels, 0, width, 0, 0, width, height);
for (int i = 0; i < width * height; i++) {
if (pixels[i] == color) {
pixels[i] = 0;
}
}
b.setPixels(pixels, 0, width, 0, 0, width, height);
return b;
}
но поскольку я использую Picasso для отображения изображений в списке, я impelements Target в ViewHolder, и он очень хорошо работает до сих пор.