获取六边形头像(封装六边形方法)

封装六边形头像绘制方法
这是一个关于如何在Android中获取六边形头像的实现。通过`getSixBitmap`方法封装了将矩形头像转换为六边形的过程,并在`loadHexagonAvatarImage`方法中展示了如何在加载图片完成时调用该方法,确保数据加载成功后显示六边形头像。


//画六边形封装的方法,调用的话当数据成功加载下来的时候再调用

public static Bitmap getSixBitmap(Bitmap bitmap) {  

int width = bitmap.getWidth();
int height = bitmap.getHeight();
Bitmap output = Bitmap.createBitmap(width,  
       height, Config.ARGB_8888);  
   Canvas canvas = new Canvas(output);  
  
   final int color = 0xff424242;  
   final Paint paint = new Paint();  
  
   paint.setAntiAlias(true);  
   canvas.drawARGB(0, 0, 0, 0);  
   paint.setColor(color);  
   
   
   float centerX = width/2;
       float centerY = height/2;
       float radius = width/2;
       double radian30 = 30*Math.PI/180;
       float a = (float) (radius*Math.sin(radian30));
       float b = (float) (radius*Math.cos(radian30));


       Path localPath = new Path();
       localPath.moveTo(centerX, 0);
       localPath.lineTo(centerX+b, centerY-a);
       localPath.lineTo(centerX+b, centerY+a);
       localPath.lineTo(centerX, height);
       localPath.lineTo(centerX-b, centerY+a);
       localPath.lineTo(centerX-b, centerY-a);
       localPath.close();
       
       canvas.drawPath(localPath, paint);
       
   paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
   canvas.drawBitmap(bitmap, 0.0f, 0.0f, paint);  
  
   return output;  

}



/**

* @Name: loadAvatarImage 

* @Description: 获取六边形头像

* @param  url

* @param  imageView    

* @return void    返回类型 

* @throws 

*

*/

public static void loadHexagonAvatarImage(String url, ImageView imageView){

if(url == null || url.length() <= 0)

return;

DisplayImageOptions options = new DisplayImageOptions.Builder()

.cacheOnDisc(true)

.cacheInMemory(false)

.showImageOnLoading(R.drawable.home_user_avatar_default)

.showImageOnFail(R.drawable.home_user_avatar_default)

.build();

ImageLoader.getInstance().displayImage(url, imageView, options, new SimpleImageLoadingListener(){

@Override

public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

if(loadedImage != null)

((ImageView)view).setImageBitmap(getHexagonBitmap(loadedImage));

super.onLoadingComplete(imageUri, view, loadedImage);

}

});

}


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值