麥子學(xué)院Android開發(fā)教程Bitmap和Drawable用法詳解_第1頁
麥子學(xué)院Android開發(fā)教程Bitmap和Drawable用法詳解_第2頁
麥子學(xué)院Android開發(fā)教程Bitmap和Drawable用法詳解_第3頁
麥子學(xué)院Android開發(fā)教程Bitmap和Drawable用法詳解_第4頁
麥子學(xué)院Android開發(fā)教程Bitmap和Drawable用法詳解_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、本文章來給大家介紹Android中Bitmap和Drawable用法詳解,有需要了解的同學(xué)可進入?yún)⒖肌R?、相關(guān)概念1、Drawable就是一個可畫的對象,其可能是一張位圖(BitmapDrawable,也可能是一個圖形(ShapeDrawable,還有可能是一個圖層(LayerDrawable,我們根據(jù)畫圖的需求,創(chuàng)建相應(yīng)的可畫對象2、Canvas畫布,繪圖的目的區(qū)域,用于繪圖3、Bitmap位圖,用于圖的處理4、Matrix矩陣二、Bitmap1、從資源中獲取BitmapResources res = getResources(;2、Bitmap byte代碼如下public byte Bi

2、tmap2Bytes(Bitmap bm ByteArrayOutputStream baos = new ByteArrayOutputStream(;return baos.toByteArray(;3、byte Bitmap代碼如下public Bitmap Bytes2Bimap(byte b if (b.length != 0 return BitmapFactory.decodeByteArray(b, 0, b.length; else return null;Bitmap縮放代碼如下public static Bitmap zoomBitmap(Bitmap bitmap, i

3、nt width, int height int w = bitmap.getWidth(;int h = bitmap.getHeight(;Matrix matrix = new Matrix(;float scaleWidth = (float width / w;float scaleHeight = (float height / h;matrix.postScale(scaleWidth, scaleHeight;Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true; return newbmp;5

4、、將Drawable轉(zhuǎn)化為Bitmap代碼如下public static Bitmap drawableToBitmap(Drawable drawable / 取 drawable 的長寬int w = drawable.getIntrinsicWidth(;int h = drawable.getIntrinsicHeight(;/ 取 drawable 的顏色格式/ 建立對應(yīng) bitmapBitmap bitmap = Bitmap.createBitmap(w, h, config;/ 建立對應(yīng) bitmap 的畫布Canvas canvas = new Canvas(bitmap;d

5、rawable.setBounds(0, 0, w, h;/ 把 drawable 內(nèi)容畫到畫布中drawable.draw(canvas;return bitmap;public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx int w = bitmap.getWidth(;int h = bitmap.getHeight(;Bitmap output = Bitmap.createBitmap(w, h, Config.ARGB_8888;Canvas canvas = new Canvas(output

6、;final int color = 0xff424242;final Paint paint = new Paint(;final Rect rect = new Rect(0, 0, w, h;final RectF rectF = new RectF(rect;paint.setAntiAlias(true;canvas.drawARGB(0, 0, 0, 0;paint.setColor(color;canvas.drawRoundRect(rectF, roundPx, roundPx, paint;paint.setXfermode(new PorterDuffXfermode(M

7、ode.SRC_IN;canvas.drawBitmap(bitmap, rect, rect, paint;return output;6、獲得圓角圖片代碼如下public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap final int reflectionGap = 4;int w = bitmap.getWidth(;int h = bitmap.getHeight(;Matrix matrix = new Matrix(;matrix.preScale(1, -1;Bitmap reflectionImage

8、= Bitmap.createBitmap(bitmap, 0, h / 2, w, h / 2, matrix, false;Bitmap bitmapWithReflection = Bitmap.createBitmap(w, (h + h / 2, Config.ARGB_8888;Canvas canvas = new Canvas(bitmapWithReflection;canvas.drawBitmap(bitmap, 0, 0, null;Paint deafalutPaint = new Paint(;canvas.drawRect(0, h, w, h + reflect

9、ionGap, deafalutPaint;canvas.drawBitmap(reflectionImage, 0, h + reflectionGap, null;Paint paint = new Paint(;LinearGradient shader = new LinearGradient(0, bitmap.getHeight(, 0, bitmapWithReflection.getHeight( + reflectionGap, 0x70ffffff,0x00ffffff, TileMode.CLAMP;paint.setShader(shader;/ Set the Tra

10、nsfer mode to be porter duff and destination inpaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN;/ Draw a rectangle using the paint with our linear gradientcanvas.drawRect(0, h, w, bitmapWithReflection.getHeight(+ reflectionGap, paint;return bitmapWithReflection;三、Drawable代碼如下Bitmap bm=xxx; /xxx根

11、據(jù)你的情況獲取BitmapDrawable bd= new BitmapDrawable(getResource(, bm;因為BtimapDrawable是Drawable的子類,最終直接使用bd對象即可。2、Drawable縮放代碼如下public static Drawable zoomDrawable(Drawable drawable, int w, int h int width = drawable.getIntrinsicWidth(;int height = drawable.getIntrinsicHeight(;/ drawable轉(zhuǎn)換成bitmapBitmap oldbmp = drawableToBitmap(drawable;/ 創(chuàng)建操作圖片用的Matrix對象Matrix matrix = new Matrix(;/ 計算縮放比例float sx = (float w / width;float sy = (float h / h

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論