Android圆角图片封装类

你还在为处理圆角而在项目里到处copy 处理代码吗?你还在不停动态生成圆角bitmap后再使用吗?no,代码里不需要知道这些,

如果一个view需要圆角,xml直接使用下面的RoundImageView即可,

代码逻辑根本不需要任何干涉,代码中你依然当做这个是一个普通的ImageView完全没有问题,这就是关键。

而且省去了bitmap的动态生成,避免了内存开销,跟界面卡顿(原始处理圆角的方法,再处理图片比较多的时候,如果不用单独thread性能并不好)

注:如果你想让一个布局you圆角效果也是完全做到的,用这个思路即可,或者@我qq群:37493362,呼呼

标签: Android

[1].[文件] RoundImageView.java ~ 2KB    下载(107) 跳至 [1]

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

package

com.phodev.andtools.widget;

import

android.content.Context;

import

android.graphics.Canvas;

import

android.graphics.Color;

import

android.graphics.Paint;

import

android.graphics.PorterDuff;

import

android.graphics.PorterDuffXfermode;

import

android.graphics.RectF;

import

android.util.AttributeSet;

import

android.widget.ImageView;

/**

 *
圆角ImageView

 *

 *
@author skg

 *

 */

public

class

RoundImageView
extends

ImageView {

    public

RoundImageView(Context context, AttributeSet attrs) {

        super(context,
attrs);

        init();

    }

    public

RoundImageView(Context context) {

        super(context);

        init();

    }

    private

final

RectF roundRect =
new

RectF();

    private

float

rect_adius =
6;

    private

final

Paint maskPaint =
new

Paint();

    private

final

Paint zonePaint =
new

Paint();

    private

void

init() {

        maskPaint.setAntiAlias(true);

        maskPaint.setXfermode(new

PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

        //

        zonePaint.setAntiAlias(true);

        zonePaint.setColor(Color.WHITE);

        //

        float

density = getResources().getDisplayMetrics().density;

        rect_adius
= rect_adius * density;

    }

    public

void

setRectAdius(
float

adius) {

        rect_adius
= adius;

        invalidate();

    }

    @Override

    protected

void

onLayout(
boolean

changed,
int

left,
int

top,
int

right,

            int

bottom) {

        super.onLayout(changed,
left, top, right, bottom);

        int

w = getWidth();

        int

h = getHeight();

        roundRect.set(0,
0,
w, h);

    }

    @Override

    public

void

draw(Canvas canvas) {

        canvas.saveLayer(roundRect,
zonePaint, Canvas.ALL_SAVE_FLAG);

        canvas.drawRoundRect(roundRect,
rect_adius, rect_adius, zonePaint);

        //

        canvas.saveLayer(roundRect,
maskPaint, Canvas.ALL_SAVE_FLAG);

        super.draw(canvas);

        canvas.restore();

    }

}

时间: 2024-10-12 12:23:09

Android圆角图片封装类的相关文章

Android圆角图片和圆形图片实现总结

1. 概述 Android研发中经常会遇见圆角或者圆形图片的展示,但是系统中ImageView并不能直接支持,需要我们自己做一些处理,来实现圆角图片或者圆形图片,自己最近对这块的实现做了一下总结,看一下几种实现方法. 图层叠加,上层覆盖一层蒙版,遮挡图片,让图片展示出圆角或者圆形效果 重新绘制 BitmapShader Xfermode RoundedBitmapDrawable CardView,使用官方控件,自动裁剪,达到圆角或者圆形效果.(5.0以上系统) 第一种方法,很傻,不太优雅,不推

android 圆角图片的实现

图片展示的时候总觉的直角的图片不好看?好办法来了!-- public class ToRoundCorner extends Activity{ public Bitmap toRoundCorner(Bitmap bitmap, int pixels) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new

Android 圆角图片

import android.app.Activity; import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import

Android Xfermode 真实 实现全面、圆角图片

转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/42094215.本文出自:[张鸿洋的博客] 1.概述 事实上这篇本来准备Android BitmapShader 实战 实现圆形.圆角图片放到一篇里面.结果由于篇幅原因就独立出来了~在非常久曾经也写过一个利用Xfermode 实现圆形.圆角图片的,可是那个继承的是View.事实上继承ImageView能方便点,最起码省去了onMeasure里面自己去策略,以及不须要自己去提供设置

Android -- 图片编辑:创建圆角图片

创建圆角图片的方式大同小异,最简单的就是 9.png 美工做出来的就是,这样的最省事直接设置即可. 第二种就是通过裁剪 这里的剪裁指的是根据原图我们自己生成一张新的bitmap,这个时候指定图片的目标区域为一个圆角局域.这种做法有一点需要生成一个新的bitmap,所以会消耗至少2倍的图片内存, 下面分析一下代码的含义: a.首先创建一个指定高宽的bitmap,作为输出的内容, b.然后创建一个相同大小的矩形,利用画布绘制时指定圆角角度,这样画布上就有了一个圆角矩形. c.最后就是设置画笔的剪裁方

Android Xfermode 实战 实现圆形、圆角图片

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/42094215,本文出自:[张鸿洋的博客] 1.概述 其实这篇本来准备Android BitmapShader 实战 实现圆形.圆角图片放到一篇里面,结果由于篇幅原因就独立出来了~在很久以前也写过一个利用Xfermode 实现圆形.圆角图片的,但是那个继承的是View,其实继承ImageView能方便点,最起码省去了onMeasure里面自己去策略,以及不需要自己去提供设置图片的

Android BitmapShader 实战 实现圆形、圆角图片

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41967509,本文出自:[张鸿洋的博客] 1.概述 记得初学那会写过一篇博客Android 完美实现图片圆角和圆形(对实现进行分析),主要是个自定View加上使用Xfermode实现的.其实实现圆角图片的方法应该很多,常见的就是利用Xfermode,Shader.本篇博客会直接继承直接继承ImageView,使用BitmapShader实现圆角的绘制,大家如果耐着性子看完,我估

Android 两种制作圆形/圆角图片的方法

前言: 目前网上有很多圆角图片的实例,Github上也有一些成熟的项目.之前做项目,为了稳定高效都是选用Github上的项目直接用.但这种结束也是Android开发必备技能 ,所以今天就来简单研究一下该技术,分享给大家. 预备知识: Xfermode介绍: 下面是Android ApiDemo里的"Xfermodes"实例,效果图. Xfermode有三个子类,结构如下: public class Xfermode extends Object java.lang.Object ? a

Android 圆形/圆角图片的方法

Android 圆形/圆角图片的方法 目前网上有很多圆角图片的实例,Github上也有一些成熟的项目.之前做项目,为了稳定高效都是选用Github上的项目直接用.但这种结束也是Android开发必备技能 ,所以今天就来简单研究一下该技术,分享给大家. 预备知识: Xfermode介绍: 下面是Android ApiDemo里的"Xfermodes"实例,效果图. Xfermode有三个子类,结构如下: view sourceprint? 1.public class 2.Xfermod