Android学习笔记-绘制圆形ImageView实例
2024-10-19 00:28:53
现在很多的APP都很喜欢圆形的头像,这里就简单的写个圆形的ImageView~
第三方圆形ImageView控件:
实现代码:
自定义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();
} //传入一个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);// 抗锯尺
} @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();
}
}
布局代码: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);
}
}
最新文章
- jquery html动态添加的元素绑定事件详解
- TFS - 使用微软测试管理器实现跨团队项目的测试用例管理
- An Example of Pre-Query and Post-Query Triggers in Oracle Forms With Using Display_Item to Highlight Dynamically
- 下拉列表autocomplete各种实现方式比较
- 关于Eclipse平台的使用和开发第一个SWT程序
- portlet初学习及HelloWorld例子
- N3292x IBR介绍
- [TYVJ] P1006 ISBN
- Android 中常用代码片段
- WebDriver(Selenium2) 常见异常及处理方法
- window下Git和github入门
- monogodb使用
- MongoDB学习之路(二)
- javaScript事件流是什么?
- linux mysql 安装
- c语言作业01-分支、顺序结构
- 2019.03.26 bzoj4447: [Scoi2015]小凸解密码(线段树)
- 课程四(Convolutional Neural Networks),第二 周(Deep convolutional models: case studies) ——3.Programming assignments : Residual Networks
- dubbo使用的zk客户端
- DART: a fast and accurate RNA-seq mapper with a partitioning strategy DART:使用分区策略的快速准确的RNA-seq映射器