zoukankan      html  css  js  c++  java
  • 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中的方法

  • 相关阅读:
    建造者(Builder)模式
    模板方法模式(Tempalte Method Pattern)
    NIO Socket编程实例
    Java NIO概述
    转:Java中的Clone()方法详解
    调停者(Mediator)模式
    门面(Facade)模式
    struts2中方法拦截器(Interceptor)的中的excludeMethods与includeMethods的理解
    Struts2默认拦截器配置
    struts2的json-default和struts-default的区别
  • 原文地址:https://www.cnblogs.com/stars-one/p/9500685.html
Copyright © 2011-2022 走看看