如何获取相对布局或framelayout的屏幕截图?

时间:2017-02-13 10:52:26

标签: android

请查找xml以供参考。我在一个相对布局中有2个imageview。 我想要relativelayout的位图。 现在我可以使用下面的代码获取位图

但是没有让两个imageview图像只获得一个图像位图

请为此提出任何合适的解决方案。

<FrameLayout
        android:id="@+id/linImageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/linRecyclerAndAdsView">

        <RelativeLayout
            android:id="@+id/relImageView"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView xmlns:wsv="http://schemas.android.com/apk/res-auto"
                android:id="@+id/iv_stickerview"
                android:scaleType="fitXY"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_centerInParent="true" />

            <FrameLayout
                android:id="@+id/vg_canvas"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                >

                <ImageView
                    android:id="@+id/fetchimage"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:adjustViewBounds="true"
                    android:scaleType="fitXY"
                    android:src="@drawable/profile" />

            </FrameLayout>
        </RelativeLayout>
    </FrameLayout>

这是我的java代码,这就是我如何传递位图。

                relativeLayout.setDrawingCacheEnabled(true);
                relativeLayout.buildDrawingCache();
                bitmap = relativeLayout.getDrawingCache();


                imagePath = Other.saveImage(bitmap);

                Intent newIntent = new Intent(ActivityApp.this, com.aviary.android.feather.sdk.FeatherActivity.class);
                newIntent.setData(Uri.parse(imagePath));
                newIntent.putExtra(Constants.EXTRA_IN_API_KEY_SECRET, "-------------");
                startActivityForResult(newIntent, 1);

2 个答案:

答案 0 :(得分:0)

首先将您的位图转换为ByteArray并传递如下

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

Intent i1 = new Intent(this, com.aviary.android.feather.sdk.FeatherActivity.class.class);
i1.putExtra("image",byteArray);

并获取下面的其他活动

byte[] byteArray = getIntent().getByteArrayExtra("image");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

答案 1 :(得分:0)

您可以直接通过Intent发送位图对象。

  relativeLayout.setDrawingCacheEnabled(true);
            relativeLayout.buildDrawingCache();
            bitmap = relativeLayout.getDrawingCache();

            Intent newIntent = new Intent(StickerActivity.this, com.aviary.android.feather.sdk.FeatherActivity.class);
            newIntent.putExtra("image",bitmap);
            newIntent.putExtra(Constants.EXTRA_IN_API_KEY_SECRET, "e79f03f8602642c9a3e692d2f54df669");
            startActivityForResult(newIntent, 1);

用于获取图像

Intent intent = getIntent();
            Bitmap bitmap = (Bitmap) intent.getParcelableExtra("image")