今天在做程序的时候遇到一个问题,是把图片显示成圆角的,我们平时所写的ImageView都是直角的,看起来是很生硬的。如果把四个角给设计成圆角,看起来就会圆润一些,没有那么生硬。这个问题想了很久,也想过很多方法,找了很久,后来想到直接在ImageView.onDraw的时候,给他画出圆角来,这样,这个ImageView里面的ImageBitmap就也有圆角的效果了。实现的代码如下:
新建一个class类
- public class RoundCornerImageView extends ImageView {
- public RoundCornerImageView(Context context) {
- super(context);
- }
- public RoundCornerImageView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public RoundCornerImageView(Context context, AttributeSet attrs,
- int defStyle) {
- super(context, attrs, defStyle);
- }
- @Override
- protected void onDraw(Canvas canvas) {
- Path clipPath = new Path();
- int w = this.getWidth();
- int h = this.getHeight();
- clipPath.addRoundRect(new RectF(0, 0, w, h), 10.0f, 10.0f, Path.Direction.CW);
- canvas.clipPath(clipPath);
- super.onDraw(canvas);
- }
- }
下面这行代码就能画出圆角效果,10度的角
- clipPath.addRoundRect(new RectF(0, 0, w, h), 10.0f, 10.0f, Path.Direction.CW);
在layout.xml中直接使用RoundCornerImageView就会出现圆角的ImageView效果
- <com.qise.app.ui.utils.RoundCornerImageView android:id="@+id/foodItem_foodImg"
- android:src="@drawable/food_img_na"
- android:layout_width="80dip"
- android:layout_height="80dip"
- android:scaleType="centerCrop"
- />
有什么不足之处还望各位大神多多指教,大家如果有什么更好的方法可以一起来研究。
http://blog.csdn.net/u013184970/article/details/51911757