Android 实现圆角方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 实现圆角方式相关的知识,希望对你有一定的参考价值。

参考技术A glide加载圆角和centercrop的问题,采用如下方式,设置两个Transformer

Flutter笔记-实现圆角的几种方式

裁剪

ClipRRect

ClipRRect组件可以对子组件进行圆角裁剪,默认圆角半径为0。
ClipRRect定义如下:

ClipRRect ClipRRect(
	Key key, 
	BorderRadius borderRadius,   // 圆角
	CustomClipper<RRect> clipper, 
	Clip clipBehavior, 
	Widget child  // 子内容
)

设置单边圆角

new ClipRRect(
    child: Image.network(
    	imgUrl, 
    	scale: 8.5, 
    	fit: BoxFit.cover,
    ),
    borderRadius: BorderRadius.only(
    	topLeft: Radius.circular(20),
        topRight: Radius.circular(20)
    ),
),

效果图:

设置圆角

new ClipRRect(
   child: Image.network(
   		imgUrl, 
   		scale: 8.5, 
   		fit: BoxFit.cover,
   ),
   borderRadius: BorderRadius.circular(20)
),

效果:

设置圆形

new Row(
   children: <Widget>[
       new Container(
         height: 100,
         width: 100,
         child: new ClipRRect(
            child: Image.network(
                      imgUrl,
                      height: 100,
                      fit: BoxFit.cover,
           ),
           borderRadius: BorderRadius.circular(50)),
      ),
  ],
),

效果:

ClipOval

ClipOval裁剪为椭圆形,椭圆形的大小为正切父组件,因此如果父组件为正方形,切出来是圆形。

new Row(
  children: <Widget>[
     new ClipOval(
          child: Image.network(
                 imgUrl,
                 width: 100,
                 height: 100,
                 fit: BoxFit.cover,
         ),
    ),
 ],
),

效果:

ClipPath

ClipPath组件根据路径进行裁剪,我们自定义裁剪路径也可以使用系统提供的。

new Row(
  children: <Widget>[
      ClipPath.shape(
          shape: CircleBorder(),
          child: Container(
                  height: 100,
                  width: 100,
                  child: Image.network(
                    imgUrl,
                    fit: BoxFit.cover,
                  ),
         ),
     ),
 ],
),
  • shape参数是ShapeBorder类型
    • RoundedRectangleBorder:圆角矩形
    • ContinuousRectangleBorder:直线和圆角平滑连续的过渡,和RoundedRectangleBorder相比,圆角效果会小一些
    • StadiumBorder:类似于足球场的形状,两端半圆
    • BeveledRectangleBorder:斜角矩形
    • CircleBorder:圆形

效果:

new Row(
  children: <Widget>[
      ClipPath.shape(
          shape: StadiumBorder(),
          child: Container(
                  width: 100,
                  child: Image.network(
                    imgUrl,
                    fit: BoxFit.cover,
                  ),
         ),
     ),
 ],
),

效果:

圆圈控件

CircleAvatar

代表用户的圆圈的控件

new Row(
     children: <Widget>[
           new CircleAvatar(
                backgroundImage: NetworkImage(imgUrl),
                radius: 50.0,
           ),
     ],
),

以上是关于Android 实现圆角方式的主要内容,如果未能解决你的问题,请参考以下文章

Android圆角图片

Android圆角图片

Android 实现圆角布局,变相实现圆角图片效果(不同位置不同弧度)

Android 圆角、圆形 ImageView 实现

Android圆角背景设置

android 圆角实现方案小结