Android 圆角 ImageView类可设置弧度(代码简单)

废话不多说了,直接给大家贴代码了,具体代码如下所示:

public class RoundImageView extends ImageView {
private Paint paint;
private int roundWidth = 50;
private int roundHeight = 50;
private Paint paint2;
public RoundImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context, attrs);
}
public RoundImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public void SetRoundValue(float roundValue) {
roundWidth = (int) roundValue;
roundHeight = (int) roundValue;
}
public RoundImageView(Context context) {
super(context);
init(context, null);
}
@SuppressLint("Recycle")
private void init(Context context, AttributeSet attrs) {
if (attrs != null) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RoundAngleImageView);
roundWidth = a.getDimensionPixelSize(R.styleable.RoundAngleImageView_roundWidth, roundWidth);
roundHeight = a.getDimensionPixelSize(R.styleable.RoundAngleImageView_roundHeight, roundHeight);
} else {
float density = context.getResources().getDisplayMetrics().density;
roundWidth = (int) (roundWidth * density);
roundHeight = (int) (roundHeight * density);
}
paint = new Paint();
paint.setColor(Color.WHITE);
paint.setAntiAlias(true);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
paint2 = new Paint();
paint2.setXfermode(null);
}
@Override
public void draw(Canvas canvas) {
Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Config.ARGB_8888);
Canvas canvas2 = new Canvas(bitmap);
super.draw(canvas2);
drawLiftUp(canvas2);
drawRightUp(canvas2);
drawLiftDown(canvas2);
drawRightDown(canvas2);
canvas.drawBitmap(bitmap, 0, 0, paint2);
bitmap.recycle();
bitmap = null;
}
private void drawLiftUp(Canvas canvas) {
Path path = new Path();
path.moveTo(0, roundHeight);
path.lineTo(0, 0);
path.lineTo(roundWidth, 0);
path.arcTo(new RectF(0, 0, roundWidth * 2, roundHeight * 2), -90, -90);
path.close();
canvas.drawPath(path, paint);
}
private void drawLiftDown(Canvas canvas) {
Path path = new Path();
path.moveTo(0, getHeight() - roundHeight);
path.lineTo(0, getHeight());
path.lineTo(roundWidth, getHeight());
path.arcTo(new RectF(0, getHeight() - roundHeight * 2, 0 + roundWidth * 2, getWidth()), 90, 90);
path.close();
canvas.drawPath(path, paint);
}
private void drawRightDown(Canvas canvas) {
Path path = new Path();
path.moveTo(getWidth() - roundWidth, getHeight());
path.lineTo(getWidth(), getHeight());
path.lineTo(getWidth(), getHeight() - roundHeight);
path.arcTo(new RectF(getWidth() - roundWidth * 2, getHeight() - roundHeight * 2, getWidth(), getHeight()), 0,
90);
path.close();
canvas.drawPath(path, paint);
}
private void drawRightUp(Canvas canvas) {
Path path = new Path();
path.moveTo(getWidth(), roundHeight);
path.lineTo(getWidth(), 0);
path.lineTo(getWidth() - roundWidth, 0);
path.arcTo(new RectF(getWidth() - roundWidth * 2, 0, getWidth(), 0 + roundHeight * 2), -90, 90);
path.close();
canvas.drawPath(path, paint);
}
}

好了,有关Android 圆角 ImageView类可设置弧度的内容小编就给大家介绍到这里,希望对大家有所帮助!

(0)

