在Android中,默认情况下ImageView是一个矩形.如何在ImageView中将其设置为圆角矩形(将我的Bitmap的所有4个角切掉为圆角矩形)?
android rounded-corners imageview android-image android-imageview
注意:我知道有很多关于这个的问题和存储库,但似乎没有一个适合我试图实现的目标.
给定任何宽高比的位图,我希望将其设置为ImageView的内容(仅使用drawable,而不扩展ImageView),以便内容将被中心裁剪,但仍为圆形.
所有这一切,内存使用量最少,因为有时图像可能非常大.我不想为此创建一个全新的Bitmap.内容已经存在......
我发现的所有解决方案都没有我写过的东西:有些不是中心裁剪,有些人认为图像是方形的,有些是从给定的位图创建一个新的位图......
除了尝试各种存储库之外,我已经尝试过本教程,并尝试针对非方形宽高比进行修复,但我失败了.
这是它的代码,以防网站关闭:
public class RoundImage extends Drawable {
private final Bitmap mBitmap;
private final Paint mPaint;
private final RectF mRectF;
private final int mBitmapWidth;
private final int mBitmapHeight;
public RoundImage(Bitmap bitmap) {
mBitmap = bitmap;
mRectF = new RectF();
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
final BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
mPaint.setShader(shader);
mBitmapWidth = mBitmap.getWidth();
mBitmapHeight = mBitmap.getHeight();
}
@Override
public void draw(Canvas canvas) {
canvas.drawOval(mRectF, mPaint);
} …
Run Code Online (Sandbox Code Playgroud)