无法拍摄正确的屏幕截图

发布于 2024-12-10 12:45:11 字数 9457 浏览 0 评论 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();
            }

        }

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空城缀染半城烟沙 2024-12-17 12:45:11

删除这些行再试一次,

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

remove these line an try again,

content.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
content.layout(0, 0, content.getMeasuredWidth(), content.getMeasuredHeight()); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文