private class GetBitmapRunnable implements Runnable {
View mView = null;
Config mConfig = null;
public GetBitmapRunnable(View view, Config config) {
this.mView = view;
this.mConfig = config;
}
public void run() {
if (mView == null)
return;
try {
mBitmap = Bitmap.createBitmap(mView.getWidth(), mView
.getHeight(), mConfig == null ? Config.RGB_565
: mConfig);
Canvas canvas = new Canvas(mBitmap);
canvas.drawColor(Color.WHITE);
mView.draw(canvas);
} catch (Throwable throwable) {
if (mBitmap != null) {
mBitmap.recycle();
}
throwable.printStackTrace();
}
}
public Bitmap mBitmap;
}
private Bitmap getBitmap(View v, Config config) {
GetBitmapRunnable runnable = new GetBitmapRunnable(v, config);
getActivity().runOnUiThread(runnable);// 目的是确保runnable运行在UI线程,可以用其他方法
return runnable.mBitmap;
}
getBitmap 函数中 getActivity().runOnUiThread 可以替换成其他工具方法,目的是runnable 可以运行在主线程
然后就可以在任何线程里将view变换成图片了。