2013-08-13 7 views
2

Я пытаюсь получить растровый ресурс, используя библиотеку Universal Image Loader. Я переопределен метод onLoadComplete(), как это:Получить растровое изображение от универсального загрузчика изображений

loader.displayImage(thumbnail.get(position), hold.ivThumbnailReflection, options, new ImageLoadingListener() { 

     @Override 
     public void onLoadingStarted(String arg0, View arg1) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onLoadingComplete(String urlLink, View arg1, Bitmap loadedImage) { 

      Log.i("loading complete","loading complete "+loadedImage); 
      hold.ivThumbnail.setImageBitmap(loadedImage); 


     } 

     @Override 
     public void onLoadingCancelled(String arg0, View arg1) { 
      // TODO Auto-generated method stub 

     } 
    }); 

Изображение устанавливается в ivThumbnailReflection зрения, но нет изображения на ivThumbnail зрения. Когда я печатаю объект для loadedImage, я получаю строку в form- [email protected]

Что я делаю неправильно? Помощь Pls.

Edit: опции Инициализировать для ИЮОЖ:

options = new DisplayImageOptions.Builder() 
.cacheOnDisc(true) 
.bitmapConfig(Bitmap.Config.RGB_565) 
.imageScaleType(ImageScaleType.IN_SAMPLE_INT) 
.build(); 
+0

здесь loadedImage ваш растровый, что вам требуется –

+0

Вы уверены, что 'ivThumbnail' назначается и не равно нулю? – Antonio

+0

@Antonio if ** ivThumbnail ** - null, тогда в этой строке кода будет исключение нулевого указателя во время выполнения –

ответ

0

Попробуйте установить растровое изображение в поток пользовательского интерфейса либо с помощью обработчика или с помощью метода runOnUiThread (..) следующим образом:

handler..post(new Runnable() { // handler must be initialized in UI thread 

      @Override 
      public void run() { 
       hold.ivThumbnail.setImageBitmap(loadedImage); 

      } 
}); 

Или попробуйте использовать метод runOnUiThread(), как:

runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       hold.ivThumbnail.setImageBitmap(loadedImage); 
      } 
     }); 
+0

Библиотека должна делать это сама, если обработчик опций назначен правильно. – Antonio

10

W гип вы не только использовать это вместо того, чтобы использовать полный:

imageLoader.displayImage(imageUri, imageView); 

Или использовать этот

imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() 
{ 
    @Override 
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) 
    { 
     // Do whatever you want with Bitmap 
    } 
}); 
+0

Я должен установить изображение дважды. displayImage() действительно показывает мне изображение один раз. Чтобы показать второе изображение, мне нужно растровое изображение – Anirudh

+0

В вышеприведенном втором типе вы получаете ** loadedImage ** в виде растрового изображения, вы можете использовать это для второго изображения –

+0

Я пробовал использовать ** hold.ivThumbnail.setImageBitmap (loadedImage); * *. Но он не работает – Anirudh

0

Убедитесь, что вы создаете параметры в главном потоке/UI.

В противном случае продлить инициализацию вас options с назначением обработчика.

options = new DisplayImageOptions.Builder() 
    .cacheOnDisc(true) 
    .bitmapConfig(Bitmap.Config.RGB_565) 
    .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 
    .handler(yourHandler) 
    .build(); 

, где yourHandler должен быть создан в основном потоке/UI.

4

Попробуйте использовать loadImageSync(String uri). Это дает вам растровое изображение.

Если вы хотите вытяжке из растрового

Drawable d = new BitmapDrawable(getResources(),imageLoader.loadImageSync(url); 
1

Этот код должен помочь вам

public class CreateNotificationActivity extends AppCompatActivity { 

    private NetworkImageView mNetworkImageView; 
    private ImageLoader mImageLoader; 
    Bitmap bit; 

    String url = "http://www.whitegadget.com/attachments/pc-wallpapers/145032d1392006652-nature-wallpaper-nature-picture.jpg"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_create_notification); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     mNetworkImageView = (NetworkImageView) findViewById(R.id.networkImageView1); 

     //bit = BitmapFactory.decodeResource(getResources(), R.drawable.bgd); 

     //Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bgd); 

     mImageLoader = CustomVolleyRequestQueue.getInstance(this.getApplicationContext()) 
       .getImageLoader(); 

     Bitmap bitmap =mImageLoader.get(url, ImageLoader.getImageListener(mNetworkImageView, 
       R.mipmap.ic_launcher, R.drawable.icon)).getBitmap(); 



     Button btn = (Button) findViewById(R.id.button1); 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       createNotification(); 
      } 
     }); 


    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 

     mImageLoader = CustomVolleyRequestQueue.getInstance(this.getApplicationContext()) 
       .getImageLoader(); 

     bit =mImageLoader.get(url, ImageLoader.getImageListener(mNetworkImageView, 
       R.mipmap.ic_launcher, R.drawable.icon)).getBitmap(); 


    } 

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
    public void createNotification() 
    { 



     bit = BitmapFactory.decodeResource(getResources(), R.drawable.bgd); 

     mImageLoader.get(url, new ImageLoader.ImageListener() { 
      @Override 
      public void onResponse(ImageLoader.ImageContainer imageContainer, boolean b) { 
       bit =mImageLoader.get(url, ImageLoader.getImageListener(mNetworkImageView, 
         R.mipmap.ic_launcher, android.R.drawable 
           .ic_dialog_alert)).getBitmap(); 

       Intent intent = new Intent(getApplicationContext(),NotificationReceiverActivity.class); 
       PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), (int) System.currentTimeMillis(), intent, 0); 


       Notification noti = new Notification.Builder(getApplicationContext()) 
         .setContentTitle("Mail Notification") 
         .setContentText("5 new unread messages") 
         .setSmallIcon(R.drawable.bgd) 
         .setStyle(new Notification.BigPictureStyle().bigPicture(bit)) 
         .setAutoCancel(true) 
         .setContentIntent(pIntent).build(); 


       NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

       noti.flags |= Notification.FLAG_AUTO_CANCEL; 

       notificationManager.notify(0,noti); 

       Log.i("LOG>>>>>>>>>>>>>>>>>>>","inside the on response"); 
      } 

      @Override 
      public void onErrorResponse(VolleyError volleyError) { 
       bit = BitmapFactory.decodeResource(getResources(), R.drawable.bgd); 
       Log.i("LOG>>>>>>>>>>>>>>>>>>>","inside the errror response"); 


      } 
     }); 

//  bit =mImageLoader.get(url, ImageLoader.getImageListener(mNetworkImageView, 
//    R.mipmap.ic_launcher, android.R.drawable 
//      .ic_dialog_alert)).getBitmap(); 

    } 

} 
Смежные вопросы