最近项目中要用到将ListView以图片形式保存本地并即时通讯发送出去,下面是我的实现方法
package com.telewas.yunxing.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* @author liwh
* @date 2018/11/16
*/
public class ListViewToBitmap {
private ListView mListView;
private ListAdapter mAdapter;
private int childCount;
// 每页的项目数, 默认情况下,只是一页,但是极有可能导致oom异常
private int countPerPage = Integer.MAX_VALUE;
// 默认情况下,只是保存在文件中,不保存在内存中
private boolean inMemory = false;
private InMemoryCallBack inMemoryCallBack;
private boolean inFile = true;
private InFileCallBack inFileCallBack;
private Handler uiThreadHandler;
private static final int MEMORY_HANDLED = 1;
private static final int FILE_HANDLED = 2;
private List<Bitmap> memoryDatas = new ArrayList<>();
private List<String> filePaths = new ArrayList<>();
// 图片文件目录
private File filesDir;
private ListViewToBitmap(ListView listView) {
this(listView, Integer.MAX_VALUE);
}
private ListViewToBitmap(ListView listView, int count_per_page) {
mListView = listView;
mAdapter = mListView.getAdapter();
childCount = mAdapter