获取六边形头像(封装六边形方法)
2015-07-08 11:42
555 查看
//画六边形封装的方法,调用的话当数据成功加载下来的时候再调用
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);
}
});
}
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);
}
});
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories