Android learning notes-draw a circular ImageView instance and androidimageview
Nowadays, many apps like circular portraits. Here we will simply write a circular ImageView ~
Third-party circular ImageView control:
RoundedImageView
CircleImageView
Implementation Code:
Custom ImageView: RoundImageView. java
Package com. jay. demo. imageviewdemo; 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 coder-pig on 2015/7/18 0018. */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 ();} // input a Bitmap object 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); // anti-saw ruler} @ Override protected 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 ();}}
Layout code:Activity_main.xml:
<com.jay.demo.imageviewdemo.RoundImageView android:id="@+id/img_round" android:layout_width="200dp" android:layout_height="200dp" android:layout_margin="5px"/>
MainActivity. java:
package com.jay.demo.imageviewdemo;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;public class MainActivity extends AppCompatActivity { private RoundImageView img_round; @Override protected 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.mipmap.meinv); img_round.setBitmap(bitmap); }}