Android:拍摄屏幕拍摄布局

时间:2016-06-06 03:52:20

标签: android android-layout android-linearlayout android-screen

我正在尝试创建一个 PhotoFrame 应用,因为我有一个框架,我从图库添加一个图像到该框架。这个框架是主要布局中的一个布局我正在尝试为这种布局拍摄屏幕。

Layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/root"
tools:context="com.ccs.photoframe.MainActivity"
android:orientation="vertical"
android:weightSum="1">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".1"
    android:orientation="vertical">
    <Button
        android:id="@+id/btn_select"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="Select Photo"/>

</LinearLayout>

<LinearLayout
    android:id="@+id/layout_frame"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".8"
    android:background="@drawable/photo_frame"
    android:orientation="vertical"
    >
    <ImageView
        android:id="@+id/img_save_photo"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone"
       />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="50dp"
        android:layout_marginRight="50dp"
        android:layout_marginBottom="70dp"
        >
    <ImageView
        android:id="@+id/ivImage"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="matrix"/>

    </FrameLayout>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".1"
    android:orientation="horizontal">
    <Button
        android:id="@+id/btn_save_photo"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Save Photo"/>
</LinearLayout>

我正在尝试在 LinearLayout&#34; layout_frame&#34;

中进行屏幕拍摄

我试过......

 btn_save_photo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            View v1 = layout_frame.getRootView();
            v1.setDrawingCacheEnabled(true);
            Bitmap bm = v1.getDrawingCache();
            BitmapDrawable bitmapDrawable = new BitmapDrawable(bm);
            img_save_photo = (ImageView) findViewById(R.id.img_save_photo);
            img_save_photo.setVisibility(View.VISIBLE);
            img_save_photo.setBackgroundDrawable(bitmapDrawable);
        }
    });

但这会拍摄整个布局的屏幕。

有没有办法拍摄特定位置的屏幕截图。

提前致谢:)

3 个答案:

答案 0 :(得分:0)

是的,您可以获得任何此类视图的屏幕截图。

{{1}}

答案 1 :(得分:0)

试试这个方法

public static Bitmap getBitmapFromView(View view) {
        Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(),
                view.getHeight(), Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(returnedBitmap);
        Drawable bgDrawable = view.getBackground();
        if (bgDrawable != null)
            bgDrawable.draw(canvas);
        else
            canvas.drawColor(Color.WHITE);
        view.draw(canvas);
        return returnedBitmap;
    }

答案 2 :(得分:-1)

是的,你可以这样做:

LinearLayout mlinearlaoytfrme=(LinearLayout)findViewById(R.id.layout_frame);
Bitmap mBItmap=takeScreenshotReceipt();
img_save_photo = (ImageView) findViewById(R.id.img_save_photo);
img_save_photo.setVisibility(View.VISIBLE);
img_save_photo.setBackgroundDrawable(bitmapDrawable);

private Bitmap takeScreenshotReceipt()
{
    View v1 = getRootView().findViewById(R.id.layout_frame);
    v1.setDrawingCacheEnabled(true);
    return v1.getDrawingCache();
}