定义的View生成图片文件

定义的View生成图片并且保存起来,参考网上的方法,并且做了修改,亲测有效

//保存自定义view的截图
private void saveCustomViewBitmap() {
    //获取自定义view图片的大小
    Bitmap temBitmap = Bitmap.createBitmap(mImageTouchView.getWidth(), mImageTouchView.getHeight(), Bitmap.Config.ARGB_8888);
    //使用Canvas,调用自定义view控件的onDraw方法,绘制图片
    Canvas canvas = new Canvas(temBitmap);
    canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));//canvas加抗锯齿
    mImageTouchView.draw(canvas); 
    //输出到sd卡    
    File file = new File(Environment.getExternalStorageDirectory()+"/myshot.png"); 
    try {        
    if (!file.exists()) {   
            file.createNewFile(); 
    }        
    FileOutputStream foStream = new FileOutputStream(file); 
    temBitmap.compress(Bitmap.CompressFormat.PNG, 100, foStream); 
    foStream.flush(); 
    foStream.close(); 
    Log.i("aaa", "保存成功"); 
    } catch (Exception e) {
        Log.i("aaa", e.toString()); 
    }   
}

在View内部截屏生成图片

/** * 截屏当前视图保存自定义view的截图 */
public void saveCustomViewBitmap(){
    //获取自定义view图片的大小
    Bitmap temBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
    //使用Canvas,调用自定义view控件的onDraw方法,绘制图片
    Canvas canvas = new Canvas(temBitmap);
    canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));//canvas加抗锯齿
    draw(canvas);
    File file = new File(Environment.getExternalStorageDirectory()+"/2.png" );    
    try {
        if (!file.exists()) {
            file.createNewFile();
        }
        FileOutputStream foStream = new FileOutputStream(file);
        temBitmap.compress(Bitmap.CompressFormat.PNG, 100, foStream);
        foStream.flush();
        foStream.close();
        Log.i("aaa", "保存成功");
    } catch (Exception e) {
        Log.i("aaa", e.toString());
    }
}

你可能感兴趣的:(定义的View生成图片文件)