Я хочу, чтобы мое приложение получало изображение из URL-адреса с помощью picasso, преобразовывало это изображение в стандартные значки и устанавливало его как значок меню гамбургера в навигационном ящике. У меня есть очень хороший код, который делает это из папки res/mipmap. Но в этом состоянии я должен вручную преобразовать свое изображение в стандартные значки Android (например, Android Asset Studio) и вручную сохранить их в папках mipmap.
Это код, который делает это очень хорошо:
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_farid);
Затем я нахожу код, который делает это, по URL-адресу Пикассо. Этот код работает, но форма значка гамбургера повреждена, очень большая и плохая.
Это код:
{
final Target mTarget = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
Log.d("DEBUG", "onBitmapLoaded");
mBitmapDrawable = new BitmapDrawable(getResources(), bitmap);
}
@Override
public void onBitmapFailed(Exception e, Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable drawable) {
Log.d("DEBUG", "onPrepareLoad");
}
};
Picasso.get().load("http://192.168.1.53:8080/Farid/1.jpg").into(mTarget);
}
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(mBitmapDrawable);
Как я мог решить эту проблему? Я хочу, когда изображение загружается с URL-адреса, преобразуется в стандартные значки Android. Спасибо




Вам нужно вставить setHomeAsUpIndicator внутрь onBitmapLoaded.
{
final Target mTarget = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
Log.d("DEBUG", "onBitmapLoaded");
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, 50, 50, false);
mBitmapDrawable = new BitmapDrawable(getResources(), scaledBitmap);
getSupportActionBar().setHomeAsUpIndicator(mBitmapDrawable);
}
@Override
public void onBitmapFailed(Exception e, Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable drawable) {
Log.d("DEBUG", "onPrepareLoad");
}
};
Picasso.get().load("http://192.168.1.53:8080/Farid/1.jpg").into(mTarget);
}
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Тогда попробуйте масштабировать растровое изображение, я обновил свой ответ.
попробуйте это для указания высоты и ширины изображения
Picasso.with(context)
.load(uri).resize(100, 100).centerCrop()
.placeholder(R.drawable.type_pic)
.error(R.drawable.type_pic)
.into(holder.icon);
Я делаю это, но значок все равно плохой, большой и поврежденный