Android實現圓形圖片

來源:互聯網
上載者:User

標籤:android   blog   ar   使用   java   sp   strong   div   on   

 情景再現:

寫Android程式也有一段時間了,今天突然被問怎麼實現一個圓形圖片,很多app映像是圓形的。但是使用者上傳的映像可不是圓的,所以問題就來了,需要我們代碼實現圓形圖片。但是大腦飛轉想到第三方圖片緩衝工具ImageLoader。但是這個只能設定圓角,很難設定實現規則的圓形圖片。然後又想只能通過paint和畫布去畫了,但是只能畫一個圓,最後怎麼讓這個圓填充片就成問題了。最後沒能回答他的問題。這個時候比較害羞,以前只用過圓角圖片,沒弄過這種圓形圖片啊。所以晚上就查了下資料

實現:

/**          * 根據原圖和變長繪製圓形圖片          *           * @param source          * @param min          * @return          */          private Bitmap createCircleImage(Bitmap source, int min)          {              final Paint paint = new Paint();              paint.setAntiAlias(true);              Bitmap target = Bitmap.createBitmap(min, min, Config.ARGB_8888);              /**              * 產生一個同樣大小的畫布              */              Canvas canvas = new Canvas(target);              /**              * 首先繪製圓形              */              canvas.drawCircle(min / 2, min / 2, min / 2, paint);              /**              * 使用SRC_IN              */              paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));              /**              * 繪製圖片              */              canvas.drawBitmap(source, 0, 0, paint);              return target;          }  

 其實主要靠:paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));這行代碼,為什麼呢,我給大家解釋下,SRC_IN這種模式,兩個繪製的效果疊加後取交集展現後圖,也就是先用paint在畫布中畫一個圓,然後再用映像去和這個圓疊加。交集後得到一個圓,並且用圖片填充這個圓。怎麼說呢,咱們第一個繪製的是個圓形,第二個繪製的是個Bitmap,於是交集為圓形,展現的是BItmap,就實現了圓形圖片效果。

 

Android實現圓形圖片

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.