2016-09-17 47 views
0

截图我有我的布局XML格式如下:采取嵌套的RelativeLayout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical"> 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/ 
    res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:background="#3fb399" 
     tools:context="com.sparrowred.cardsender.customizeCard"> 

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/ 
     res/android" 
      android:id="@+id/relativeViewPrint" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:orientation="vertical" 
      android:weightSum="1" 
      android:layout_above="@+id/button_send" 
      android:layout_alignParentStart="true" 
      android:layout_below="@+id/add_button"> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="180dp" 
       android:id="@+id/textView_wish_card" 
       android:textAlignment="center" 
       android:textSize="20sp" 
       android:layout_weight="0.06" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentStart="true" /> 

      <TextView 
       android:layout_width="149dp" 
       android:layout_height="112dp" 
       android:background="@drawable/image0" 
       android:layout_gravity="center" 
       android:alpha="0.4" 
       android:id="@+id/textView_wish_cardBack" 
       android:layout_weight="0.75" 
       android:layout_alignTop="@+id/textView_wish_card" 
       android:layout_alignParentStart="true" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentEnd="true" /> 

     </RelativeLayout> 

    </RelativeLayout> 

</LinearLayout> 

两个textviews重叠。一个拥有一个图像(具有透明度),另一个拥有一个颜色和一个文本(这就是为什么我将它们放在一个RelativeLayout上并重叠)。我想获得这个RelativeLayout的截图。我用这种方法,但它不起作用。请帮忙吗?

