RoundedImageView是gitHub上面的一個開源組件(https://github.com/vinc3m1/RoundedImageView),實現一些圓形或者圓角矩形是很方便的,
1 <com.makeramen.roundedimageview.RoundedImageView 2 android:id="@+id/iv_hint" 3 android:layout_width="@dimen/x36" 4 android:layout_height="@dimen/x36" 5 android:src="@drawable/icon_no_photo_round" 6 android:scaleType="centerCrop" 7 app:riv_corner_radius="@dimen/x18" 8 app:riv_border_color="@color/white50" 9 app:riv_border_width="@dimen/x1" 10 app:riv_tile_mode="clamp" 11 app:riv_oval="true" 12 app:riv_mutate_background="true" 13 />
其中,riv_corner_radius是指圓角的大小,簡單來說,等於寬度一半時,就是圓形了;小於寬度的一半就是圓角矩形了。
這里特別要注意的幾點:
1、riv_tile_mode 有三種clamp,repeat,mirror,分別是指縮放、重復、鏡像,實現后兩種的效果,最后是src的分辨率小於RoundedImageView的分辨率才比較直觀顯示(如這里121x121---》70x70):
2、src原圖與RoundedImageView的比例關系,使用時要注意設置android:scaleType="",一般來說,有fitCenter,centerCrop,CenterInside,fitXY等幾種(具體區別可以看http://www.cnblogs.com/chq3272991/p/5710498.html)
如要獲得一個圓形,如果src的長寬比為4:3,如果設置fitCenter,把原圖按比例擴大或縮小到ImageView的高度,居中顯示,那么效果如下:
原圖:
顯然是得不到一個圓形的,那么試試改成fitXY、center、centerCrop:
這過程也就是說,要先通過scaleType來調整(裁剪)原圖,然后再進行切圓角、加邊框處理,這里用centerCrop才符合要求。類似的還有很多,大家遇到可以提出來共同探討下。