如何使用毕加索从 URL 更改导航抽屉中的汉堡包菜单图标?

How to change hamburger menu icon in navigation drawer from URL by using Picasso?

我希望我的应用程序使用 picasso 接收来自 url 的图像,并将该图像转换为标准图标并将其设置为导航抽屉中的汉堡包菜单图标。我有一个代码可以很好地从 res/mipmap 文件夹中执行此操作。但在这种状态下,我应该使用(例如 Android Asset Studio)手动将我的图像转换为标准 android 图标,并将它们手动存储在 mipmap 文件夹中。

这是非常好的代码:

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_farid);

然后我从 picasso 的 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);