如何在圆形 imageView android 上添加一个阴影和边界

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在圆形 imageView android 上添加一个阴影和边界相关的知识,希望对你有一定的参考价值。

参考技术A 我创建了 CircularImageView 这一问题:创建在 android 中的圆形图像视图
下载GitHub的项目
1) 这是 CircularImageView 类:
public class CircularImageView extends ImageView
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);

Bitmap roundBitmap = getCroppedBitmap(bitmap, getWidth());
canvas.drawBitmap(roundBitmap, 0, 0, null);


public static Bitmap getCroppedBitmap(Bitmap bmp, int radius)
Bitmap sbmp;
if(bmp.getWidth() != radius || bmp.getHeight() != radius)
sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false);
else
sbmp = bmp;

Bitmap output = Bitmap.createBitmap(sbmp.getWidth(), sbmp.getHeight(), Bitmap.Config.ARGB_8888);
final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());

Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
paint.setColor(Color.parseColor("#BAB399"));

Canvas c = new Canvas(output);
c.drawARGB(0, 0, 0, 0);
c.drawCircle(sbmp.getWidth() / 2+0.7f, sbmp.getHeight() / 2+0.7f, sbmp.getWidth() / 2+0.1f, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
c.drawBitmap(sbmp, rect, rect, paint);

return output;



2) 我在我像这样的布局中使用:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cccccc"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp" >

<com.mikhaellopez.circularimageview.CircularImageView
android:id="@+id/imageViewCircular"
android:layout_width="@dimen/image_view_size"
android:layout_height="@dimen/image_view_size"
android:layout_gravity="center"
android:background="@drawable/border"
android:src="@drawable/image" />

</LinearLayout>本回答被提问者和网友采纳

Android - 圆形+ish形状内的Imageview?

【中文标题】Android - 圆形+ish形状内的Imageview?【英文标题】:Android - Imageview inside round +ish shape? 【发布时间】:2015-12-24 11:52:18 【问题描述】:

如何在这种形状内设置矩形图像,并带有剪辑绑定。我得到的唯一资源就是这个带有笔画和矩形图像视图的形状。您对如何实现这一结果有什么建议吗?

【问题讨论】:

你必须使用搜索。您的问题有很多答案:***.com/questions/18378741/… 先生,这些我都看过了。到目前为止,我发现的所有示例都只是简单的 ROUND 形状。如果那是我的情况,我不会发布这个问题。我提出的形状不是 100% 圆形的。这就是为什么我想知道是否有其他方法可以做到这一点。 所有这些答案都解释了使用Path 切割图像的方法。 Path 可能完全不同。例如,您的“圆形”形状可以由四个(或更多)弧形创建。 【参考方案1】:

正如我刚刚回答其他人一样,我认为第一步是“我如何做这个简洁的 UI 技巧?”应该始终查看 wasabeef 的 UI libraries 惊人收藏。在您的情况下,请查看可屏蔽布局。有了它,您可以提供一个可绘制对象用作图像的蒙版。

【讨论】:

这对先生很有帮助。谢谢 :) 。我希望我可以将其标记为 ans,但我的代表很低。

以上是关于如何在圆形 imageView android 上添加一个阴影和边界的主要内容,如果未能解决你的问题,请参考以下文章

Android 圆角、圆形 ImageView 实现

如何在 Android 中创建圆形 ImageView? [复制]

如何在android中以圆形裁剪图像?

Android学习笔记-绘制圆形ImageView实例

Android自己定义圆形ImageView(圆形头像 可指定大小)

android - 自定义圆形 imageView 得到错误膨胀