您现在的位置是:主页 > news > dede网站建站教程/微信投放广告多少钱

dede网站建站教程/微信投放广告多少钱

admin2025/4/20 7:32:11news

简介dede网站建站教程,微信投放广告多少钱,教人做美食视频网站,网站运营每天做啥工作为什么80%的码农都做不了架构师?>>> 最近在一个QQ群里,看到有人在做一个需求,要能实现头像的聚合拼接,我本来是想的生成一个bitmap,有人说起来要用drawable实现,其实算法是一样的,只…

dede网站建站教程,微信投放广告多少钱,教人做美食视频网站,网站运营每天做啥工作为什么80%的码农都做不了架构师?>>> 最近在一个QQ群里,看到有人在做一个需求,要能实现头像的聚合拼接,我本来是想的生成一个bitmap,有人说起来要用drawable实现,其实算法是一样的,只…

为什么80%的码农都做不了架构师?>>>   hot3.png

最近在一个QQ群里,看到有人在做一个需求,要能实现头像的聚合拼接,我本来是想的生成一个bitmap,有人说起来要用drawable实现,其实算法是一样的,只是用法不一样而已,我就顺便学一下自定义drawable来做。

先看效果:

201636_GDGx_1267266.png

 

就是这样了,思路应该就是一个圆形的imageview,加载上对应的bitmap或者drawable即可。

drawable的代码如下:

public class SliceDrawable extends Drawable {private List<Bitmap> src ;private Paint paint;public SliceDrawable(List<Bitmap> srcs) {if (srcs == null || srcs.size() == 0){throw  new IllegalStateException("bitmaps cannot be null or empty");}src = srcs;paint = new Paint();paint.setAntiAlias(true);}@Overridepublic void draw(Canvas canvas) {Bitmap bitmap = null;Rect rect = getBounds();switch (src.size()){case 1:bitmap = src.get(0);canvas.drawBitmap(bitmap,getBitmapBound(bitmap),rect,paint);break;case 2:bitmap = src.get(0);canvas.drawBitmap(bitmap,getBitmapBound(bitmap),rect,paint);bitmap = src.get(1);canvas.drawBitmap(bitmap,getBitmapBound(bitmap),getRigtBitmapBound(),paint);break;case 3:bitmap = src.get(0);canvas.drawBitmap(bitmap,getBitmapBound(bitmap),rect,paint);bitmap = src.get(1);canvas.drawBitmap(bitmap,getBitmapBound(bitmap),getRightTopBound(),paint);bitmap = src.get(2);canvas.drawBitmap(bitmap,getBitmapBound(bitmap),getRightBottomBound(),paint);break;case 4:bitmap = src.get(0);canvas.drawBitmap(bitmap,getBitmapBound(bitmap),getLeftTopBound(),paint);bitmap = src.get(1);canvas.drawBitmap(bitmap,getBitmapBound(bitmap),getRightTopBound(),paint);bitmap = src.get(2);canvas.drawBitmap(bitmap,getBitmapBound(bitmap),getRightBottomBound(),paint);bitmap = src.get(3);canvas.drawBitmap(bitmap,getBitmapBound(bitmap),getLeftBottomBound(),paint);break;default://多于4张,那么平分绘图区域?break;}}private Rect getBitmapBound(Bitmap bitmap){return  new Rect(0,0,bitmap.getWidth(),bitmap.getHeight());}private Rect getLeftTopBound(){Rect rect = getBounds();return new Rect(rect.left,rect.top,rect.centerX(),rect.centerY());}private Rect getRightTopBound(){Rect rect = getBounds();return new Rect(rect.centerX(),rect.top,rect.right,rect.centerY());}private Rect getRightBottomBound(){Rect rect = getBounds();return new Rect(rect.centerX(),rect.centerY(),rect.right,rect.bottom);}private Rect getLeftBottomBound(){Rect rect = getBounds();return new Rect(rect.left,rect.centerY(),rect.centerX(),rect.bottom);}private Rect getRigtBitmapBound(){Rect rect = getBounds();return new Rect(rect.centerX(),0,rect.right+rect.centerX(),rect.bottom);}@Overridepublic void setAlpha(int alpha) {}@Overridepublic void setColorFilter(ColorFilter colorFilter) {}@Overridepublic int getOpacity() {return 0;}
}

因为要求就是最多四张图片显示,所以更多的就没有写,如此加载到圆形的Imageview中即可达到上图的效果。

 

转载于:https://my.oschina.net/tnjin/blog/779412