Android开发_自定义圆形头像控件
2017-03-22 08:37
513 查看
Android开发_自定义圆形头像控件
安卓中所有的控件在绘制时都是按照矩形绘制的,我们可以看到很多主流APP会加载一些圆形图片,看起来更优雅美观.我们可以通过自定义控件来完成圆形图片的加载
首先我们写一个类继承ImageView.public abstract class MaskedImage extends ImageView{ private static Xfermode MASK_XFERMODE; private Bitmap mask; private Paint paint; static { PorterDuff.Mode localMode = PorterDuff.Mode.DST_IN; MASK_XFERMODE = new PorterDuffXfermode(localMode); } public MaskedImage(Context context) { super(context); } public MaskedImage(Context context, AttributeSet attrs) { super(context, attrs); } public MaskedImage(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { Drawable localDrawable = getDrawable(); if (localDrawable == null) return; try { if (this.paint == null) { Paint localPaint1 = new Paint(); this.paint = localPaint1; this.paint.setFilterBitmap(false); Paint localPaint2 = this.paint; Xfermode localXfermode1 = MASK_XFERMODE; @SuppressWarnings("unused") Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1); } float f1 = getWidth(); float f2 = getHeight(); int i = canvas.saveLayer(0.0F, 0.0F, f1, f2, null,Canvas.ALL_SAVE_FLAG); int j = getWidth(); int k = getHeight(); localDrawable.setBounds(0, 0, j, k); localDrawable.draw(canvas); if ((this.mask == null) || (this.mask.isRecycled())) { Bitmap localBitmap1 = createMask(); this.mask = localBitmap1; } Bitmap localBitmap2 = this.mask; Paint localPaint3 = this.paint; canvas.drawBitmap(localBitmap2, 0.0F, 0.0F, localPaint3); canvas.restoreToCount(i); return; } catch (Exception localException) { StringBuilder localStringBuilder = new StringBuilder() .append("Attempting to draw with recycled bitmap. View ID = "); System.out.println("localStringBuilder=="+localStringBuilder); } } public abstract Bitmap createMask();
}
该类暴露出属性方法,写一个具体的实现类.
public class CircularImage extends MaskedImage { public CircularImage(Context context) { super(context); } public CircularImage(Context context, AttributeSet attrs) { super(context, attrs); } public CircularImage(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public Bitmap createMask() { int i = getWidth(); int j = getHeight(); Bitmap.Config localConfig = Bitmap.Config.ARGB_8888; Bitmap localBitmap = Bitmap 8a23 .createBitmap(i, j, localConfig); Canvas localCanvas = new Canvas(localBitmap); Paint localPaint = new Paint(1); localPaint.setColor(Color.WHITE); float f1 = getWidth(); float f2 = getHeight(); RectF localRectF = new RectF(0.0F, 0.0F, f1, f2); localCanvas.drawOval(localRectF, localPaint); return localBitmap; }
}
在布局中引用也是很简单的.
<com.jinxing.ui.widget.CircularImage android:id="@+id/me_ib_icon" android:layout_width="80dip" android:layout_height="80dip"/> meIbIcon.setImageResource(R.drawable.ic_Icon);
Mr.Jin版权所有,转载请声明出处
相关文章推荐
- Android自定义控件之圆形头像
- android自定义控件之圆形头像
- [置顶] Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习
- Android自定义控件之圆形头像
- Android开发(二)——自定义圆形控件的使用CircleImageView
- Android-----自定义圆形的头像控件
- Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习
- android 自定义ImageView控件实现圆形图片-适用于用户头像
- Android自定义控件之圆形头像
- Android 自定义圆形头像控件
- Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习
- android 自定义ImageView控件实现圆形图片-适用于用户头像
- android自定义View绘制圆形头像与椭圆头像
- android开源系列:CircleImageView自定义圆形控件的使用
- Android开发学习笔记-自定义组合控件的过程
- 【Android 应用开发】 自定义 圆形进度条 组件
- Android自定义控件之圆形进度条ImageView
- Android 高仿微信头像截取 打造不一样的自定义控件
- Android开发之自定义圆形的ImageView的实现
- 【Android 应用开发】 自定义 圆形进度条 组件