android – 自定义视图转换为位图返回黑色图像

android – 自定义视图转换为位图返回黑色图像,第1张

概述我需要创建一个自定义视图,然后将其保存到png文件到sdcard.现在我在SD卡中获得黑色图像.我无法在代码中找出问题.任何人都可以帮助我. 布局文件: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android 我需要创建一个自定义视图,然后将其保存到png文件到sdcard.现在我在SD卡中获得黑色图像.我无法在代码中找出问题.任何人都可以帮助我.

布局文件:

<?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 – 自定义视图转换为位图返回黑色图像所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存