首页 > 代码库 > android脚步---将layout和其输出一起保存成图片

android脚步---将layout和其输出一起保存成图片

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;

   

android脚步---将layout和其输出一起保存成图片