知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
Android圓形頭像自己動手
發(fā)表時間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):60
圓形頭像DIY
如今大年夜部分app應用的都是圓形頭像,網(wǎng)上開源的也很多,然則有沒有推敲過DIY圓形頭像呢?下面就本身實現(xiàn)一個,先看下demo展示
[img]http://img.blog.csdn.net/20150105120136311?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY21sX2Jsb2c=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
第一步:道理解釋(圖片很丑,道理很真)
1、畫外框圓形,須要應用自定義的色彩畫一個圓形,比圖片的半徑長5dp
[img]http://img.blog.csdn.net/20150105120850921?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY21sX2Jsb2c=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
2、自定義圓形畫好了后,將我們須要轉換成圓形頭像的圖片畫到膳綾擎,大年夜中心開端覆蓋,獲得如下圖片
[img]http://img.blog.csdn.net/20150105120934733?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY21sX2Jsb2c=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
3、中心朝長進步圖片,半徑設置為:r=min(width,height),圓心設為:cx=width/2,cy=height/2,如許可以大年夜中心開端朝長進步圓形圖片
第二步、代碼實現(xiàn)
1、起首持續(xù)ImageView
2、重寫onDraw(Canvas canvas)辦法
3、設置圖片縮放類型setScaleType(ScaleType.CENTER_CROP); 中心朝長進步
具體代碼如下:
@Override protected void onDraw(Canvas canvas) { // super.onDraw(canvas); setScaleType(ScaleType.CENTER_CROP); Drawable drawable = getDrawable(); if (null == drawable) { return; } // 將drawable轉換成bitmap==>網(wǎng)上找的 Bitmap bitmap = Bitmap .createBitmap( drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); Canvas srcCanvas = new Canvas(bitmap); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(srcCanvas); float cx = getWidth() / 2; float cy = getHeight() / 2; float radius = Math.min(getWidth(), getHeight()) / 2; Paint borderPaint = new Paint(); borderPaint.setAntiAlias(true); borderPaint.setColor(Color.GREEN); canvas.drawCircle(cx, cy, radius, borderPaint); // 畫圖 BitmapShader shader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP); Paint paint = new Paint(); paint.setShader(shader); paint.setAntiAlias(true); canvas.drawCircle(cx, cy, radius - 5, paint); }
代碼只是簡單的demo,當然可以定制成通用的CircleImageView,須要根據(jù)本身的需求DIY??!
相關案例查看更多
相關閱讀
- 電商網(wǎng)站建設
- 小程序生成海報
- 昆明小程序哪家好
- 昆明小程序開發(fā)
- 汽車回收管理系統(tǒng)
- 江蘇小程序開發(fā)
- 網(wǎng)站建設首選公司
- 小程序技術
- .net網(wǎng)站
- 云南軟件設計
- 百度小程序開發(fā)公司
- 排名
- 網(wǎng)站建設電話
- 網(wǎng)站建設方案 doc
- 模版消息
- 小程序分銷商城
- 小程序
- web前端
- typescript
- 云南省城鄉(xiāng)建設廳網(wǎng)站
- 云南軟件定制公司
- 網(wǎng)站開發(fā)哪家好
- 跳轉小程序
- 網(wǎng)站建設特性
- 網(wǎng)站建設報價
- 云南花農(nóng)小程序
- 關鍵詞快速排名
- 云南網(wǎng)站建設價格
- 軟件定制
- 云南微信小程序開發(fā)