2011-10-17 77 views
0

我目前正在開發一個應用程序,它會截取屏幕截圖,然後將它們作爲附件發送給他們。我想要一個以下「LinearLayout」的屏幕截圖...不能正確截圖

但是,調用此函數時會發生一些非常奇怪的現象。而不是截取整個佈局的截圖,截圖只有截圖的1/10(就像第一列的一半)。任何人都可以請建議這裏的代碼有什麼問題嗎?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tableview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:weightSum="1" 
    android:orientation="vertical" > 

<TableLayout android:padding="5dp" 
     android:layout_width="match_parent" 
     android:id="@+id/TransactionLog"  
     android:layout_height="wrap_content"> 

     <TableRow android:layout_height="wrap_content"> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="Date" 
         android:layout_width="0dip" 
         android:id="@+id/dateLabel" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="Details" 
         android:layout_width="0dip" 
         android:id="@+id/detailsLabel" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="Debit" 
         android:layout_width="0dip" 
         android:id="@+id/debitLabel" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="Credit" 
         android:layout_width="0dip" 
         android:id="@+id/creditLabel" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="Balance" 
         android:layout_width="0dip" 
         android:id="@+id/balanceLabel" /> 
     </TableRow> 

     <TableRow android:layout_height="wrap_content"> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="5 October 2011" 
         android:layout_width="0dip" 
         android:id="@+id/date1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="CoCoa Shop" 
         android:layout_width="0dip" 
         android:id="@+id/details1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="123.53" 
         android:layout_width="0dip" 
         android:id="@+id/debit1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="0.00" 
         android:layout_width="0dip" 
         android:id="@+id/credit1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="6729.32" 
         android:layout_width="0dip" 
         android:id="@+id/balance1" /> 
     </TableRow> 

     <TableRow android:layout_height="wrap_content"> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="4 October 2011" 
         android:layout_width="0dip" 
         android:id="@+id/date1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="Best Sell" 
         android:layout_width="0dip" 
         android:id="@+id/details1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="900.53" 
         android:layout_width="0dip" 
         android:id="@+id/debit1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="0.00" 
         android:layout_width="0dip" 
         android:id="@+id/credit1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="6729.32" 
         android:layout_width="0dip" 
         android:id="@+id/balance1" /> 
     </TableRow> 

     <TableRow android:layout_height="wrap_content"> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="4 October 2011" 
         android:layout_width="0dip" 
         android:id="@+id/date1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="Deposit" 
         android:layout_width="0dip" 
         android:id="@+id/details1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="0.00" 
         android:layout_width="0dip" 
         android:id="@+id/debit1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="9500.00" 
         android:layout_width="0dip" 
         android:id="@+id/credit1" /> 
      <TextView android:layout_margin="4dip" 
         android:layout_weight="1" 
         android:padding="10dip" 
         android:layout_height="wrap_content" 
         android:text="6729.32" 
         android:layout_width="0dip" 
         android:id="@+id/balance1" /> 
     </TableRow> 

</TableLayout> 

</LinearLayout> 

這裏是JAVA功能,它應該截屏並將其保存到SD卡中的「log」文件中。

 private void getScreen() 
     { 
      View content = findViewById(R.id.tableview); 
      content.setDrawingCacheEnabled(true); 

      content.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 

      content.layout(0, 0, content.getMeasuredWidth(), content.getMeasuredHeight()); 

      content.buildDrawingCache(true); 

      Bitmap bitmap = Bitmap.createBitmap(content.getDrawingCache()); 
      content.setDrawingCacheEnabled(false); // clear drawing cache 

      File file = new File(Environment.getExternalStorageDirectory() + "/log.png"); 

      try 
      { 
       file.createNewFile(); 
       FileOutputStream ostream = new FileOutputStream(file); 
       bitmap.compress(CompressFormat.PNG, 100, ostream); 
       ostream.close(); 

      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 

     } 
+1

是否content.getMeasuredWidth()和content.getMeasuredHeight()給你正確的尺寸? – Martyn

+0

恐怕我不知道如何檢查... – BurninatorDor

+0

轉儲他們的日誌,看看他們是否有意義? – EightyEight

回答

1

刪除這些線的再次嘗試,

content.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
content.layout(0, 0, content.getMeasuredWidth(), content.getMeasuredHeight());