private void ScreenShot2(){ 
    Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    RTLout.measure(View.MeasureSpec.makeMeasureSpec(0, 
    size.x), View.MeasureSpec.makeMeasureSpec(0, size.y)); 
    RTLout.layout(0, 0, RTLout.getWidth(), RTLout.getHeight()); 
    RTLout.setDrawingCacheEnabled(true); 
    RTLout.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); 
    Bitmap b = Bitmap.createBitmap(RTLout.getDrawingCache()); 
    RTLout.setDrawingCacheEnabled(false); 
    if(b !=null) { 
     try { 
      String extr = Environment.getExternalStorageDirectory(). 
      getAbsolutePath().toString() + File.separator + "Pictures" 
      + File.separator + "Screenshots"; 
      File dir = new File(extr); 
      if (!dir.exists()) 
       dir.mkdirs(); 
      String fileName = 
      new SimpleDateFormat("yyyyMMddhhmm'_report.jpg'"). 
      format(new Date()); 
      File myPath = new File(dir, 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) { 
       e.printStackTrace(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     }catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

此方法的一些代码我发现了一个混合...... 09-17 16:54:12.452:W /系统(4926):类加载器中引用了未知的路径:/数据/应用程序/ com.sparrowred.cardsender-1/lib/arm64 09-17 16:54:12.670:W/art(4926):Android 4.1之前,方法android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter( android.graphics.PorterDuffColorFilter,android.content.res.ColorStateList,android.graphics.PorterDuff $ Mode)将不正确地覆盖android.graphics.drawable.Drawable中的包私有方法 09-17 16:54:12.796:I/System(4926):core_booster,getBoosterConfig = false 09-17 16:54:12.869:I/Sys (4926):core_booster,getBoosterConfig = false 09-17 16:54:13.232:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:13.246:E/HAL(4926):load:id = gralloc!= hmi-> id = gralloc 09-17 16:54:13.315:E/HAL(4926):load:id = gralloc!= hmi-> id = gralloc 09-17 16:54:13.315: I/OpenGLRenderer(4926):初始化EGL,版本1.4 09-17 16:54:13.322:W/OpenGLRenderer(4926):load:so =/system/lib64/libhwuibp.so 09-17 16:54:13.322 :W/OpenGLRenderer(4926):dlopen失败:库“/system/lib64/libhwuibp.so”找不到 09-17 16:54:13.322:W/OpenGLRenderer(4926):初始化二进制程序高速缓存:加载失败 09 -17 16:54:13.322:E/HAL(4926):load:id = gralloc!= hmi-> id = gralloc 09-17 16:54:13.456:I/HwSec ImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:17.773:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:18.189:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09 -17 16:54:20.100:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:20.195:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:20.218:I/(4926):core_booster,getBoosterConfig = false 09-17 16: airplane_mode_on已从android.provider.Settings.System移至android.provider.Settings.Global,并返回只读值。 09-17 16:54:20.655:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:20.842:I/System(4926):core_booster,getBoosterConfig = false 09-17 16:54: 20.906:I/System(4926):core_booster,getBoosterConfig = false 09-17 16:54:21.452:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:22.137:I/HwSecImmHelper(4926) :mSecurityInputMethodService为空 09-17 16:54:22.137:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:22.238:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度 09 -17 16:54:22.238:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度 09-17 16:54:25.969:I/Hw SecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:26.647:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:27.986:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09 -17 16:54:28。118:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:28.128:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:28.158:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:28.158:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:28.193:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能有一个零长度 09-17 16:54:28.193:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度 09-17 16:54:29.363:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:30.134: I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:30.142:I/HwSecImmHelper(4926):mSecurityInputMet hodService为空 09-17 16:54:30.170:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:30.170:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54 :30.209:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能具有零长度 09-17 16:54:30.209:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能具有零长度 09-17 16:54:30.814 :I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:31.279:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:32.477:I/HwSecImmHelper(4926):mSecurityInputMethodService is null 09-17 16:54:32.587:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:32.596:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:32.627:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:32.627: (4926):mSecurityInputMethodService为空 09-17 16:54:32.656:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度 09-17 16:54:32.656:E/SpannableStringBuilder(4926) :SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度 09-17 16:54:33.375:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:33.756:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09 -17 16:54:34.710:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:34.836:I/HwSecImmHelper(4926 ):mSecurityInputMethodService为空 09-17 16:54:34.853:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:34.883:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16 :54:34.884:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:34.912:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度 09-17 16:54:34.912:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度 09-17 16:54:35.525:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:35.626:I/HwSecImmHelper(4926) mSecurityInputMethodService为空 09-17 16:54:35.632:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度Cann不具有零长度 09-17 16:54:35.632:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能具有零长度 09-17 16:54:36.980:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能具有零长度 09-17 16:54:36.980:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能有零长度 09-17 16:54:37.201:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能有零长度 09-17 16:54:37.201:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度 09-17 16:54:37.419:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能具有零长度 09-17 16:54:37。419:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能具有零长度 09-17 16:54:39.064:E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能具有零长度 09-17 16:54:39.064: E/SpannableStringBuilder(4926):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度 09-17 16:54:39.835:I/HwSecImmHelper(4926):mSecurityInputMethodService为null 09-17 16:54:41.707:I/HwSecImmHelper(4926) :mSecurityInputMethodService为空 09-17 16:54:45.142:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:46.0​​84:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16: 54:47.246:I/HwSecImmHelper(4926):mSecurityInputMethodService为空 09-17 16:54:47.395:I/art(4926) System.exit调用,状态:0 09-17 16:54:47.395:I/AndroidRuntime(4926):VM退出,结果代码为0,清除跳过。

希望这是正确的

回答

0

看来你不要getDrawingCache将其添加到之前的位图上调用布局buildDrawingCache方法。

做这样的事情(这个代码是没有你使用的其它选项):

RelativeLayout RTLout= (RelativeLayout)findViewById(R.id.relativeViewPrint); 
RTLout.setDrawingCacheEnabled(true); 
RTLout.buildDrawingCache(); 
Bitmap bm = view.getDrawingCache(); 
+0

谢谢,但它并没有对我的工作。 –

+0

在这个过程中你有没有遇到任何异常,或者只是简单地保存一个空文件? – abbath

+0

我只得到这个信息:I/HwSecImmHelper:mSecurityInputMethodService为空 这是我第一次尝试通过android编程....:/ –