我遇到一个问题,我通过调用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>