Android中自定义View的研究(三) -- 获得Bitmap的三种方法

本文转自:http://lovewf.blog.51cto.com/1723922/724114  

  是不是开始摩拳擦掌了,哈哈,有感觉了吧,有感觉了就加油,开始下一步学习,一步一步始终会学到东西,这章不解释,下面有完整注释

BitmapFactory解析图片

      // --> 使用BitmapFactory解析图片
           public void myUseBitmapFactory(Canvas canvas){
           // 定义画笔
              Paint paint = new Paint();
           // 获取资源流
              Resources rec = getResources();
              InputStream in = rec.openRawResource(R.drawable.haha);
           // 设置图片
              Bitmap bitmap =BitmapFactory.decodeStream(in);
              System.out.println("---w---"+w);
            System.out.println("---h---"+h);
         System.out.println(
"--- --------------- ---"); // 绘制图片 canvas.drawBitmap(bitmap, 0,20, paint); }

BitmapDrawable解析图片

      // --> 使用BitmapDrawable解析图片
           public void myUseBitmapDrawable(Canvas canvas){
           // 定义画笔
              Paint paint = new Paint();
           // 获得资源
              Resources rec = getResources();
           // BitmapDrawable
              BitmapDrawable bitmapDrawable = (BitmapDrawable) rec.getDrawable(R.drawable.haha);
           // 得到Bitmap
              Bitmap bitmap = bitmapDrawable.getBitmap();
              System.out.println("---w---"+w);
              System.out.println("---h---"+h);
              System.out.println("--- --------------- ---");
           // 在画板上绘制图片
              canvas.drawBitmap(bitmap, 20,120,paint);
           }

InputStreamBitmapDrawable绘制

          // --> 使用InputStream和BitmapDrawable解析图片
           public void myUseInputStreamandBitmapDrawable(Canvas canvas){
           // 定义画笔
              Paint paint = new Paint();
           // 获得资源
              Resources rec = getResources();
           // InputStream得到资源流
              InputStream in = rec.openRawResource(R.drawable.haha);
           // BitmapDrawable 解析数据流
              BitmapDrawable bitmapDrawable =  new BitmapDrawable(in);
           // 得到图片
              Bitmap bitmap = bitmapDrawable.getBitmap();
              System.out.println("---w---"+w);
              System.out.println("---h---"+h);
              System.out.println("--- --------------- ---");
           // 绘制图片
              canvas.drawBitmap(bitmap, 100, 100,paint);
           }

个人发现:

发现其中代码myUseBitmapDrawable(Canvas canvas)中,

BitmapDrawable bitmapDrawable = (BitmapDrawable)res.getDrawable(R.drawable.haha);

其中数据类型转换,导致图片的宽度和高度发生了变化,原来的图片高度为250,宽度为:180

posted @ 2013-06-25 16:10  似水流云  阅读(862)  评论(0编辑  收藏  举报