当前位置:   article > 正文

Android View转成Bitmap_android view转bitmap

android view转bitmap

一、View 转 Bitmap的几种情况

1、ScrollView 转成Bitmap

public void convertViewToBitmap(ScrollView scrollView) {
    int h = 0;
    for (int i = 0; i < scrollView.getChildCount(); i++) {
        h += scrollView.getChildAt(i).getHeight();
    }
    // 创建对应大小的bitmap
    posterBitmap = Bitmap.createBitmap(scrollView.getWidth(), h, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(posterBitmap);
    scrollView.draw(canvas);
}

2、RelativeLayout 转成Bitmap

这个View如果没有再布局,则需要设置宽高才能转

  1. private Bitmap createBitmap(RelativeLayout view) {
  2. Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
  3. Canvas c = new Canvas(bitmap);
  4. c.drawColor(Color.WHITE);
  5. view.draw(c);
  6. return bitmap;
  7. }

3、Canvas转成Bitmap

  1. public Bitmap getBitmap() {
  2. int w = UiUtil.dip2px(64), h = UiUtil.dip2px(72);
  3. String mstrTitle = "感受Android带给我们的新体验";
  4. final Bitmap mbmpTest = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
  5. Canvas canvas = new Canvas(mbmpTest);
  6. canvas.drawColor(Color.BLACK);
  7. Paint p = new Paint();
  8. String familyName = "宋体";
  9. Typeface font = Typeface.create(familyName, Typeface.BOLD);
  10. p.setColor(Color.RED);
  11. p.setTypeface(font);
  12. p.setTextSize(22);
  13. canvas.drawText(mstrTitle, 0, 100, p);
  14. Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.mipmap.public_back);
  15. Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.mipmap.public_audio_introduce3);
  16. Bitmap bitmap3 = BitmapFactory.decodeResource(getResources(), R.mipmap.public_praise_s);
  17. canvas.drawBitmap(bitmap1, 0, 0, p);
  18. canvas.drawBitmap(bitmap2, 30, 30, p);
  19. canvas.drawBitmap(bitmap3, 60, 60, p);
  20. bitmap1.recycle();
  21. bitmap2.recycle();
  22. bitmap3.recycle();
  23. bitmap1=null;
  24. bitmap2=null;
  25. bitmap3=null;
  26. return mbmpTest;
  27. }

二、保存图片到相册

  1. /**
  2. * 屏幕截图保存
  3. */
  4. public static void saveScreenShot(View view,BaseActivity activity) {
  5. Bitmap bitmap = BitmapUtil.loadBitmapFromView(view);
  6. String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
  7. OutputStream outStream = null;
  8. String filename;//声明文件名
  9. //以保存时间为文件名
  10. Date date = new Date(System.currentTimeMillis());
  11. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
  12. filename = sdf.format(date);
  13. File file = new File(extStorageDirectory, filename + ".JPEG");//创建文件,第一个参数为路径,第二个参数为文件名
  14. try {
  15. outStream = new FileOutputStream(file);//创建输入流
  16. bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
  17. outStream.close();
  18. //这三行可以实现相册更新
  19. Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
  20. Uri uri = Uri.fromFile(file);
  21. intent.setData(uri);
  22. activity.sendBroadcast(intent);//这个广播的目的就是更新图库,发了这个广播进入相册就可以找到你保存的图片了
  23. activity.runOnUiThread(() -> Toast.makeText(activity, "保存成功", Toast.LENGTH_SHORT).show());
  24. } catch (Exception e) {
  25. activity.runOnUiThread(() -> Toast.makeText(activity, "保存失败", Toast.LENGTH_SHORT).show());
  26. }
  27. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/262149?site
推荐阅读
相关标签
  

闽ICP备14008679号