Android开发——Drawable与Bitmap知识

本文为作者原创,允许转载,不过请在文章开头明显处注明链接和出处!!! 谢谢配合~
作者:stars-one
链接:https://www.cnblogs.com/stars-one/p/9500685.html

本篇大约有1272个字,阅读预计需要1.59分钟


从资源中获得drawable

Drawable drawable = getResources().getDrawable(R.drawable.xxx);

drawable转换bitmapdrawble

BitmapDrawable bitmapdrawable = (BitmapDrawable) getResources().getDrawable(R.drawable.xxx);

drawble转换为bitmap

  • 第一种方式

    实际上,先是把drawable转换为bitmapdrawable,再将bitmapdrawable转换为bitmap,比较简单

    Bitmap bitmap = bitmapdrawable.getBitmap();

  • 第二种方式

    需要重新绘图,较为麻烦,不过有些需要重绘,大多数都可以使用第一种,所以,还是推荐第一种(懒癌患者推荐)

      public static Bitmap drawableToBitmap(Drawable drawable) {   
          // 取 drawable 的长宽   
          int w = drawable.getIntrinsicWidth();   
          int h = drawable.getIntrinsicHeight();   
          // 取 drawable 的颜色格式   
          Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888   
                  : Bitmap.Config.RGB_565;   
          // 建立对应 bitmap   
          Bitmap bitmap = Bitmap.createBitmap(w, h, config);   
          // 建立对应 bitmap 的画布   
          Canvas canvas = new Canvas(bitmap);   
          drawable.setBounds(0, 0, w, h);   
          // 把 drawable 内容画到画布中   
          drawable.draw(canvas);   
          return bitmap;
      }   
    

bitmap转换为drawable

  • 第一种方式

      Drawable drawable = new BitmapDrawable(bitmap); 
    
  • 第二种方式

      BitmapDrawable bd= new BitmapDrawable(getResource(), bitmap); 
    

    PS:bitmapdrawable是drawable的子类,可以直接使用drawable中的方法

posted @   Stars-one  阅读(1205)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2017-08-19 Android 开场动画
点击右上角即可分享
微信分享提示