圆形头像显示实现
第一步:上图:
图片制作步骤:
1、将图片转换成指定大小
public Bitmap resizeBitmap(float newWidth, float newHeight, Bitmap bitmap) {
Matrix matrix = new Matrix();
matrix.postScale(newWidth / bitmap.getWidth(),
newHeight / bitmap.getHeight());
Bitmap newBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), matrix, true);
return newBitmap;
}
private Bitmap cicleImage() {
// 加载现有图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.main_login_image);
bitmap =resizeBitmap(400,400,bitmap);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
// 构造新图纸
Bitmap output = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
Paint paint = new Paint();
paint.setAntiAlias(true); // 抗锯齿
canvas.drawARGB(0, 0, 0, 0); // 将背景绘制成黑色
// 画一个灰色的实心园
paint.setColor(0xff424242);
canvas.drawCircle(width / 2, height / 2, width / 2, paint);
/* [Sa * Da, Sc * Da] */
// 取两层绘制交集,显示上层,本例下层是刚绘制的实心园,上层是即将绘制
// 的图片,两者的交集就是个园,显示上层,就把图片中的园形部分显示出来了
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
// 绘制现有图片
Rect src = new Rect(0, 0, width, width);
Rect dst = new Rect(0, 0, width, height);
//Rect src: 是对图片进行裁截,若是空null则显示整个图片
//Rect dst:是图片在Canvas画布中显示的区域,大于src则把src的裁截区放大, 小于src则把src的裁截区缩小。
canvas.drawBitmap(bitmap, src, dst, paint);
return output;
}
3、在MainActivity中调用显示
<strong>public class MainActivity extends Activity {
ImageView image ;
View picture ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
picture = findViewById(R.drawable.ic_launcher);
image = (ImageView) findViewById(R.id.iamge);
image.setImageBitmap(cicleImage());
}
}</strong>
4、xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/iamge"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
</LinearLayout>
R.id.image为头像显示的图片,可以随便用自己的图片代替