android在如果繪製自訂的bitmap,然後返回給ImageView

來源:互聯網
上載者:User

標籤:bitmap   imageview   

先來說一下FontMetrics這個類,這個類是關於字元屬性和測量的類



用圖可以更精確的知道各個屬性的含義:



我們在Layout中有一個ImageView,我們可以通過:

<span style="white-space:pre"></span>ImageView item_image = (ImageView)findViewById(R.id.item_image);item_image.setImageBitmap(makeMessageCenterIcon());

這種方式來把bitmap來填入ImageView


下面做一個這種效果的,特別適合有訊息通知的icon:


代碼可以這樣來寫:

protected Bitmap makeMessageCenterIcon(){int mMsgCnt = 4;Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.desktop_messageicon);if(icon == null){return icon;}//make notice iconif(mMsgCnt > 0) {Bitmap noticeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.notice_count_bg);if(noticeIcon != null){int h = noticeIcon.getHeight();int w = noticeIcon.getWidth();Bitmap noticeIconBmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);//noticeIconBmp是最終需要的畫字的bitmapCanvas noticeCanvas = new Canvas(noticeIconBmp);Paint noticeCntpaint = new Paint();noticeCntpaint.setAntiAlias(true);noticeCanvas.drawBitmap(noticeIcon, 0, 0, noticeCntpaint);noticeCntpaint.setTextAlign(Align.CENTER);noticeCntpaint.setColor(getResources().getColor(R.drawable.white));FontMetrics fontMetrics = noticeCntpaint.getFontMetrics(); float x = noticeIcon.getWidth() / 2;float y = (noticeIcon.getHeight() - fontMetrics.ascent) / 2 - 2;  //fontMetrics是在baseline以上的字元最高處的位置noticeCanvas.drawText(String.valueOf(mMsgCnt), x, y, noticeCntpaint);  //在canvas上的(x,y)的位置上寫mMsgCnt//draw notice icon onto message iconh = icon.getHeight();w = icon.getWidth();Bitmap iconBmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);Canvas canvas = new Canvas(iconBmp);Paint paint = new Paint();paint.setAntiAlias(true);canvas.drawBitmap(icon, 0, 0, paint);float left = icon.getWidth() - noticeIcon.getWidth();float top = 0;canvas.drawBitmap(noticeIconBmp, left, top, paint);return iconBmp;}}return icon;}


android在如果繪製自訂的bitmap,然後返回給ImageView

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.