布局文件:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="200dp" androID:layout_height="wrap_content" androID:background="@androID:color/white" androID:orIEntation="vertical" > <TextVIEw androID:ID="@+ID/Title" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:textcolor="@androID:color/black" /> <TextVIEw androID:ID="@+ID/address" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:textcolor="@androID:color/black" /></linearLyout>
在我的java文件中,我已经膨胀了线性布局并将数据设置为textvIEws然后我正在调用:
private Bitmap convertVIEwToBitmap(linearLayout layout) { layout.measure(MeasureSpec.UnspecIFIED,MeasureSpec.UnspecIFIED); int wIDth = layout.getMeasureDWIDth(); int height = layout.getMeasuredHeight(); //Create the bitmap Bitmap bitmap = Bitmap.createBitmap(wIDth,height,Bitmap.Config.ARGB_8888); //Create a canvas with the specifIEd bitmap to draw into Canvas c = new Canvas(bitmap); //Render this vIEw (and all of its children) to the given Canvas vIEw.draw(c); return bitmap;}
获取位图后,我将其保存到SD卡,如下所示:
private voID saveBitmapTpSdCard(Bitmap bitmap,String filename) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG,40,bytes); file f = new file(Environment.getExternalStorageDirectory() + file.separator + getString(R.string.app_name)); try { if(!f.exists()) { f.mkdirs(); } file imagefile = new file(f,filename + ".png"); fileOutputStream fo = new fileOutputStream(imagefile); fo.write(bytes.toByteArray()); fo.close(); } catch (IOException e) { e.printstacktrace(); }}解决方法 我通过添加这一行来实现它:
vIEw.layout(0,wIDth,height);
在使用Bitmap.createBitmap创建位图之前
总结以上是内存溢出为你收集整理的android – 自定义视图转换为位图返回黑色图像全部内容,希望文章能够帮你解决android – 自定义视图转换为位图返回黑色图像所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)