java - 如何使用 Picasso 从 URL 更改抽屉导航中的汉堡菜单图标?

标签 java android navigation-drawer picasso hamburger-menu

我希望我的应用程序使用 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);

关于java - 如何使用 Picasso 从 URL 更改抽屉导航中的汉堡菜单图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57115258/

相关文章:

java - 使用组合

android - 如何在 Activity 中进行无限循环

java - 在每个方法中添加 throws 签名

java - Android onClick() 在 ImageView 动画时无法正常工作

java - 如果多次使用,InputStream 不起作用

android - (Android) 无法从同一包中的另一个 Activity 调用一个 Activity

java - 如何不间断地显示我的导航栏内容?

使用抽屉导航滚动Android工具栏

Android fragment - 指定的 child 已经有一个 parent 。您必须先对 child 的 parent 调用 removeView()

java - 无论应用程序状态如何,如何在后台下载文件?