相关推荐

  • android ImageView 的几点经验总结

    最近作图片的显示,遇到了些问题,简单总结1)可以用ImageSwicher和ImageView结合在来做,这样会用到setFectory(),华而不实最要命的是如果图片的大小超过屏幕,实现比较困难,目前是没有找到方法 2)最简单的方法是用ImageView,图片直接FIT_CENTER,android会根据图片的大小自动调节保持图片的比例.如果图片分辨率超过屏幕,android也会自动的调整到屏幕能放下整张的图片在放大图片的时候,可以用ImageView的SetFrame() 和setScale

  • android imageview图片居中技巧应用

    做UI布局,尤其是遇到比较复杂的多重LinearLayout嵌套,常常会被一些比较小的问题困扰上半天,比如今天在使用ImageView的时候,想让其居中显示,可是无论怎样设置layout_gravity属性,都无法达到效果,部分代码如下: [java] 复制代码 代码如下: <LinearLayout android:layout_width="wrap_content" android:layout_height="fill_parent" android:

  • Android控件系列之ImageView使用方法

    学习目的: 1.掌握在Android中如何插入图片 图片的加入可以立刻让您的程序增色不少,我们样例选用一张Android机器人(picture.jpg),您可以使用自己的任何图片进行试验 一般建议您程序中的图片加入资源,而不是放在SD卡中用流的方式去读取,毕竟嵌入的资源比较安全,不容易被篡改. 1.导入图片到资源 将图片拖拽到项目res\drawable开头的3个文件夹下,他们分别代表了高.中.低分辨度的图片.Android读取图片时自动优化,选用合适的一个图片显示,比如高分辨率可以存放128*

  • Android中通过反射实现圆角ImageView代码实例

    private void init(){ paint = new Paint(Paint.ANTI_ALIAS_FLAG); roundRect = new RectF(0, 0, getWidth() , getHeight()); radius = 40; mPorterDuffXfermode = new PorterDuffXfermode(PorterDuff.Mode.SRC_IN) ; } 继承ImageView,在构造方法中调用,初始化Paint和Xfermode. protec

  • Android ImageView绘制圆角效果

    前言 Android 开发中,我们经常需要实现图片的圆形/圆角的效果,我们可以使用两种方式来实现这样的效果.一种是使用Xfermode,另一种是BitmapShader来实现.下面我将分别介绍这两种用法. 使用Xfermode的方式实现 使用该方式的关键代码,如下: private Bitmap creataBitmap(Bitmap bitmap) { //用指定的一个Bitmap来构建一个画布 Bitmap target = Bitmap.createBitmap(1000,1000, Bi

  • Android开发ImageView图片无法显示解决过程

    今天碰到一个非常奇怪的问题: 在Android中ImageView无法显示加载的本地SDCard图片. 具体过程是:先调用本地照相机程序摄像,然后将拍摄的图片加载在ImageView中显示. 复制代码 代码如下: public class ActiEnvi extends Activity { static final String TAG = "ActiEnvi"; private static final int REQ_CODE_CAMERA = 0x1; private Str

  • Android实现圆角矩形和圆形ImageView的方式

    Android中实现圆角矩形和圆形有很多种方式,其中最常见的方法有ImageLoader设置Option和自定义View. 1.ImageLoader加载图片 public static DisplayImageOptions getRoundOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() // 是否设置为圆角,弧度为多少,当弧度为90时显示的是一个圆 .displayer(new Round

  • Android自定义控件之圆形、圆角ImageView

    一.问题在哪里? 问题来源于app开发中一个很常见的场景--用户头像要展示成圆的:  二.怎么搞? 机智的我,第一想法就是,切一张中间圆形透明.四周与底色相同.尺寸与头像相同的蒙板图片,盖在头像上不就完事了嘛,哈哈哈! 在背景纯色的前提下,这的确能简单解决问题,但是如果背景没有这么简单呢? 在这种不规则背景下,有两个问题: 1).背景图常常是适应手机宽度缩放,而头像的尺寸又是固定宽高DP的,所以固定的蒙板图片是没法保证在不同机型上都和背景图案吻合的. 2).在这种非纯色背景下,哪天想调整一下头像

  • Android自定义圆角ImageView

    废话不多说了,直接给大家贴代码了. java类如下: import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Color; import android.gra

  • Android自定义圆角ImageView控件

    目前一些比较火的图片加载库虽然支持圆角加载,若你是接的别人作了一半的项目,刚好别人用的图片加载库刚好不支持圆角加载,那么这颗控件你值得拥有.(支持网络图片的加载) 1.创建CustomImageView 类在你的项目中(源码如下) import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.

随机推荐