2017-10-13 11 views
0

캔버스에서 비트 맵 이미지를 그리기 때문에 글라이드 라이브러리를 사용하여 비트 맵을 가져 오는 방법은 무엇입니까? 글라이드에서만 ImageView에 이미지를 추가 할 수 있습니다.Glide를 사용하여 세련된/원하는 비트 맵을 캔버스에 그릴 수 있습니까?

세련된 비트 맵을 글라이드로 가져 와서 캔버스로 그릴 수있는 방법이 있습니까?

현재 내가

Bitmap bitmapImage = BitmapFactory.decodeResource(getResources(), wallpaper_image_id); 

를 사용하고 난 어쩌면 목표는 당신이 필요로하는 무엇을이 오류

java.lang.OutOfMemoryError: Failed to allocate a 43776012 byte allocation with 16767008 free bytes and 40MB until OOM 

답변

0

를 얻을. 보십시오 Here보십시오.

Glide.with(yourApplicationContext)) 
    .load(youUrl) 
    .asBitmap() 
    .into(new SimpleTarget<Bitmap>(myWidth, myHeight) { 
     @Override 
     public void onResourceReady(Bitmap bitmap, GlideAnimation anim) { 
      // Do something with bitmap here. 
     } 
    }; 

onResourceReady 안에는 원하는 위치에 비트 맵을로드 할 준비가되어 있습니다.

편집

앱 충돌 당신은 UI 스레드에서 코드를 실행해야하기 때문이다. 이것을 시도하십시오 :

// Get a handler that can be used to post to the main thread 
Handler mainHandler = new Handler(context.getMainLooper()); 

Runnable myRunnable = new Runnable() { 
    @Override 
    public void run() {....} // Your code goes inside the run method 
}; 
mainHandler.post(myRunnable); 
+0

감사합니다. @Samuele하지만 지금은 FATALException을 제공합니다. 'java.lang.IllegalArgumentException : 주 스레드에서이 메서드를 호출해야합니다. ' –

+0

음, 분명히 잘못된 스레드에서이 메서드를 호출하고 있습니다! ahahah 코드를 어디에서 호출하고 있습니까? 기본적으로 UI 스레드에서 호출해야합니다. –

+0

여기에서'public class SnowThread는 내 벽지에 끊임없이 눈을 띄도록 만든 스레드 {}를 확장합니다. 그리고 나는 그것의'run()'메소드에서 호출하고있다. 거기에 있어야합니다. –