在Android中采用特定布局的“屏幕截图”

在Android中采用特定布局的“屏幕截图”,第1张

概述我有两个密切相关的主要问题.我从程序化的角度来看这些问题. (1) – 我想截取SPECIFIC布局的内容,即嵌套在LinearLayout中的ScrollView. (2) – 由于ScrollView具有溢出屏幕的内容(因此可以进行滚动),我该如何确保屏幕截图包含屏幕上不可见的元素? 这是我使用的当前代码块.它的工作是拍摄截图,但只能用于整个屏幕.即使是R.id.boss是ScrollView 我有两个密切相关的主要问题.我从程序化的角度来看这些问题.

(1) – 我想截取SPECIFIC布局的内容,即嵌套在linearLayout中的ScrollVIEw.

(2) – 由于ScrollVIEw具有溢出屏幕的内容(因此可以进行滚动),我该如何确保屏幕截图包含屏幕上不可见的元素?

这是我使用的当前代码块.它的工作是拍摄截图,但只能用于整个屏幕.即使是R.ID.boss是ScrollVIEw的ID,而不是主要的linearLayout.

VIEw vIEw = findVIEwByID(R.ID.boss);VIEw v = vIEw.getRootVIEw();// this does not seem to make a differencev.setDrawingCacheEnabled(true);                                                v.measure(MeasureSpec.makeMeasureSpec(0,MeasureSpec.UnspecIFIED),MeasureSpec.makeMeasureSpec(0,MeasureSpec.UnspecIFIED));v.layout(0,v.getMeasureDWIDth(),v.getMeasuredHeight());    v.buildDrawingCache(true);Bitmap b = Bitmap.createBitmap(u.getDrawingCache());             v.setDrawingCacheEnabled(false);

提前致谢.

编辑:

我犯了一些错误.我使用了R.ID.boss这是错误的资源.我现在可以单独浏览scrollvIEw的屏幕截图,而不是屏幕外的部分.

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:ID="@+ID/boss"androID:layout_wIDth="fill_parent"androID:layout_height="fill_parent"androID:layout_gravity="top"androID:orIEntation="vertical" >    <TextVIEw    androID:layout_wIDth="fill_parent"    androID:layout_height="wrap_content"    androID:text="F"    androID:textAppearance="?androID:attr/textAppearanceMedium" />    <TextVIEw        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:text="Analyze via image URL"        androID:textAppearance="?androID:attr/textAppearanceSmall" />        <linearLayout            androID:layout_wIDth="fill_parent"            androID:layout_height="wrap_content"             >                        <EditText                            androID:ID="@+ID/mUrl"                            androID:layout_wIDth="fill_parent"                            androID:layout_height="wrap_content"                            androID:layout_weight="0.7"                            androID:text="http://" >                            <requestFocus />                        </EditText>                        <ImageVIEw                            androID:ID="@+ID/call"                            androID:layout_wIDth="75dp"                            androID:layout_height="50dp"                            androID:layout_weight="0.3"                            androID:text="ABC"                            androID:src="@drawable/run" />        </linearLayout>     <TextVIEw         androID:layout_wIDth="fill_parent"         androID:layout_height="wrap_content"         androID:text="ABC"         androID:textAppearance="?androID:attr/textAppearanceSmall" />     <linearLayout         androID:layout_wIDth="fill_parent"         androID:layout_height="wrap_content" >         <EditText             androID:ID="@+ID/filepath"             androID:layout_wIDth="fill_parent"             androID:layout_height="wrap_content"             androID:layout_weight="0.55" />         <ImageVIEw             androID:ID="@+ID/cam"             androID:layout_wIDth="75dp"             androID:layout_height="50dp"             androID:layout_weight="0.15"             androID:src="@drawable/cam" />         <ImageVIEw             androID:ID="@+ID/browse"             androID:layout_wIDth="75dp"             androID:layout_height="50dp"             androID:layout_weight="0.15"             androID:src="@drawable/folder"             androID:text="B" />         <ImageVIEw             androID:ID="@+ID/upload"             androID:layout_wIDth="75dp"             androID:layout_height="50dp"             androID:layout_weight="0.15"             androID:src="@drawable/run"             androID:text="A" />     </linearLayout>     <linearLayout         androID:ID="@+ID/baba"         androID:layout_wIDth="fill_parent"         androID:layout_height="wrap_content"         androID:orIEntation="vertical" >         <ScrollVIEw             androID:ID="@+ID/scroll"             androID:layout_wIDth="fill_parent"             androID:layout_height="150dp"             androID:layout_weight="0.7" >             <linearLayout                 androID:layout_wIDth="fill_parent"                 androID:layout_height="186dp"                 androID:orIEntation="vertical" >                 <ImageVIEw                     androID:ID="@+ID/pic"                     androID:layout_wIDth="fill_parent"                     androID:layout_height="fill_parent"                     androID:layout_weight="1" />                 <TextVIEw                     androID:layout_wIDth="wrap_content"                     androID:layout_height="wrap_content"                     androID:layout_weight="1"                     androID:text="Facial recognition"                     androID:textAppearance="?androID:attr/textAppearanceMedium" />                 <TextVIEw                     androID:ID="@+ID/text3"                     androID:layout_wIDth="wrap_content"                     androID:layout_height="wrap_content"                     androID:layout_weight="1"                     androID:text="Small Text"                     androID:textAppearance="?androID:attr/textAppearanceSmall" />                 <TextVIEw                     androID:ID="@+ID/avmarwe"                     androID:layout_wIDth="wrap_content"                     androID:layout_height="wrap_content"                     androID:layout_weight="1"                     androID:text="Gender and age"                     androID:textAppearance="?androID:attr/textAppearanceMedium" />                 <TextVIEw                     androID:ID="@+ID/text1"                     androID:layout_wIDth="wrap_content"                     androID:layout_height="wrap_content"                     androID:layout_weight="1"                     androID:text="Small Text"                     androID:textAppearance="?androID:attr/textAppearanceSmall" />                 <TextVIEw                     androID:ID="@+ID/skahasd"                     androID:layout_wIDth="wrap_content"                     androID:layout_height="wrap_content"                     androID:layout_weight="1"                     androID:text="Expression and mood"                     androID:textAppearance="?androID:attr/textAppearanceMedium" />                 <TextVIEw                     androID:ID="@+ID/text2"                     androID:layout_wIDth="wrap_content"                     androID:layout_height="wrap_content"                     androID:layout_weight="1"                     androID:text="Small Text"                     androID:textAppearance="?androID:attr/textAppearanceSmall" />                 <TextVIEw                     androID:ID="@+ID/dsfsfs"                     androID:layout_wIDth="wrap_content"                     androID:layout_height="wrap_content"                     androID:layout_weight="1"                     androID:text="Celebrity Facial Match"                     androID:textAppearance="?androID:attr/textAppearanceMedium" />                 <TextVIEw                     androID:ID="@+ID/text4"                     androID:layout_wIDth="wrap_content"                     androID:layout_height="wrap_content"                     androID:layout_weight="1"                     androID:text="Small Text"                     androID:textAppearance="?androID:attr/textAppearanceSmall" />             </linearLayout>         </ScrollVIEw>     </linearLayout>    <linearLayout        androID:ID="@+ID/linearLayout1"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:layout_gravity="bottom" >        <button            androID:ID="@+ID/c"            androID:layout_wIDth="fill_parent"            androID:layout_height="50dp"            androID:layout_weight="0.7"            androID:text="" />        <button            androID:ID="@+ID/share"            androID:layout_wIDth="70dp"            androID:layout_height="50dp"            androID:layout_weight="0.3"            androID:text="" />    </linearLayout></linearLayout>
解决方法 感谢你们,我终于发现了什么是错的.

