Calvin's Tech Space

          成于堅(jiān)忍,毀于浮躁

             :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理

           

          Android縮放drawable

          一、  相關(guān)概念

          1.        Drawable就是一個(gè)可畫的對(duì)象,其可能是一張位圖(BitmapDrawable),也可能是一個(gè)圖形(ShapeDrawable),還有可能是一個(gè)圖層(LayerDrawable),我們根據(jù)畫圖的需求,創(chuàng)建相應(yīng)的可畫對(duì)象

          2.        Canvas畫布,繪制的目的區(qū)域,用于繪圖

          3.        Bitmap位圖,用于圖的處理

          4.        Matrix矩陣,此例中用于操作圖片

          二、  步驟

          1.        drawable畫到位圖對(duì)象上

          2.        對(duì)位圖對(duì)象做縮放(或旋轉(zhuǎn)等)操作

          3.        把位圖再轉(zhuǎn)換成drawable

          三、 示例
                   static Bitmap drawableToBitmap(Drawable drawable) // drawable 
          轉(zhuǎn)換成bitmap
                   {
                             int width = drawable.getIntrinsicWidth();   // 
          drawable的長(zhǎng)寬
                             int height = drawable.getIntrinsicHeight();
                           Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888:Bitmap.Config.RGB_565;         //
          drawable的顏色格式
                             Bitmap bitmap = Bitmap.createBitmap(width, height, config);     // 
          建立對(duì)應(yīng)bitmap
                             Canvas canvas = new Canvas(bitmap);         // 
          建立對(duì)應(yīng)bitmap的畫布
                             drawable.setBounds(0, 0, width, height);
                             drawable.draw(canvas);      // 
          drawable內(nèi)容畫到畫布中
                             return bitmap;
                   }

                   static Drawable zoomDrawable(Drawable drawable, int w, int h)
                   {
                             int width = drawable.getIntrinsicWidth();
                             int height= drawable.getIntrinsicHeight();
                             Bitmap oldbmp = drawableToBitmap(drawable); // drawable
          轉(zhuǎn)換成bitmap
                             Matrix matrix = new Matrix();   // 
          創(chuàng)建操作圖片用的Matrix對(duì)象
                             float scaleWidth = ((float)w / width);   // 
          計(jì)算縮放比例
                             float scaleHeight = ((float)h / height);
                             matrix.postScale(scaleWidth, scaleHeight);         // 
          設(shè)置縮放比例
                             Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true);       // 
          建立新的bitmap,其內(nèi)容是對(duì)原bitmap的縮放后的圖
                             return new BitmapDrawable(newbmp);       // 
          bitmap轉(zhuǎn)換成drawable并返回
                   }
          }

          posted on 2010-06-03 19:04 calvin 閱讀(3716) 評(píng)論(0)  編輯  收藏 所屬分類: Android
          主站蜘蛛池模板: 万山特区| 九龙县| 闻喜县| 云林县| 海伦市| 敖汉旗| 宁城县| 扶余县| 玛沁县| 习水县| 绩溪县| 项城市| 巴里| 元阳县| 淮滨县| 唐海县| 绥阳县| 隆德县| 开封县| 凤山县| 延庆县| 廊坊市| 漳州市| 田东县| 都江堰市| 叶城县| 错那县| 桑日县| 会理县| 易门县| 太白县| 昭通市| 治县。| 浦北县| 来安县| 邮箱| 修武县| 常州市| 台南县| 惠来县| 北宁市|