• Android开发——Drawable与Bitmap知识


    从资源中获得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中的方法

  • 相关阅读:
    面向对象的继承关系体现在数据结构上时,如何表示
    codeforces 584C Marina and Vasya
    codeforces 602A Two Bases
    LA 4329 PingPong
    codeforces 584B Kolya and Tanya
    codeforces 584A Olesya and Rodion
    codeforces 583B Robot's Task
    codeforces 583A Asphalting Roads
    codeforces 581C Developing Skills
    codeforces 581A Vasya the Hipster
  • 原文地址:https://www.cnblogs.com/stars-one/p/9500685.html
Copyright © 2020-2023  润新知