2017-07-29 1 views
0

J'utilise heinrichreimersoftware'Material tiroir bibliothèque pour mon projet. Pour charger une image à partir de l'URL dans l'élément Drawer, j'utilise glide.Comment charger l'icône/avatar d'uri dans Draweritem dans Android

final ImageView image = new ImageView(this); 

    new AsyncTask<Void, Void, Void>() { 
     @Override 
     protected Void doInBackground(Void... params) { 
      Looper.prepare(); 
      try { 
       theBitmap = Glide. 
         with(MainActivity.this). 
         load(FirebaseAuth.getInstance().getCurrentUser().getPhotoUrl()). 
         asBitmap(). 
         into(-1,-1). 
         get(); 
      } catch (final ExecutionException e) { 
       Log.e(TAG, e.getMessage()); 
      } catch (final InterruptedException e) { 
       Log.e(TAG, e.getMessage()); 
      } 
      return null; 
     } 
     @Override 
     protected void onPostExecute(Void dummy) { 
      if (null != theBitmap) { 
       // The full bitmap should be available here 
       image.setImageBitmap(theBitmap); 
       Log.d(TAG, "Image loaded"); 
      }; 
     } 
    }.execute(); 




    drawer.addItem(new DrawerItem() 
      .setImage(this,theBitmap) 
      .setTextPrimary(getString(R.string.profile)) 

    ); 

Mais ce n'est pas charger l'image, Toute aide sera appréciée

+0

voir ma réponse monsieur J'espère que cela va vous aider. –

Répondre

0

utilisation ci-dessous le code pour le chargement de l'image dans ImageView;

Glide.with(context) 
.load(FirebaseAuth.getInstance().getCurrentUser().getPhotoUrl()) 
.into(imageView); 
1

Tout d'abord, inutile d'utiliser la tâche asynchrone. Utilisez le code ci-dessous si vous souhaitez définir bitmap.

// If you want to save bitmap in bitmap object the use this object. 
Bitmap theBitmap; 

Glide.with(context) 
      .load("Your URL") 
      .asBitmap() 
      .into(new SimpleTarget<Bitmap>() 
      { 
       @Override 
       public void onResourceReady(Bitmap res, GlideAnimation<? super Bitmap> animation) 
       { 
        // assign res(Bitmap object) to your local theBitmap(Bitmap object) 
        theBitmap = res; 
        // Set bitmap to your imageview 
        yourImageView.setImageBitmap(res); 
       } 
      }); 

Si vous venez de définir directement l'image sur votre ImageView, procédez comme suit. Maintenant que vous avez dit que vous voulez l'utiliser dans le menu Tiroir, vous pouvez faire quelque chose comme ça.

Drawable myDrawable = new BitmapDrawable(getResources(), theBitmap); 
drawer.addItem(new DrawerItem() 
        .setRoundedImage(myDrawable) 
        .setTextPrimary(getString(R.string.lorem_ipsum_short)) 
        .setTextSecondary(getString(R.string.lorem_ipsum_long)) 
); 
+0

D'accord, comme vous pouvez le voir, je souhaite définir cet objet bitmap sur l'icône de l'élément de tiroir. Alors, comment puis-je utiliser le code ci-dessus pour travailler avec un élément de tiroir? –

+0

@neerajgiri Lors de l'appel de la méthode onResourceReady, vous pouvez enregistrer votre bitmap à l'intérieur de celui-ci et en utilisant ce bitmap, vous pouvez le définir dans n'importe lequel de votre imageView. Ou si vous ne voulez pas faire cela, alors définissez directement votre imageview de l'élément de tiroir dans onResourceReady il va définir votre image dans votre imageview. –

+0

@neerajgiri voir ma réponse mise à jour monsieur. –