查看v = vIEw.getRootVIEw();不应该被使用,因为它会调用我不想要的根视图.我错误地认为这没有什么不同,因为我输入错误的资源ID.

MeasureSpec以某种方式没有给出良好的宽度和高度的描述.所以我最后使用另一种方法:

...ScrollVIEw z = (ScrollVIEw) findVIEwByID(R.ID.scroll);int totalHeight = z.getChildAt(0).getHeight();int totalWIDth = z.getChildAt(0).getWIDth();u.layout(0,totalWIDth,totalHeight);...

由于ScrollVIEw的总高度可以由单个子元素确定.

进行这些更改后,我现在可以截取一个嵌套的ScrollVIEw及其所有内容的屏幕截图.对于任何有兴趣的人来说,这里是代码块,包括保存位图:

VIEw u = findVIEwByID(R.ID.scroll);            u.setDrawingCacheEnabled(true);                                                            ScrollVIEw z = (ScrollVIEw) findVIEwByID(R.ID.scroll);            int totalHeight = z.getChildAt(0).getHeight();            int totalWIDth = z.getChildAt(0).getWIDth();            u.layout(0,totalHeight);                u.buildDrawingCache(true);            Bitmap b = Bitmap.createBitmap(u.getDrawingCache());                         u.setDrawingCacheEnabled(false);            //Save bitmap            String extr = Environment.getExternalStorageDirectory().toString() +   file.separator + "Folder";            String filename = new SimpleDateFormat("yyyyMMddhhmm'_report.jpg'").format(new Date());            file myPath = new file(extr,filename);            fileOutputStream fos = null;            try {                fos = new fileOutputStream(myPath);                b.compress(Bitmap.CompressFormat.JPEG,100,fos);                fos.flush();                fos.close();                MediaStore.Images.Media.insertimage(getContentResolver(),b,"Screen","screen");            }catch (fileNotFoundException e) {                // Todo auto-generated catch block                e.printstacktrace();            } catch (Exception e) {                // Todo auto-generated catch block                e.printstacktrace();            }
总结

以上是内存溢出为你收集整理的在Android中采用特定布局的“屏幕截图”全部内容,希望文章能够帮你解决在Android中采用特定布局的“屏幕截图”所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存