自定义圆头像
2016-04-16 09:03
267 查看
//布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bwei.zidingyi_image.MainActivity"> <com.bwei.zidingyi_image.RoundImageView android:id="@+id/right_login_head" android:layout_width="60dip" android:layout_height="60dip" android:scaleType="centerInside" android:src="@drawable/dd"></com.bwei.zidingyi_image.RoundImageView> </RelativeLayout>
//自定义类 package com.example.zidingyi_image; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageView; public class RoundImageView extends ImageView{ public RoundImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public RoundImageView(Context context, AttributeSet attrs) { super(context, attrs); } public RoundImageView(Context context) { super(context); } //重写OnDraw方法 @Override protected void onDraw(Canvas canvas){ Drawable drawable=getDrawable(); if (drawable==null){ return; } if (getWidth()==0||getHeight()==0) { return; } Bitmap bitmap=((BitmapDrawable) drawable).getBitmap(); if (bitmap==null){ return; } Bitmap bitmap1=bitmap.copy(Bitmap.Config.ARGB_8888, true); int w=getWidth(),h=getHeight(); Bitmap roundbitmap= getCroppedBitmap(bitmap, w); canvas.drawBitmap(roundbitmap, 0,0, null); } //返回的是一张图片 public static Bitmap getCroppedBitmap(Bitmap bmp, int radius){ //定义图片为空 Bitmap sbmp; if (bmp.getWidth()!=radius||bmp.getHeight()!=radius) sbmp=Bitmap.createScaledBitmap(bmp, radius, radius, false); else sbmp=bmp; Bitmap output=Bitmap.createBitmap(sbmp.getWidth(), sbmp.getHeight(), Config.ARGB_8888); Canvas canvas=new Canvas(output); final int color = 0xffa19774; final Paint paint=new Paint(); final Rect rect=new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight()); paint.setAntiAlias(true); paint.setFilterBitmap(true); paint.setDither(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(Color.parseColor("#bab399")); canvas.drawCircle(sbmp.getWidth()/2+0.7f, sbmp.getHeight()/2+0.7f, sbmp.getWidth()/2+0.1f, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(sbmp, rect, rect, paint); return output; } }
//主类(引用) package com.example.zidingyi_image; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
相关文章推荐
- LeetCode 294. Flip Game II(反转游戏II)
- mysql学习(列属性)
- semantic web
- Druid 配置
- 开发中的BUG
- Centos6.5 mysql安装
- UI-UIScrollView
- ubuntu终端的颜色设置
- Centos6.5 mysql安装
- iOS学习笔记29-系统服务(二)通讯录
- LeetCode *** 213. House Robber II
- nyoj 38 布线问题
- AFNetworking网络请求networkactivityindicator不显示
- 解决VirtualBox“不能为虚拟机xxxx电脑 打开一个新任务”
- vim 插件之vundle
- ORA-00130:invalidlisteneraddress
- 053(二十四)
- iOS学习笔记29-系统服务(二)通讯录
- 由I2C学通信时序
- angular自定义表单验证----用户名唯一