0

Я разрабатываю приложение для Android, которое генерирует изображение. Перед созданием изображения пользователь перетаскивает представления на RelativeLayout. Затем мне нужно преобразовать этот относительный макет с дочерними представлениями в растровое изображение. Поэтому я динамически добавляю представление в относительный макет, а затем конвертирую его в растровое изображение. Но мой код дает мне ошибку.Невозможно преобразовать viewgroup в растровое изображение в Android

Я добавляю вид на относительное расположение, как этот

relativeLayout.add(imageView); 
relativeLayout.add(textView); 
//other steps and so on 

Это моя функция для преобразования RelativeLayout в Bitmap

private Bitmap convertTemplateViewToBitmap(RelativeLayout v) 
    { 
     v.measure(View.MeasureSpec.makeMeasureSpec(v.getLayoutParams().width, View.MeasureSpec.EXACTLY), 
       View.MeasureSpec.makeMeasureSpec(v.getLayoutParams().height, View.MeasureSpec.EXACTLY)); 
     v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); 

     Bitmap bitmap = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.RGB_565); 
     Canvas canvas = new Canvas(bitmap); 
     v.draw(canvas); 
     return bitmap; 
    } 

Так я называю эту кнопку в кнопку мыши проходит относительно макета в качестве параметра , Когда я нажимаю, это вызывает ошибку.

Это сообщение об ошибке в LogCat

неустранимым: Основной процесса: memegenerator.waiyanhein.com.memegenerator, ПИД: 19993 java.lang.IllegalArgumentException: ширина и высота должна быть> 0 в android.graphics.Bitmap.createBitmap (Bitmap.java:829) на android.graphics.Bitmap.createBitmap (Bitmap.java:808) на android.graphics.Bitmap.createBitmap (Bitmap.java:775) на memegenerator.waiyanhein.com.memegenerator.CreateMemeActivity.convertTemplateViewToBitmap (CreateMemeActivity.java:898) на memegenerator.waiyanhein.com.memegenerator.CreateMemeActivity.saveBottomItemClick (CreateMemeActivity.java:285) на memegenerator.waiyanhein.com.memegenerator .CreateMemeActivity.access $ 800 (CreateMemeActivity.java:51) на memegenerator.waiyanhein.com.memegenerator.CreateMemeActivity $ 2.onTabSelected (CreateMemeActivity.java:251) на com.roughike.bottombar.BottomBar.updateSelectedTab (BottomBar.java : 717) на com.roughike.bottombar.BottomBar.handleC lick (BottomBar.java:685) на com.roughike.bottombar.BottomBar.onClick (BottomBar.java:656) на android.view.View.performClick (View.java:5204) на android.view.View $ PerformClick.run (View.java:21153) на android.os.Handler.handleCallback (Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper. loop (Looper.java:148) at android.app.ActivityThread.main (ActivityThread.java:5417) по адресу java.lang.reflect.Method.invoke (собственный метод) по адресу com .android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)

Что случилось с моим код? Как преобразовать группу представлений с дочерними элементами в растровое изображение в Android?

ответ

3

вот мое решение:

public static Bitmap getBitmapFromView(View view) { 
    Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(returnedBitmap); 
    Drawable bgDrawable =view.getBackground(); 
    if (bgDrawable!=null) 
     bgDrawable.draw(canvas); 
    else 
     canvas.drawColor(Color.WHITE); 
    view.draw(canvas); 
    return returnedBitmap; 
} 

Наслаждайтесь :)

+0

Wow ого-го ого-го. : D. Спасибо, брат. Это так прекрасно работает. :) –

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