android studio图片圆角
时间: 2023-05-31 10:18:42 浏览: 582
### 回答1:
Android Studio中实现图片圆角的方法有多种,以下是其中一种:
1. 在res/drawable文件夹下创建一个xml文件,例如:round_corner.xml
2. 在xml文件中添加以下代码:
```
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="@color/white" />
</shape>
```
其中,android:radius属性控制圆角的大小,@color/white为填充颜色,可以根据需要修改。
3. 在布局文件中使用该xml文件作为背景,例如:
```
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/round_corner"
android:src="@drawable/image" />
```
其中,@drawable/image为需要显示的图片。
通过以上步骤,就可以实现Android Studio中图片圆角的效果。
### 回答2:
在Android Studio中,要创建圆角图片可以使用以下两种方法:
方法一:使用xml文件
1. 创建一个drawable资源文件夹,右击res文件夹 → New → Android Resource Directory。
2. 在弹出的窗口中选择drawable,然后点击OK。
3. 在drawable文件夹中,右击 → New → Drawable resource file。
4. 命名xml文件名(例如:rounded_image),并选择root element为shape。
5. 在xml文件里面,添加圆角属性。可以如下rc_radius.xml文件:
```
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#000000" />
<corners android:radius="20dp" />
</shape>
```
在corners中的android:radius属性设置圆角大小,单位为dp。
6. 在ImageView中,将src属性设置为上述xml文件,在你所需要的布局文件中:
```
<ImageView
android:id="@+id/img_rounded"
android:layout_width="120dp"
android:layout_height="120dp"
android:src="@drawable/rc_radius" />
```
这里将src属性设置为我们刚刚创建的xml文件rc_radius.xml。
方法二:使用Glide或Picasso库
除了使用xml文件以外,还可以使用Glide或Picasso库来加载圆角图片。
1. 首先,在build.gradle中添加Glide或Picasso依赖:
```
dependencies {
// Glide
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
// Picasso
implementation 'com.squareup.picasso:picasso:2.71828'
}
```
2. 创建圆角的Transformation类(如: RoundedCornersTransform.java):
使用Glide的示例代码:
```
public class RoundedCornersTransform extends BitmapTransformation {
private static final String ID = "com.example.glide.RoundedCornersTransform";
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private int radius;
public RoundedCornersTransform(int radius) {
this.radius = radius;
}
@Override
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
Bitmap bitmap = pool.get(toTransform.getWidth(), toTransform.getHeight(), Bitmap.Config.ARGB_8888);
bitmap.setHasAlpha(true);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
RectF rectF = new RectF(0, 0, toTransform.getWidth(), toTransform.getHeight());
canvas.drawRoundRect(rectF, radius, radius, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(toTransform, 0, 0, paint);
return bitmap;
}
@Override
public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
}
}
```
使用Picasso的示例代码:
```
public class RoundedCornersTransform implements Transformation {
private int radius;
public RoundedCornersTransform(int radius) {
this.radius = radius;
}
@Override
public Bitmap transform(Bitmap source) {
Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
Paint paint = new Paint();
Rect rect = new Rect(0, 0, source.getWidth(), source.getHeight());
RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
canvas.drawRoundRect(rectF, radius, radius, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(source, rect, rect, paint);
if (source != output) {
source.recycle();
}
return output;
}
@Override
public String key() {
return "RoundedCornersTransform(radius=" + radius + ")";
}
}
```
3. 加载圆角图片:
使用Glide的示例代码:
```
Glide.with(context)
.load(imageUrl)
.circleCrop()
.transform(new RoundedCornersTransform(20))
.into(imageView);
```
使用Picasso的示例代码:
```
Picasso.get()
.load(imageUrl)
.transform(new RoundedCornersTransform(20))
.into(imageView);
```
在transform方法中传入我们刚刚创建的RoundedCornersTransform类并设置圆角半径即可。使用circleCrop()方法可以让图片显示为圆形。
注:以上两种方法中,圆角大小都可以自由调整。同时,如果是使用了Picasso库来加载图片,在加载圆角图片时,第一次加载可能会比较慢,因为它需要在本地生成一个bitmap缓存。之后再加载同一张圆角图片时就会快很多。
### 回答3:
Android Studio图片圆角的实现有多种方法,下面介绍其中两种较为常用的方法。
一、使用Shape Drawable
Shape Drawable是一种可重用的XML文件,用于为视图设置不同形状和背景。使用Shape Drawable来实现图片圆角也十分简单,只需在res目录下新建xml文件,代码如下:
```xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="@color/black" />
</shape>
```
上面代码中的corners标签用来设置圆角半径大小,solid标签则设置填充色。然后在ImageView的src或background属性中引用该文件即可。
```xml
<ImageView
android:id="@+id/iv_rounded"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/shape_rounded"/>
```
二、使用Glide加载图片
Glide是一款专门设计用于加载图片的Android开源库,其不仅能够加载网络图片、本地图片,还能进行图片变换和圆形图片等功能。具体实现圆角图片的方法如下:
```java
Glide.with(mContext)
.load(imgUrl)
.transform(new RoundedCorners(20))
.into(imageView);
```
上面代码中的RoundedCorners(20)表示设置圆角半径大小为20px,将该函数作为参数传递给transform方法即可实现图片圆角。
以上就是两种常见的实现Android Studio图片圆角的方法,根据实际需求可以选择更为适合的方法去实现。
阅读全文