• 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;

       

  • 相关阅读:
    nodejs内存控制
    nodejs的Buffer解析
    基于Yeoman实现自定义脚手架
    基于node实现一个简单的脚手架工具(node控制台交互项目)
    nodeJs入门的第一节课
    手动封装一个node命令集工具
    [转载] 如何掌握所有的程序语言 —— 王垠
    Kubernetes:服务与负载均衡
    Zabbix 6.0:原生高可用(HA)方案部署
    Kubernetes:健康检查
  • 原文地址:https://www.cnblogs.com/Anita9002/p/4143434.html
Copyright © 2020-2023  润新知