(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中采用特定布局的“屏幕截图”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)