拍摄ScrollView Android的完整屏幕截图 [英] Take a Full Screenshot of ScrollView Android

查看:81
本文介绍了拍摄ScrollView Android的完整屏幕截图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

的确,整个SO中都有解决方案和问题已得到回答.所以,这是到目前为止我尝试过的!

Indeed, there are solutions and questions has been answered all over the SO. So, here is what I have tried so far!

Scroll_Layout.xml

Scroll_Layout.xml

<ScrollView
    android:id="@+id/scrollView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    tools:layout_constraintTop_creator="1"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    android:layout_marginStart="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    android:layout_marginEnd="8dp"
    app:layout_constraintRight_toRightOf="parent"
    android:layout_marginTop="8dp"
    tools:layout_constraintLeft_creator="1"
    android:layout_marginBottom="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:id="@+id/txtAddress"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="ADDRESS"
            android:textSize="40px"
            android:textColor="@android:color/black"/>
        <EditText
            android:id="@+id/edtName"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="Enter Address"
            android:text="lorem emisidjsi damsodks"/>
        <TextView
            android:id="@+id/txtPostal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="POSTAL CODE"
            android:textSize="40px"
            android:layout_marginTop="10dp"
            android:textColor="@android:color/black"/>
        <EditText
            android:id="@+id/edtPostal"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="Enter Postal Code"
            android:text="123456"/>

        <TextView
            android:id="@+id/txtCity"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="CITY / GNR"
            android:textColor="@android:color/black"
            android:textSize="40px" />

        <EditText
            android:id="@+id/edtCity"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Loresm"
            android:hint="Enter City"/>
        <TextView
            android:id="@+id/txtBnr"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="BNR"
            android:textSize="40px"
            android:layout_marginTop="10dp"
            android:textColor="@android:color/black"/>
        <EditText
            android:id="@+id/edtBnr"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="Enter BNR"
            android:text="1122"/>
        <TextView
            android:id="@+id/txtSize"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="SIZE"
            android:textSize="40px"
            android:layout_marginTop="10dp"
            android:textColor="@android:color/black"/>
        <EditText
            android:id="@+id/edtSize"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="Enter Size"
            android:text="50 x 400 x 200"/>
        <TextView
            android:id="@+id/txtRental"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="RENTAL"
            android:textSize="40px"
            android:layout_marginTop="10dp"
            android:textColor="@android:color/black"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="3"
            android:layout_marginTop="5dp"
            android:orientation="horizontal">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary"/>
                <TextView
                    android:id="@+id/txtFull"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Full"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary"/>
                <TextView
                    android:id="@+id/txtPartial"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Partial"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary"/>
                <TextView
                    android:id="@+id/txtRentalNo"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="No"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>

        </LinearLayout>

        <TextView
            android:id="@+id/txtBasement"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="BASEMENT"
            android:textSize="40px"
            android:layout_marginTop="10dp"
            android:textColor="@android:color/black"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="3"
            android:layout_marginTop="5dp">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary" />
                <TextView
                    android:id="@+id/txtFurnished"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Furnished"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary"/>
                <TextView
                    android:id="@+id/txtUnFurnished"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Un-Furnished"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary"/>
                <TextView
                    android:id="@+id/txtBasementNo"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="No"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>
        </LinearLayout>

        <TextView
            android:id="@+id/txtType"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TYPE"
            android:textSize="40px"
            android:layout_marginTop="10dp"
            android:textColor="@android:color/black"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="3"
            android:layout_marginTop="5dp">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary"/>
                <TextView
                    android:id="@+id/txtDetached"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Detached"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary"/>
                <TextView
                    android:id="@+id/txtSemiDetached"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Semi-Detached"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary"/>
                <TextView
                    android:id="@+id/txtTownHouse"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Town-House"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>
        </LinearLayout>

        <android.support.v7.widget.AppCompatSpinner
            android:layout_width="match_parent"
            android:layout_height="35dp"
            android:layout_marginTop="20dp"
            android:entries="@array/arr_add_buildings">
        </android.support.v7.widget.AppCompatSpinner>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="2"
            android:layout_marginTop="5dp">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical"
                android:paddingRight="20dp">
                <TextView
                    android:id="@+id/txtYear"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="YEAR"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"/>
                <EditText
                    android:id="@+id/edtYear"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:hint="Enter Year"
                    android:text="2011"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <TextView
                    android:id="@+id/txtBldSize"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="SIZE"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"/>
                <EditText
                    android:id="@+id/edtBdlSize"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:hint="Enter Size"
                    android:text="20 x 20"/>
            </LinearLayout>
        </LinearLayout>

        <android.support.v7.widget.AppCompatSpinner
            android:layout_width="match_parent"
            android:layout_height="35dp"
            android:layout_marginTop="5dp"
            android:entries="@array/arr_deductible">
        </android.support.v7.widget.AppCompatSpinner>

        <TextView
            android:id="@+id/txtCoverage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="COVERAGE"
            android:textSize="40px"
            android:layout_marginTop="10dp"
            android:textColor="@android:color/black"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="2"
            android:layout_marginTop="5dp">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary"/>
                <TextView
                    android:id="@+id/txtNormal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Normal"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:buttonTint="@color/colorPrimary"/>
                <TextView
                    android:id="@+id/txtSuper"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Super"
                    android:textSize="40px"
                    android:layout_marginTop="10dp"
                    android:textColor="@android:color/black"
                    android:textAlignment="center"/>

            </LinearLayout>

        </LinearLayout>

        <TextView
            android:id="@+id/txtComments"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="COMMENTS"
            android:textColor="@android:color/black"
            android:textSize="40px" />

        <EditText
            android:id="@+id/edtComments"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="white walls"
            android:hint="Enter Comments"/>

        <Button
            android:id="@+id/save"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:layout_marginTop="20dp"
            android:text="SAVE"
            android:textSize="50px"
            android:textColor="@android:color/white"
            android:backgroundTint="@color/colorPrimary" />

    </LinearLayout>

</ScrollView>

解决方案,到目前为止,我已经尝试过!

Solution, I have tried so far!

方法1:

public Bitmap takeScreenshot() {
    View rootView = getWindow().getDecorView().findViewById(R.id.scrollView); //Instead of ScrollView I have taken Main view to but no luck
    rootView.setDrawingCacheEnabled(true);
    return rootView.getDrawingCache();
}

方法2:

public Bitmap takeScreenshot() {
    View rootView = getWindow().getDecorView().findViewById(R.id.constraintLayout); //Here also I have taken ScrollView too.
    Bitmap b = Bitmap.createBitmap(rootView.getWidth() , rootView.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    rootView.layout(0, 0, rootView.getLayoutParams().width, rootView.getLayoutParams().height);
    rootView.draw(c);
        return b;
}

方法3:

public Bitmap takeScreenshot() {
    ScrollView iv = (ScrollView) findViewById(R.id.scrollView);
    Bitmap bitmap = Bitmap.createBitmap(
            iv.getChildAt(0).getWidth(),
            iv.getChildAt(0).getHeight(),
            Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(bitmap);
    iv.getChildAt(0).draw(c);
    return bitmap;
}

在上述所有方法中,我都有黑色"背景屏幕截图.除了这些以外,还有其他解决方案吗?或者在截取屏幕截图时我犯了任何错误?

In all the above method, I am having "Black" background screenshot. Apart from these do anyone have other solutions or am I making any mistakes in taking Screenshot?

推荐答案

我希望这对您有用..源

I hope this is work for you.. source here

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;
}

这篇关于拍摄ScrollView Android的完整屏幕截图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