回答
我使用RoundedImageView库。它是用Java编写的,但是您可以使用write a binding而没有太多问题。对于未来的读者
<RoundedImageView
local:riv_corner_radius="15dp"
local:riv_oval="false"
android:scaleType="centerCrop"
android:layout_width="30dp"
android:layout_height="30dp" />
编辑:一旦你这样做,你可以简单地添加到您的.axml
我写的RoundedImageView
为Xamarin.Android的端口,基于这个帖子链接的库。源代码可以找到here和NuGet包here。 A MvxRoundedImageView
也包含在MvvmCross中使用。
当你需要很多圆形时,这不是一个好主意。 另一种方式是屏蔽正常的图片视图,就像在环聊和其他地方使用Google圆角头像视图完成的一样。 – DooMMasteR
你有没有在大型应用程序上运行的任何基准,并且不愿做出这样的声明?我在一个相当大的RecyclerView中使用了这个,我没有任何性能问题。此外,OP没有指定他需要的形状的数量,所以我相信这将完成这项工作 –
我在使用列表视图(成千上万的条目并不重要)和一个sql-cursor适配器滚动的慢速双核设备上遇到了问题将开始滞后和时间分析导致的结论,simpel覆盖更快... 我的评论应该只指出可能的瓶颈,而不是任何真正的问题,因为这种解决方案至少是更清洁,比覆盖形状更好的可读性 – DooMMasteR
public class CircleDrawable : Drawable
{
Bitmap bmp;
BitmapShader bmpShader;
Paint paint;
RectF oval;
public CircleDrawable (Bitmap bmp)
{
this.bmp = bmp;
this.bmpShader = new BitmapShader (bmp, Shader.TileMode.Clamp, Shader.TileMode.Clamp);
this.paint = new Paint() { AntiAlias = true };
this.paint.SetShader (bmpShader);
this.oval = new RectF();
}
public override void Draw (Canvas canvas)
{
canvas.DrawOval (oval, paint);
}
protected override void OnBoundsChange (Rect bounds)
{
base.OnBoundsChange (bounds);
oval.Set (0, 0, bounds.Width(), bounds.Height());
}
public override int IntrinsicWidth {
get {
return bmp.Width;
}
}
public override int IntrinsicHeight {
get {
return bmp.Height;
}
}
public override void SetAlpha (int alpha)
{
}
public override int Opacity {
get {
return (int)Format.Opaque;
}
}
public override void SetColorFilter (ColorFilter cf)
{
}
}
来源:https://github.com/xamarin/xamarin-store-app/blob/master/XamarinStore.Droid/Views/CircleDrawable.cs
请参考以下链接:
上面的代码适用于原生Android。您需要调整代码以转换为c#语法并采用xamarin android。为了您的方便,我已将代码更改为c#。
public class ImageHelper
{
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
Bitmap output = Bitmap.CreateBitmap(bitmap.Width, bitmap.Height
, Android.Graphics.Bitmap.Config.Argb8888);
Canvas canvas = new Canvas(output);
Color color = Color.DodgerBlue;
Paint paint = new Paint();
Rect rect = new Rect(0, 0, bitmap.Width, bitmap.Height);
RectF rectF = new RectF(rect);
float roundPx = pixels;
paint.AntiAlias = true;
canvas.DrawARGB(0, 0, 0, 0);
paint.Color = color;
canvas.DrawRoundRect(rectF, roundPx, roundPx, paint);
paint.SetXfermode(new PorterDuffXfermode(Android.Graphics.PorterDuff.Mode.SrcIn));
canvas.DrawBitmap(bitmap, rect, rect, paint);
return output;
}
<refractored.controls.CircleImageView
android:id="@+id/ImageProfile"
android:layout_width="80dp"
android:layout_height="80dp"
android:scaleType="fitCenter"
android:src="@drawable/app_icon"
android:layout_gravity="center_horizontal"/>
=========================================== ================================ 将refractored.controls.CircleImageView的引用从nuget包添加到您的项目中。
Xamarin组件可供一样的,你可以检查它here
- 1. ImageView的圆形对齐
- 2. Xamarin Android彩色圆角边框ImageView
- 3. 圆形ImageView iOS 8/Xcode 6
- 4. 给出ImageView圆形边界?
- 5. 如何在Android Studio上制作圆形(圆圈)ImageView框?
- 6. ImageView /布局在XML中圆形的圆形
- 7. 带有右下圆形彩色徽章的圆形ImageView
- 8. ImageView的不会更改为圆形
- 9. Android中使用XML的圆形ImageView
- 10. 圆形的ImageView没有正确显示
- 11. 将ImageView边缘显示为圆形
- 12. 圆形ImageView作为钻石出来
- 13. c#xamarin圆形进度条 - Android
- 14. Xamarin Imageview Drag Sample
- 15. xamarin android圆润的imageview高度和宽度调整
- 16. 在触摸点处在ImageView上绘制圆形
- 17. 使圆角的ImageView?
- 18. 旋转一个圆形的方形,在圆顶上有圆点
- 19. 如何实现xamarin形式的圆形布局
- 20. 在ListView行ImageView上的圆角
- 21. Android ImageView变身:从方形到圆形(解决方案更新)
- 22. 如何以编程方式向ImageView添加圆形形状Android
- 23. Xamarin工作室 - ImageView的
- 24. 圆形边上的关节
- 25. iOS上的圆形按钮
- 26. Qpushbutton上的圆形图标
- 27. 在Android上为imageView呈现圆角
- 28. 在imageview上移动形状?
- 29. 在ImageVIew上绘制矩形
- 30. 沿Xamarin形式的圆形路径动画一个按钮形式
你尝试过什么到目前为止办?我们不想通过暗示你知道不适合你的事情来浪费你的时间。 –