Android 使用DisplayImageOptions加载头像 自定义圆形头像
来源:互联网 发布:java ssh linux 编辑:程序博客网 时间:2024/05/29 04:47
1、示例:
ImageLoader.getInstance().displayImage(data.getAvatar(), avatarImg, avatarOptions);
//关于ImageLoader的具体用法在这不做复述,不清楚的自行百度;
2、创建:
DisplayImageOptions avatarOptions = new DisplayImageOptions.Builder()
.displayer(new Displayer(0)) //自定义圆形参数(关键点)
.showImageForEmptyUri(R.drawable.default_avatar)
.showImageOnFail(R.drawable.default_avatar)
.cacheInMemory(true) // 内存缓存
.cacheOnDisc(true) // sdcard缓存
.resetViewBeforeLoading(true)//设置图片下载前复位
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.bitmapConfig(Bitmap.Config.RGB_565).build();
3、自定义:
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader;
import android.graphics.drawable.Drawable;
import android.widget.ImageView;
import com.nostra13.universalimageloader.core.assist.LoadedFrom;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
/**
* Created by Administrator on 2016/11/2 0002.
*/
public class Displayer extends RoundedBitmapDisplayer {
private final int roundPixels;
public Displayer(int cornerRadiusPixels) {
super(cornerRadiusPixels);
this.roundPixels = cornerRadiusPixels;
}
// 显示位图
@Override
public Bitmap display(Bitmap bitmap, ImageView imageView, LoadedFrom loadedFrom) {
imageView.setImageDrawable(new CircleDrawable(bitmap, roundPixels));
return bitmap;
}
public static class CircleDrawable extends Drawable {
private final int margin;
private final RectF mRect = new RectF();
private final BitmapShader bitmapShader;
private final Paint paint;
private RectF mBitmapRect;
public CircleDrawable(Bitmap bitmap, int margin) {
this.margin = 0;
// 创建着色器
bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
mBitmapRect = new RectF(margin, margin, bitmap.getWidth() - margin, bitmap.getHeight() - margin);
// 设置画笔
paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(bitmapShader);
}
// 画圆,覆盖原来的位图
@Override
protected void onBoundsChange(Rect bounds) {
super.onBoundsChange(bounds);
mRect.set(margin, margin, bounds.width() - margin, bounds.height() - margin);
// 调整位图,设置该矩阵,转换映射源矩形和目的矩形
Matrix shaderMatrix = new Matrix();
shaderMatrix.setRectToRect(mBitmapRect, mRect, Matrix.ScaleToFit.FILL);
// 设置着色器矩阵
bitmapShader.setLocalMatrix(shaderMatrix);
}
// 画出其边界(通过设置的setBounds)
@Override
public void draw(Canvas canvas) {
canvas.drawRoundRect(mRect, mRect.width()/2 , mRect.height()/2, paint);
}
/**
* 返回此绘制对象的不透明度/透明度 ,返回的值是抽象的格式常数的PixelFormat之一:未知,半透明,透明或不透明
* */
@Override
public int getOpacity() {
// 半透明
return PixelFormat.TRANSLUCENT;
}
// 设置透明度
@Override
public void setAlpha(int alpha) {
paint.setAlpha(alpha);
}
// 彩色滤光片(通过设置setColorFilter)
@Override
public void setColorFilter(ColorFilter cf) {
paint.setColorFilter(cf);
}
}
}
- Android 使用DisplayImageOptions加载头像 自定义圆形头像
- Android自定义圆形头像
- android自定义圆形头像
- Android 自定义圆形头像
- Android自定义圆形头像
- Android 自定义圆形头像
- Android 自定义圆形头像
- Android实现圆形头像-使用自定义控件
- Android中的自定义圆形头像
- android 自定义圆形头像组件
- android 之 自定义圆形头像
- Android自定义控件--圆形头像
- Android 自定义圆形文字头像
- android圆形头像,自定义view
- Android 自定义圆形文字头像
- Android 自定义View -->圆形头像
- android 圆形头像 自定义ImageView
- Android 自定义圆形头像控件
- 网易视频云:专注于技术服务——异步通知系统
- 《黑客与画家读后感》
- WTL的窗口子类化与超类化
- 网易视频云:专注于技术服务——异步通知系统
- linux挂在NAS 文件名乱码
- Android 使用DisplayImageOptions加载头像 自定义圆形头像
- Flask-Blueprint
- 合并多个python list以及合并多个 django QuerySet 的方法在用python或者django写一些小工具应用的时候,有可能会遇到合并多个list到一个 list 的情况。单纯从技
- 音频信号分帧
- 匹配所有合法的HTML标签的正则表达式
- 实现小尝试—C++ STL bitset
- CoordinatorLayout与CollapsingToolbarLayout实现视差滚动动画和Toolbar滚动
- 字符串的替换
- 【通讯术语】MSIN