从视图创建的位图上的额外填充

时间:2014-10-01 15:13:18

标签: android bitmap

我遇到一个问题,我通过调用view.getDrawingCache();从View创建一个位图这个位图几乎是完美的但是当我将位图设置为ImageView时,有一些添加的“空格”或“填充”到位图的顶部和底部。

以下是我捕捉视图的方式。有问题的视图在其上添加了许多不同的视图以产生一种堆叠效果。

有没有办法设置位图捕获的界限?或者删除添加的填充

我找到了什么 由于“fill_parent”属性和“android:scaleType:fitCenter”,似乎添加了额外的填充。当我将scaleType更改为fitXY时,图像不再具有填充。我唯一的问题是它拉伸图像并且不能保持所需的宽高比。

    view.setDrawingCacheEnabled(true);
    view.buildDrawingCache(true);
    Bitmap bitmap = view.getDrawingCache();

这是我要调用的用于保存位图的代码

private void saveToInternalStorage(Bitmap bitmapImage) {
    ContextWrapper cw = new ContextWrapper(this);
    File root = new File(Environment.getExternalStorageDirectory()
            + File.separator + "Pictures" + File.separator + "P"
            + File.separator);

    if (!root.exists()) {
        root.mkdirs();
        Log.e("ROOT", "DIRECTORY DOES NOT EXIST");
    } else {
        Log.e("ROOT", "DIRECTORY EXISTS");
        File sdImageMainDirectory = new File(root, "p_"
                + (System.currentTimeMillis() / 1000L) + ".png");

        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(sdImageMainDirectory);

            bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            Intent intent = new Intent(
                    Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            intent.setData(Uri.fromFile(sdImageMainDirectory));
            this.sendBroadcast(intent);
            Log.e("DIRECTORY", "" + sdImageMainDirectory.getAbsolutePath());
        } catch (NullPointerException e) {

        } finally {
            Intent shareIntent = new Intent(this, SubmissionActivity.class);
            shareIntent.putExtra("URI", Uri.fromFile(sdImageMainDirectory));
            startActivity(shareIntent);
            finish();
        }
        // change activity to something to share the picture

    }

}

包含ImageView的布局的XML

        <FrameLayout
        android:id="@+id/root_layout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" >

        <ImageView
            android:id="@+id/imageViewEdit"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center"
            android:scaleType="fitCenter"
            android:src="@drawable/abc_ab_solid_dark_holo" />
    </FrameLayout>

0 个答案:

没有答案