实现圆形图片、圆形背景

一、实现圆形图片

Android原生没有特别好的实现圆形图片的方法,直接用Glide框架

1.导入依赖

【两种方法,实际效果都一样,可以看一下自己习惯哪种】 

1.1 在Project Structure中 

 ↓选第一个

 

        在左侧选择了<ALL Modules>时,可能会让你选择你需要将依赖导入哪一个module,如果只有一个app可能不会弹出选择,然后进行搜索,选择一个你需要的

        这里我们要用的是implementation 'com.github.bumptech.glide:glide:',

        输入关键字以后search【可能需要等待一段时间】

 

选择你需要的依赖,确定好GROUP ID等 

 

        如果找博客的时候看到有人吐槽最新的版本不好用,这里也可以先点OK然后再去build.gradle文件里改版本

                                                                 继续OK

         然后就会开始下载,保证网络良好就可以了

 1.2 直接在build.gradle中添加依赖

 

2. 简单使用

2.1【圆形图片】

ImageView loginPhoto =view.findViewById(R.id.photo);
//老生常谈了,fid应该都熟悉,这个例子是在Fragment里跑的所以需要通过解析器获得的view来获取对应的ImageView

Glide.with(requireActivity())//如果你在Activity里面写,就用XXXActivity.this
        .load((BitmapDrawable)loginPhoto.getDrawable())//lode里面的参数是图片资源
        .apply(RequestOptions.bitmapTransform(new CircleCrop()))
        .into(loginPhoto);

2.2【圆角图片】

// context表示当前所在活动,例如MainActivity.this
// url表示图片资源网址或本地资源R.drawable.icon等
// apply应用圆形变换方法,10表示圆角半径
// image表示布局中的ImageView控件
//网上的代码我懒得跑了应该没问题
context = MainActivity.this
url = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2F4k%2Fs%2F02%2F2109242332225H9-0-lp.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1652004122&t=70e3b52d14b9bf1bb2d795b7e1d32bf5"
image = (ImageView) findViewById(R.id.image);
Glide.with(context)
         .load(url)
     .apply(RequestOptions.bitmapTransform(new RoundedCorners(10)))
     .into(image);

 

二、圆角背景(自定义shape)

1.新建 Drawable Resource File 

 

2.修改Root element为shape

 

3.设置根标签的shape属性

 因为需要实现的是矩形的圆角,所以shape="rectangle"

 

补充shape的其他取值:

  • rectangle:表示矩形。这种形状的边框是一个矩形,没有圆角

  • line:表示线条。这种形状的边框是一条直线,没有圆角

  • oval:表示椭圆。这种形状的边框是一个椭圆,没有圆角

  • ring:表示环形。这种形状的边框是一个环形,没有圆角

        可以根据需要选择适当的形状类型,并自定义其属性,以实现各种自定义的效果,包括边框宽度和颜色、填充颜色、阴影等

4.添加corners xml标签

<corners
    android:radius="50dp"
    />
    <!--根据需求设置圆角角度的大小-->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
<corners
    android:radius="50dp"
    />
        <!--solid color属性 设置shape的填充颜色-->
<solid
    android:color="#9B83FF"
    />

</shape>

5.使用其他属性,例如渐变

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
<corners
    android:radius="50dp"
    />
<solid
    android:color="@color/white"
    />
<gradient
    android:gradientRadius="10dp"
    android:startColor="@color/white"
    android:endColor="@color/black"
    android:angle="10"
    android:centerX="0"
    android:centerY="0"
    android:type="linear"
   />
<size
    android:height="500dp"
    android:width="300dp"/>
</shape>

 

 
 

在Android开发中,gradient标签用于定义一个渐变色。渐变色可以用来给元素添加复杂的颜色效果,例如背景、边框、填充等。以下是gradient标签中的各个属性及其含义: android:gradientRadius:渐变色的半径。该属性指定了渐变色的半径,可以用来控制渐变色的形状和大小。

android:startColor:渐变色的起始颜色。该属性指定了渐变色的起始颜色,可以用来控制渐变色的颜色和方向。

android:endColor:渐变色的结束颜色。该属性指定了渐变色的结束颜色,可以用来控制渐变色的颜色和方向。

android:angle:渐变色的角度。该属性指定了渐变色的角度,可以用来控制渐变色的方向。

android:centerX:渐变色的中心X坐标。该属性指定了渐变色的中心X坐标,可以用来控制渐变色的位置。

android:centerY:渐变色的中心Y坐标。该属性指定了渐变色的中心Y坐标,可以用来控制渐变色的位置。

android:type:渐变色的类型。该属性指定了渐变色的类型,可以用来控制渐变色的形状和方向。

android:centerColor:渐变色的中心颜色。该属性指定了渐变色的中心颜色,可以用来控制渐变色的颜色和方向。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中,可以通过以下步骤将一张图转化为圆形图: 1. 加载图 使用`System.Drawing.Image.FromFile(string path)`方法加载图,代码示例如下: ```csharp string path = "image.jpg"; Image originalImage = Image.FromFile(path); ``` 2. 创建画布 通过`System.Drawing.Graphics`类创建一个新的画布,并设置画布的宽度、高度和背景颜色,代码示例如下: ```csharp int diameter = Math.Min(originalImage.Width, originalImage.Height); Bitmap canvas = new Bitmap(diameter, diameter); canvas.SetResolution(originalImage.HorizontalResolution, originalImage.VerticalResolution); Graphics graphics = Graphics.FromImage(canvas); graphics.Clear(Color.Transparent); ``` 3. 绘制圆形 使用`System.Drawing.Drawing2D.GraphicsPath`类创建一个圆形路径,并将画布的剪辑区域设置为这个路径,代码示例如下: ```csharp GraphicsPath path = new GraphicsPath(); path.AddEllipse(0, 0, diameter, diameter); graphics.SetClip(path); ``` 4. 绘制图 将原始图绘制到画布上,代码示例如下: ```csharp int x = (diameter - originalImage.Width) / 2; int y = (diameter - originalImage.Height) / 2; graphics.DrawImage(originalImage, x, y); ``` 5. 输出结果 将处理后的图保存到本地或者输出到页面上,代码示例如下: ```csharp string outputPath = "output.png"; canvas.Save(outputPath, ImageFormat.Png); ``` 完整代码示例: ```csharp string path = "image.jpg"; Image originalImage = Image.FromFile(path); int diameter = Math.Min(originalImage.Width, originalImage.Height); Bitmap canvas = new Bitmap(diameter, diameter); canvas.SetResolution(originalImage.HorizontalResolution, originalImage.VerticalResolution); Graphics graphics = Graphics.FromImage(canvas); graphics.Clear(Color.Transparent); GraphicsPath path = new GraphicsPath(); path.AddEllipse(0, 0, diameter, diameter); graphics.SetClip(path); int x = (diameter - originalImage.Width) / 2; int y = (diameter - originalImage.Height) / 2; graphics.DrawImage(originalImage, x, y); string outputPath = "output.png"; canvas.Save(outputPath, ImageFormat.Png); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值