public void convertViewToBitmap(View view) {
//View view = getLayoutInflater().inflate(R.layout.test_layout, null);
view.setDrawingCacheEnabled(true);
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache();
bitmap = view.getDrawingCache(); Date date = new Date(System.currentTimeMillis()); Storage.writeBitmapFile("/sdcard/DCIM/UUCamera/test"+date.toLocaleString()+".jpeg", bitmap); // Testbt.setVisibility(View.VISIBLE);
view.destroyDrawingCache(); }
输入layout对应的vIEW然后进行操作,保存时应用了date,这样每张图片的保存名不同。
应该要注意的是view.measure和 view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());对layout重新进行计算高度和宽度,所以layout务必要封装好,不然会出现移位
以下面layout为例
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
> <LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/screen"
android:background="@drawable/test_bg"
android:gravity="center_horizontal"
android:orientation="vertical"> <RelativeLayout
android:id="@+id/uupic"
android:layout_width="304dp"
android:layout_height="380dp"
android:layout_marginTop="90dp"
android:background="@drawable/test_photo_bg"
android:gravity="center"
> <ImageView
android:id="@+id/myuupic"
android:layout_width="264dp"
android:layout_height="352dp"/>
</RelativeLayout> <RelativeLayout
android:id="@+id/lovepic"
android:layout_height="116dp"
android:layout_width="match_parent"
> <TextView
android:id="@+id/agetext"
android:layout_width="120dp"
android:layout_height="116dp"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="@dimen/age_text_size"
android:background="@drawable/test_age_bg"/> <ImageView
android:id="@+id/genderpic"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_toRightOf="@+id/agetext"
android:layout_alignParentBottom="true"
android:layout_marginLeft="-30dp"
android:scaleType="fitEnd"/>
<ImageView
android:id="@+id/testimg"
android:layout_width="222dp"
android:layout_height="86dp"
android:layout_toRightOf="@+id/agetext"
android:layout_alignParentBottom="true"
/>
</RelativeLayout>
</LinearLayout>
<!-- share and save layout --> <RelativeLayout
android:id="@+id/testbt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_marginLeft="24dp"
android:layout_marginRight="24dp"
android:layout_marginBottom="20dp"
> <Button
android:id="@+id/save"
android:layout_width="148dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="@drawable/testbtstyle"
android:text="保存"
android:textColor="#ff4c6c"
android:textSize="20sp" /> <Button
android:id="@+id/share"
android:layout_width="148dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@drawable/testbtstyle"
android:text="分享"
android:textColor="#ff4c6c"
android:textSize="20sp" /> </RelativeLayout> </RelativeLayout>
封装成两部分上边显示,下边隐藏
引用时
mScreenShot = mTestView.findViewById(R.id.screen); public void convertViewToBitmap(View view) {
//View view = getLayoutInflater().inflate(R.layout.test_layout, null);
view.setDrawingCacheEnabled(true);
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache();
bitmap = view.getDrawingCache(); Date date = new Date(System.currentTimeMillis()); Storage.writeBitmapFile("/sdcard/DCIM/UUCamera/test"+date.toLocaleString()+".jpeg", bitmap); // FileOutputStream fos = new FileOutputStream("/sdcard/DCIM/UUCamera/test.png");
//将Bitmap对象中的图像数据压缩成png格式的图像数据,并将这些数据保存在test.png文件中
// bitmap.compress(CompressFormat.PNG, 100, fos);
//关闭文件输出流
// Testbt.setVisibility(View.VISIBLE);
view.destroyDrawingCache();
if(!ispicsave()) {
return;
} } case R.id.save:
LogMan.e(TAG,"save..."); if(mScreenShot!=null){
// Testbt.setVisibility(View.INVISIBLE);
convertViewToBitmap(mScreenShot);
}
// Testbt.setVisibility(View.VISIBLE);
break;