我希望我的应用程序使用毕加索从 url 接收图像,并将此图像转换为标准图标并将其设置为导航抽屉中的汉堡菜单图标。我有一个代码可以从res/mipmap文件夹很好地做到这一点。但是在这种状态下,我应该使用(例如Android资产工作室)手动将我的图像转换为标准的android图标,并手动将它们存储在mipmap文件夹中。
这是做得很好的代码:
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_farid);
然后,我从毕加索的网址中找到执行此操作的代码。此代码有效,但汉堡图标形状已损坏,非常大且糟糕。
这是代码:
{
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);