如何截取具有包含不可见部分的滚动视图的活动的屏幕截图

时间:2017-03-05 11:49:32

标签: android android-activity screenshot android-scrollview

我想截取一个具有滚动视图的活动的屏幕截图。 我能够截取仅包含可见部分的屏幕截图。有没有办法获取更完整的scrollview截图,以便还包括隐形部分?

我需要这方面的帮助,我几天来一直坚持下去。

我已经尝试过网站上相关问题提供的一些方法/解决方案,但这些方法/解决方案都不适用于我。

这是我使用的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="16dp"
android:gravity="center"
android:orientation="vertical">


<Button
    android:id="@+id/capture_screen_shot"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Take ScreenShot" />


<ScrollView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/sc">


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/m">

        <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Data" />

    </LinearLayout>


</ScrollView>


</LinearLayout>

请帮帮我:)。

2 个答案:

答案 0 :(得分:0)

你可能会需要一些第三方,因为我不相信Android会将其作为内置功能。<​​/ p>

查看此文章: http://phandroid.com/2016/07/13/scrolling-screenshots-android/

粘贴重要部分:

  

下载并安装Stitch&amp;从Google Play分享

     

使用您设备的独特按钮组合,捕捉第一个   截图

     

在应用内向下滚动,保留一小部分内容   第一个截图可见并捕获下一个截图

     

重复上一步,直到捕获到您想要的所有内容   出现在屏幕截图中

     

在通知面板上向下滑动,然后点按针迹&amp;分享   通知

     

点击右下角的绿色箭头图标进行保存或共享   你的截图

答案 1 :(得分:0)

我希望这对你有用..来源here

这在技术上不是android截图代码。但是这段代码是将整个布局视图转换为位图

Bitmap bitmap = getBitmapFromView(scrollview, scrollview.getChildAt(0).getHeight(), scrollview.getChildAt(0).getWidth());

//create bitmap from the ScrollView 
private Bitmap getBitmapFromView(View view, int height, int width) {
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    Drawable bgDrawable = view.getBackground();
    if (bgDrawable != null)
        bgDrawable.draw(canvas);
    else
        canvas.drawColor(Color.WHITE);
    view.draw(canvas);
    return bitmap;
}