无法拍摄正确的屏幕截图
我目前正在开发一个应用程序,它将截取屏幕截图,然后将其作为附件通过电子邮件发送。我想要以下“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();
}
}
I am currently working on an app which will take screenshot and then email them as an attachment. I want a screenshot of the following "LinearLayout"...
However, something very weird is happening when this function is called. Instead of taking a screenshot of the whole layout, just about 1/10th of the screenshot is taken (like just the half of the first column). Can anyone please suggest what is wrong with the code here?
<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>
And here is the JAVA function which is supposed to take the screenshot and save it to a file called "log" in the SD Card.
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();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
删除这些行再试一次,
remove these line an try again,