重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

android矩形圆角,安卓图标圆角规范

Android studio圆角矩形的布局如何设计?

你可以使用shape定义一个圆角矩形,并将其作为布局的背景即可。

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了子长免费建站欢迎大家使用!

圆角矩形的shape代码如下:

//定义四个圆角 文件名shape_round_corner

shape xmlns:android=""

solid android:color="#ff00" /

corners android:topLeftRadius="12dp"

android:topRightRadius="12dp"

android:bottomRightRadius="12dp"

android:bottomLeftRadius="12dp"/

stroke android:width="1dp" android:color="#ff0" /

/shape

设置背景代码如下:

LinearLayout

android:layout_width="300dp"

android:layout_height="300dp"

android:layout_marginBottom="10dp"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp"

android:layout_marginTop="10dp"

android:alpha="0.8"

android:background="@drawable/shape_round_corner"

/LinearLayout

Android 圆角、圆形 ImageView 实现

我们要实现的图片控件继承自 AppCompatImageView ,它是 ImageView 的子类,但提供了更好的兼容性,我们在此基础上添加了若干自定义的属性和方法以实现最终的 NiceImageView :

要实圆角或者圆形的显示效果,就是对图片显示的内容区域进行“裁剪”,只显示指定的区域即可。如何做呢?

一种比较直接的办法是这样的,由于图片是被绘制在画布上的,所以用 canvas 的 clipPath() 方法先将画布裁剪成指定形状,这样就能让图片按指定形状显示了,重新 draw() 方法即可:

这样使用 src 、 background 属性给ImageView设置显示的图片都能达到预期的显示效果。但是由于 clipPath() 方法不支持抗锯齿,图片边缘会有明显的毛糙感,体验并不理想,所以需要寻找其它方法。

另一种方法是使用图像的 Alpha 合成模式 ,即

PorterDuff 来实现, 官方文档 。这里我们使用其中的 DST_IN 模式。整个过程就是先绘制目标图像,也就是图片;再绘制原图像,即一个圆角矩形或者圆形,这样最终目标图像只显示和原图像重合的区域。

到这里就实现了显示为圆角或者圆形了。但是需要通过 src 属性或者对应的方法来设置图片,否则不能达到预期效果。

绘制边框就相对容易理解了,只需要绘制一个指定样式的圆角矩形或者圆形即可:

当图片显示为圆形时,还可以绘制一个内边框,但圆角矩形的话由于圆角大小的问题,目前只能设置一个边框咯。

但是有个问题,绘制的边框会覆盖在图片上,如果边框太宽会导致图片的可见区域变小了,影像显示效果,像这样,左下角的花盆不见了:

那么如何让边框不覆盖在图片上呢?可以在 Alpha 合成绘制前先将画布缩小一定比例,最后再绘制边框,这样问题就解决了。

缩放后的ImageView显示区域的宽高就是原宽、高分别减去2倍的边框宽度,这样缩小的比例也就显而易见了。效果如下,左下角的花盆出来了:

遮罩可以理解为一层带透明度的颜色,遮罩默认不绘制,当制定了遮罩颜色时才会绘制,实现很简单:

例如加一个透明度30%的红色遮罩后的效果:

核心的实现逻辑就这些了,剩下的就是自定义属性和方法了,有兴趣的可以看源码,都很简单,希望对你有所帮助吧!

更多细节及用法见GitHub:

如果你需要实现类似钉钉的圆形组合头像,例如:

为什么Android 的App 图标慢慢的都开始使用圆角矩形

你说的大部分都是国产app吧,例如哔哩哔哩动画,虽然界面是符合Android Design 的,但是icon依然是iOS风、不符合Android Design 的圆角矩形,不过他们大部分也都是被MIUI带坏的=.=

关于icon的样式,Android Design 的官方文档有详细的介绍,先上原文链接(Iconography | Android Developers)

Use a distinct silhouette. Three-dimensional, front view, with a slight perspective as if viewed from above, so that users perceive some depth.可以看出来,Google 对icon 有以下几个要求:

轮廓鲜明(iOS app 的icon 就是一个反例)

要有立体感 (iOS 再次中枪)

像是从正面斜上一定角度看到的一样,使之看上去有深度(iOS 已经身亡)

综上所述,一切使用圆角矩形图标的Android 应用都是在耍流氓。

============================第二次打分割线=============================

关于Android 应用图标的更多标准,可以参照NovaDNG发表在锋客网上的两篇文章

» 如何设计符合 Android Design 的应用图标 锋客网

» 如何制作一个漂亮的 Android 应用图标 锋客网

android怎么画圆角的矩形

如果你是在自定义view的onDraw方法中:

RectF rectF = new RectF(100 ,100 ,500 ,500);//先画一个矩形

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);//创建画笔

paint.setColor(R.color.colorAccent);//添加画笔颜色

canvas.drawRoundRect(rectF , 30 ,30 , paint);//根据提供的矩形为四个角画弧线,(其中的数字:第一个表示X轴方向大小,第二个Y轴方向大小。可以改成其他的,你可以自己体验),最后添加画笔。

如果你是在布局中直接添加,楼上已经做出方法,我就不举例了。

android绘制圆角矩形为什么圆角边粗了

用shapedrawable画一个圆角矩形作为按钮的background,但是圆角的地方总是有点粗,和直接用xml做出来的背景不一样

float[]

outerR = new float[] { 20f, 20f, 20f, 20f, 0, 0, 0, 0 };

Shape shape = new

RoundRectShape(outerR, null, null);

image.setBackgroundDrawable(new

CustomShapeDrawable(shape,0xffea0000));

class CustomShapeDrawable extends

ShapeDrawable {

int color ;

public CustomShapeDrawable(Shape s,int

color) {

super(s);

this.color =

color;

}

@Override

protected void onDraw(Shape shape, Canvas

canvas, Paint paint) {

paint.setStrokeJoin(Join.ROUND);

paint.setDither(true);

paint.setAntiAlias(true);

paint.setStyle(Style.STROKE);

paint.setColor(0xffea0000);

paint.setStrokeWidth(4f);

shape.draw(canvas, paint);

}

}

把paint.setStrokeJoin这行去掉再试试


当前文章:android矩形圆角,安卓图标圆角规范
文章URL:http://cqcxhl.com/article/dssdddo.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP