欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

Android圓形頭像自己動手 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設/小程序開發(fā)/軟件開發(fā)

知識

不管是網(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??!

相關案例查看更多