Calvin's Tech Space

          成于堅忍,毀于浮躁

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

           

          Android縮放drawable

          一、  相關概念

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

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

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

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

          二、  步驟

          1.        drawable畫到位圖對象上

          2.        對位圖對象做縮放(或旋轉等)操作

          3.        把位圖再轉換成drawable

          三、 示例
                   static Bitmap drawableToBitmap(Drawable drawable) // drawable 
          轉換成bitmap
                   {
                             int width = drawable.getIntrinsicWidth();   // 
          drawable的長寬
                             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);     // 
          建立對應bitmap
                             Canvas canvas = new Canvas(bitmap);         // 
          建立對應bitmap的畫布
                             drawable.setBounds(0, 0, width, height);
                             drawable.draw(canvas);      // 
          drawable內容畫到畫布中
                             return bitmap;
                   }

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

          posted on 2010-06-03 19:04 calvin 閱讀(3718) 評論(0)  編輯  收藏 所屬分類: Android
          主站蜘蛛池模板: 武汉市| 兴安盟| 九江县| 义马市| 乌兰浩特市| 临海市| 梁平县| 安康市| 应用必备| 廉江市| 南溪县| 福泉市| 新巴尔虎右旗| 永昌县| 元江| 桃园县| 玛纳斯县| 博乐市| 宜良县| 开封市| 贵溪市| 太原市| 南溪县| 建湖县| 板桥市| 增城市| 通州市| 秀山| 太康县| 乐东| 利津县| 九龙县| 和龙市| 登封市| 边坝县| 玛纳斯县| 锦州市| 磴口县| 政和县| 晋江市| 遂平县|