Android最简单QQ头像圆形的ImageView

来源:互联网 发布:普华永道部门 知乎 编辑:程序博客网 时间:2024/04/30 15:39

Android最简单QQ头像圆形的ImageView

看见QQ头像,圆形的很爽,然后今天学习到了,特地出来显摆下。

这里写图片描述

布局文件:activity_main.xml

<LinearLayout 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"android:orientation="vertical"tools:context=".MainActivity"><!-- 保持图片的横纵比缩放,知道该图片能够显示在ImageView组件上,并将缩放好的图片显示在imageView的右下角 --><com.example.lenovo.myapplication.RoundImageViewandroid:id="@+id/img_round"android:layout_width="200dp"android:layout_height="200dp"android:layout_margin="5px" /></LinearLayout>

展示视图控制文件:MainActivity

package com.example.lenovo.myapplication;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;public class MainActivity extends Activity {private RoundImageView img_round;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);img_round = (RoundImageView) findViewById(R.id.img_round);        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.meinv);img_round.setBitmap(bitmap);    }}

自己新建个画圆的类RoundImageView

package com.example.lenovo.myapplication;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.PaintFlagsDrawFilter;import android.graphics.Path;import android.graphics.Rect;import android.graphics.Region;import android.util.AttributeSet;import android.widget.ImageView;/** * Created by lenovo on 2016/7/12. */public class RoundImageView extends ImageView {private Bitmap mBitmap;private Rect mRect = new Rect();private PaintFlagsDrawFilter pdf = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG);private Paint mPaint = new Paint();private Path mPath=new Path();public RoundImageView(Context context, AttributeSet attrs) {super(context, attrs);        init();    }//传入一个Bitmap对象public void setBitmap(Bitmap bitmap) {this.mBitmap = bitmap;    }private void init() {mPaint.setStyle(Paint.Style.STROKE);mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);mPaint.setAntiAlias(true);// 抗锯尺}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if(mBitmap == null)        {return;        }mRect.set(0,0,getWidth(),getHeight());        canvas.save();        canvas.setDrawFilter(pdf);mPath.addCircle(getWidth() / 2, getWidth() / 2, getHeight() / 2, Path.Direction.CCW);        canvas.clipPath(mPath, Region.Op.REPLACE);        canvas.drawBitmap(mBitmap, null, mRect, mPaint);        canvas.restore();    }}

本人学习网址:http://blog.csdn.net/coder_pig/article/details/47016831

0 0
原创粉丝点击