2014-02-12 4 views
0

Попытки взять скриншот динамического ListView, вот мой кодКак принять скриншот общей ListView в андроиде

public static Bitmap getWholeListViewItemsToBitmap() { 

ListView listview = MyActivity.mFocusedListView; 
ListAdapter adapter = listview.getAdapter(); 
int itemscount  = adapter.getCount(); 
int allitemsheight = 0; 
List<Bitmap> bmps = new ArrayList<Bitmap>(); 

for (int i = 0; i < itemscount; i++) { 

    View childView  = adapter.getView(i, null, listview); 
    childView.measure(MeasureSpec.makeMeasureSpec(listview.getWidth(), MeasureSpec.EXACTLY), 
      MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 

    childView.layout(0, 0, childView.getMeasuredWidth(), childView.getMeasuredHeight()); 
    childView.setDrawingCacheEnabled(true); 
    childView.buildDrawingCache(); 
    bmps.add(childView.getDrawingCache()); 
    allitemsheight+=childView.getMeasuredHeight(); 
} 

Bitmap bigbitmap = Bitmap.createBitmap(listview.getMeasuredWidth(), allitemsheight, Bitmap.Config.ARGB_8888); 
Canvas bigcanvas = new Canvas(bigbitmap); 

Paint paint = new Paint(); 
int iHeight = 0; 

for (int i = 0; i < bmps.size(); i++) { 
    Bitmap bmp = bmps.get(i); 
    bigcanvas.drawBitmap(bmp, 0, iHeight, paint); 
    iHeight+=bmp.getHeight(); 

    bmp.recycle(); 
    bmp=null; 
} 


    return bigbitmap; 
} 

здесь я получаю NullPointer исключения (listview.getAdapter()) может кто-нибудь предложить мне, как исправить эту проблему. this also

+0

Здесь я объявил mFocusedListView как глобальную переменную и инициализировал inCreate(), получив id, теперь я обращаюсь к нему из метода экземпляра выше, здесь он не получает идентификатор списка .help me here –

ответ

0

не может действительно видеть код, но ваш список имеет значение null.

ListView listview = MyActivity.mFocusedListView; 

ListView listview = (ListView)findById(R.id.YOURLISTVIEW); 

вот почему. отправьте свой xml, чтобы мы могли видеть, что такое идентификатор.

+0

http: // codehare. io/6LlWO –

+0

Вот xml-файл http://codeshare.io/O7o7L –

+0

Здесь я получаю listview в своей деятельности с этим id.so, что я могу отображать listview. –

0

Несмотря на то, что невозможно сделать снимок экрана с еще не визуализированным контентом (например, внеэкранные элементы ListView), вы можете сделать несколько снимков экрана, прокрутить содержимое между каждым снимком, а затем сшить изображения. Вот это инструмент, который позволяет автоматизировать это для вас: https://github.com/PGSSoft/scrollscreenshot

illustration

Отказ от ответственности: Я автор этого инструмента, он был опубликован my employer. Запросы функций приветствуются.

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