Android开发 两种ImageView 圆角化的方法与效果对比
2023-09-11 14:15:13 时间
程序效果如下:
原图:
5dp圆角化及增加边框5dp阴影效果:
第一种方法 :直接在需要圆角化的ImageView外部嵌套一层CardView控件即可
代码如下:(注:网上您能搜索到的都是<android.support.v7.widget.CardView> 实际上这个已经过时了,替代的方案就是下面的Androidx )
使用新的CardView依赖关系androidx.cardview:cardview:1.0.0
。在xml中使用<androidx.cardview.widget.CardView/>
而不是<android.support.v7.widget.CardView/>
。
<androidx.cardview.widget.CardView
android:id="@+id/imgCard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="5dp"
app:cardElevation="5dp"
android:layout_gravity="center"
android:layout_marginTop="20dp" >
<ImageView
android:src="@drawable/userface1"
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"/>
</androidx.cardview.widget.CardView>
主要用到的是3个属性:
app:cardElevation="5dp" 阴影的大小
app:cardCornerRadius="5dp" 卡片的圆角大小
app:contentPadding="5dp" 卡片内容于边距的间隔 通常都是3-5dp左右
第二种方法:ImageView控件自绘,重载onDraw方法实现自己的RoundImageView即可
代码如下:
package com.example.UserCenter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.widget.ImageView;
/**
* @author wh445306
* @version 1.0
* @Description RoundImageView
* @Date 2023-03-12 0:51
*/
@SuppressLint("AppCompatCustomView")
public class RoundImageView extends ImageView {
//圆角弧度
float radius = 20.0f;//20.0f;// 画出圆角效果,圆角(180度为正圆)
public RoundImageView(Context context) {
super(context);
}
public RoundImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public RoundImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
protected void onDraw(Canvas canvas) {
Path path = new Path();
int w = this.getWidth();
int h = this.getHeight();
//绘制圆角imageview
path.addRoundRect(new RectF(0,0,w,h),radius, radius, Path.Direction.CW);
canvas.clipPath(path);
super.onDraw(canvas);
}
}
说明:
两种方法都可以完美实现图片圆角化,第二种重载控件自绘的方法也是不错的。灵活性更高。可以实现特殊复杂的要求,比如只某一个角或两个角圆角化。其它不变。
相关文章
- Android开发之布局文件里实现OnClick事件关联处理方法
- Android应用程序无法读写USB设备的解决方法
- Android动态加入控件约束位置
- Android在fragment onCreateView,onCreate等方法中设置自动弹出输入法无效的原因分析和二种解决方法
- 轻松入门软件测试--兼容性测试(Android篇及iOS篇)
- Android 网卡地址Mac Wifi文件
- 从零开始学android开发-View的setOnClickListener的添加方法
- Android View体系(二)实现View滑动的六种方法
- android studio怎么添加.so文件?android studio加载so文件的方法
- 实现Android Studio JNI开发C/C++使用__android_log_print输出Log
- Android Snackbar使用方法及小技巧-design
- Android基础【1】杀死进程(强行停止)应用程序的方法
- 【VLC-Android】vlc-android简例
- Android应用程序线程消息循环模型分析
- 面试官:“请描述一下Android系统的启动流程”
- Android深入四大组件(四)Android8.0 根Activity启动过程(前篇)
- Android学习之添加自定义对话框图标的方法
- Android Api Demos登顶之路(四十五)Loader-->Cursor
- 【Android开发经验】android:windowSoftInputMode属性具体解释
- Unity Android 之 应用签名发布 Publishing Settings 中创建和自定义 keystore 的简单方法(内附说明和操作步骤)
- Android Studio 常见错误 之 一直处于 gradle download 状态,长时间出现超时,最后构建失败的问题的处理方法
- Android在putString和getString使用方法
- 关于在Android中Activity页面跳转的方法
- android 错误解决方法 ---积累中
- android studio 添加按钮点击事件的三种方法
- Android Studio手动配置Gradle的方法
- Android Studio手动配置Gradle的方法