AndroidStudio 如何設定圓角圖片
阿新 • • 發佈:2018-11-27
今天在做公司專案於的時候,要求做一個圓角圖片,一開始想法是在imgView設定一個背景弧度,後來發現有些不好,索性百度了下,百度上實現的方法有很多。我選擇用Glide的方式實現
貼一個Glide官方地址:Glide官方地址
不得不說,這個庫還是非常好用的,用來載入各種圖片也非常方面,強烈推薦。在引用這個庫的時候官方最新版4.8.0為
有可能會有sdk版本問題,推薦使用3.5.2
https://github.com/bumptech/glide
要實現圓角只需要一個類
import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; /** * Created by Administrator on 2018/11/19 0019. */ //圓角圖片 public class GlideRoundTransform extends BitmapTransformation { private static float radius = 0f; public GlideRoundTransform(Context context) { this(context, 4); } public GlideRoundTransform(Context context, int dp) { super(context); this.radius = Resources.getSystem().getDisplayMetrics().density * dp; } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { return roundCrop(pool, toTransform); } private static Bitmap roundCrop(BitmapPool pool, Bitmap source) { if (source == null) return null; Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); if (result == null) { result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight()); canvas.drawRoundRect(rectF, radius, radius, paint); return result; } @Override public String getId() { return getClass().getName() + Math.round(radius); } }
在自己的專案引用這個類,在需要設定圓角圖片的地方使用
imgLeft = findViewById(R.id.jxsh_img_left);
Glide.with(this)
.load(R.mipmap.ceshi1)
.transform(new GlideRoundTransform(this, 12))
.into(imgLeft);
這個12表示圓角的弧度為多少dp。還是很方便的。
最後的最後,別忘了在imgview裡面設定
android:scaleType="fitXY"
這是第二篇。繼續加油