【发布时间】:2017-04-12 19:38:02
【问题描述】:
我想在我的应用程序中使用圆形 ImageView。我找到了一些代码,但这只是圆角图像而不是圈子。这是我的代码。还要检查图像。
public class CircularImageView extends android.support.v7.widget.AppCompatImageView {
public CircularImageView(Context context) {
super(context);
}
public CircularImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CircularImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
Drawable drawable = getDrawable();
if (drawable == null) {
return;
}
if (getWidth() == 0 || getHeight() == 0) {
return;
}
Bitmap b = ((BitmapDrawable) drawable).getBitmap();
Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);
int w = getWidth(), h = getHeight();
Bitmap roundBitmap = getRoundBitmap(bitmap, w);
canvas.drawBitmap(roundBitmap, 0, 0, null);
}
public static Bitmap getRoundBitmap(Bitmap bmp, int radius) {
Bitmap sBmp;
if (bmp.getWidth() != radius || bmp.getHeight() != radius) {
float smallest = Math.min(bmp.getWidth(), bmp.getHeight());
float factor = smallest / radius;
sBmp = Bitmap.createScaledBitmap(bmp, (int)(bmp.getWidth() / factor), (int)(bmp.getHeight() / factor), false);
} else {
sBmp = bmp;
}
Bitmap output = Bitmap.createBitmap(radius, radius,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xffa19774;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, radius, radius);
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(Color.parseColor("#BAB399"));
canvas.drawCircle(radius / 2 + 0.7f,
radius / 2 + 0.7f, radius / 2 + 0.1f, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(sBmp, rect, rect, paint);
return output;
}
}
这里是xml文件
<com.example.CircularImageView
android:layout_width="70dp"
android:layout_height="70dp"
app:srcCompt="@drawable/dummy />
我在 stackoverflow 上阅读了很多答案,但没有根据我的要求找到任何答案。我不想使用任何我想创建自己的代码的库。
我是 android 的新手,你能告诉我我的代码中缺少我吗?
【问题讨论】:
-
“我找到了一些代码,但这只是圆形图像而不是圆形” - 请解释其中的区别。您可能会考虑在某处上传图像并从您的“问题”链接到它。 “没有根据我的要求找到任何东西”——请详细说明您的“要求”是什么。
-
@CommonsWare 请检查我更新我的问题。圆形意味着它只是圆角
-
好吧,当我在 Google 上搜索
android imageview rounded corners时,我会找到各种解决方案。显然,您必须进行类似的搜索。当你尝试these answers和this blog post等时,你遇到了什么问题?
标签: java android android-imageview