├── .gitattributes ├── .gitignore ├── README.md ├── image └── FigureImageView.png ├── source ├── FigureImageView.java ├── attrs.xml └── 示例FigureImageView.java └── test.txt /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear in the root of a volume 35 | .DocumentRevisions-V100 36 | .fseventsd 37 | .Spotlight-V100 38 | .TemporaryItems 39 | .Trashes 40 | .VolumeIcon.icns 41 | 42 | # Directories potentially created on remote AFP share 43 | .AppleDB 44 | .AppleDesktop 45 | Network Trash Folder 46 | Temporary Items 47 | .apdisk 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FigureImageView 2 | ## Introduction 3 |     本类继承自ImageView,可以用于设置图片的形状,现有圆角、圆形、扇形、环形,四种可选方式。 4 | 可以通过set或者xml来设置圆角的半径,以及扇形、环形样式的角度。 5 |
6 | ## Version 7 |     SdkVersion >= 19 8 | ## Usage 9 | ```Xml 10 | 11 | 25 | 32 | 39 | 46 | 53 | 54 | ``` 55 |
56 | FigureImageView 57 |
58 | 59 | ## More 60 | ```Java 61 | 62 | public void setLength(float length) { 63 | this.length = length; 64 | } 65 | ``` 66 | 可用于设置显示图片区域的大小 67 | 68 | ## About 69 | **博客:www.idtkm.com**
70 | **GitHub:https://github.com/Idtk**
71 | **邮箱:IdtkMa@gmail.com**
72 | -------------------------------------------------------------------------------- /image/FigureImageView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Idtk/FigureImageView/902acce76a6d70b8a450f9a596cc8d89e3443058/image/FigureImageView.png -------------------------------------------------------------------------------- /source/FigureImageView.java: -------------------------------------------------------------------------------- 1 | package com.customview; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.graphics.Canvas; 6 | import android.graphics.Paint; 7 | import android.graphics.Path; 8 | import android.graphics.PorterDuff; 9 | import android.graphics.PorterDuffXfermode; 10 | import android.graphics.Rect; 11 | import android.graphics.RectF; 12 | import android.util.AttributeSet; 13 | import android.widget.ImageView; 14 | 15 | /** 16 | * Created by Idtk on 2016/5/29. 17 | * blog : http://www.idtkm.com/ 18 | */ 19 | 20 | public class FigureImageView extends ImageView { 21 | 22 | protected int mViewWidth,mViewHeight; 23 | protected Paint mPaint = new Paint(); 24 | protected Rect rect = new Rect(); 25 | protected float length = 0; 26 | 27 | private RectF rectF = new RectF(); 28 | private Path mPath = new Path(); 29 | private Path mPath1 = new Path(); 30 | 31 | private int modeFlag = 0x00; 32 | private static final int CIRCLE = 0x00; 33 | private static final int ROUNDRECT = 0x01; 34 | private static final int SECTOR = 0x02; 35 | private static final int RING = 0x03; 36 | private int radius = 50; 37 | private float angle = -120; 38 | 39 | public FigureImageView(Context context) { 40 | this(context,null); 41 | } 42 | 43 | public FigureImageView(Context context, AttributeSet attrs) { 44 | this(context, attrs,0); 45 | } 46 | 47 | public FigureImageView(Context context, AttributeSet attrs, int defStyleAttr) { 48 | super(context, attrs, defStyleAttr); 49 | TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.FigureImageView, defStyleAttr,0); 50 | int n = array.getIndexCount(); 51 | for (int i=0; i 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /source/示例FigureImageView.java: -------------------------------------------------------------------------------- 1 | package com.example.administrator.customview; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.graphics.Bitmap; 6 | import android.graphics.Canvas; 7 | import android.graphics.Matrix; 8 | import android.graphics.Paint; 9 | import android.graphics.Path; 10 | import android.graphics.Rect; 11 | import android.graphics.RectF; 12 | import android.graphics.Region; 13 | import android.graphics.drawable.BitmapDrawable; 14 | import android.graphics.drawable.Drawable; 15 | import android.util.AttributeSet; 16 | import android.widget.ImageView; 17 | 18 | /** 19 | * Created by Administrator on 2016/5/29. 20 | */ 21 | 22 | public class FigureImageView extends ImageView { 23 | 24 | protected int mViewWidth,mViewHeight; 25 | protected Paint mPaint = new Paint(); 26 | protected Rect rect = new Rect(); 27 | protected float length; 28 | 29 | private RectF rectF = new RectF(); 30 | private Path mPath = new Path(); 31 | private Path mPath1 = new Path(); 32 | private Path mPath2 = new Path(); 33 | private Matrix matrix = new Matrix(); 34 | private Bitmap b; 35 | 36 | private int modeFlag = 0x00; 37 | private static final int CIRCLE = 0x00; 38 | private static final int ROUNDRECT = 0x01; 39 | private static final int SECTOR = 0x02; 40 | private static final int RING = 0x03; 41 | private int radius = 50; 42 | private float angle = -120; 43 | 44 | public FigureImageView(Context context) { 45 | this(context,null); 46 | } 47 | 48 | public FigureImageView(Context context, AttributeSet attrs) { 49 | this(context, attrs,0); 50 | } 51 | 52 | public FigureImageView(Context context, AttributeSet attrs, int defStyleAttr) { 53 | super(context, attrs, defStyleAttr); 54 | TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.FigureImageView, defStyleAttr,0); 55 | /*int n = array.getIndexCount(); 56 | for (int i=0; i