广告
返回顶部
首页 > 资讯 > 移动开发 >Android自定义圆角ImageView
  • 767
分享到

Android自定义圆角ImageView

Android 2022-06-06 09:06:10 767人浏览 泡泡鱼
摘要

废话不多说了,直接给大家贴代码了。 java类如下: import Android.content.Context; import android.content.res

废话不多说了,直接给大家贴代码了。

java类如下:


import Android.content.Context; 
import android.content.res.TypedArray; 
import android.graphics.Bitmap; 
import android.graphics.Bitmap.Config; 
import android.graphics.canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Path; 
import android.graphics.PorterDuff; 
import android.graphics.PorterDuffXfermode; 
import android.graphics.RectF; 
import android.util.AttributeSet; 
import android.widget.ImageView; 
import cn.dotcreate.tt.R; 
public class RoundAngleImageView extends ImageView { 
private Paint paint; 
private int roundWidth = 5; 
private int roundHeight = 5; 
private Paint paint2; 
public RoundAngleImageView(Context context, AttributeSet attrs, int defStyle) { 
super(context, attrs, defStyle); 
init(context, attrs); 
} 
public RoundAngleImageView(Context context, AttributeSet attrs) { 
super(context, attrs); 
init(context, attrs); 
} 
public RoundAngleImageView(Context context) { 
super(context); 
init(context, null); 
} 
private void init(Context context, AttributeSet attrs) { 
if(attrs != null) { 
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RoundAngleImageView); 
roundWidth= a.getDimensionPixelSize(R.styleable.RoundAngleImageView_roundWidth, roundWidth); 
roundHeight= a.getDimensionPixelSize(R.styleable.RoundAngleImageView_roundHeight, roundHeight); 
}else { 
float density = context.getResources().getDisplayMetrics().density; 
roundWidth = (int) (roundWidth*density); 
roundHeight = (int) (roundHeight*density); 
} 
paint = new Paint(); 
paint.setColor(Color.WHITE); 
paint.setAntiAlias(true); 
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); 
paint2 = new Paint(); 
paint2.setXfermode(null); 
} 
@Override 
public void draw(Canvas canvas) { 
Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Config.ARGB_8888); 
Canvas canvas2 = new Canvas(bitmap); 
super.draw(canvas2); 
drawLiftUp(canvas2); 
drawRightUp(canvas2); 
drawLiftDown(canvas2); 
drawRightDown(canvas2); 
canvas.drawBitmap(bitmap, 0, 0, paint2); 
bitmap.recycle(); 
} 
private void drawLiftUp(Canvas canvas) { 
Path path = new Path(); 
path.moveTo(0, roundHeight); 
path.lineTo(0, 0); 
path.lineTo(roundWidth, 0); 
path.arcTo(new RectF( 
0, 
0, 
roundWidth*2, 
roundHeight*2), 
-90, 
-90); 
path.close(); 
canvas.drawPath(path, paint); 
} 
private void drawLiftDown(Canvas canvas) { 
Path path = new Path(); 
path.moveTo(0, getHeight()-roundHeight); 
path.lineTo(0, getHeight()); 
path.lineTo(roundWidth, getHeight()); 
path.arcTo(new RectF( 
0, 
getHeight()-roundHeight*2, 
0+roundWidth*2, 
getHeight()), 
90, 
90); 
path.close(); 
canvas.drawPath(path, paint); 
} 
private void drawRightDown(Canvas canvas) { 
Path path = new Path(); 
path.moveTo(getWidth()-roundWidth, getHeight()); 
path.lineTo(getWidth(), getHeight()); 
path.lineTo(getWidth(), getHeight()-roundHeight); 
path.arcTo(new RectF( 
getWidth()-roundWidth*2, 
getHeight()-roundHeight*2, 
getWidth(), 
getHeight()), 0, 90); 
path.close(); 
canvas.drawPath(path, paint); 
} 
private void drawRightUp(Canvas canvas) { 
Path path = new Path(); 
path.moveTo(getWidth(), roundHeight); 
path.lineTo(getWidth(), 0); 
path.lineTo(getWidth()-roundWidth, 0); 
path.arcTo(new RectF( 
getWidth()-roundWidth*2, 
0, 
getWidth(), 
0+roundHeight*2), 
-90, 
90); 
path.close(); 
canvas.drawPath(path, paint); 
} 
} 

定义一个attr.xml的文件,放在values目录下面,内容如下:


<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="RoundAngleImageView">
<attr name="roundWidth" fORMat="dimension" />
<attr name="roundHeight" format="dimension" />
</declare-styleable>
</resources>

使用示例如下:

先要声明属性的名字空间:

然后再写跟一般定义View一样:


<cn.dotcreate.tt.ui.RoundAngleImageView
android:id="@+id/headIV"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_centerVertical="true"
android:layout_marginLeft="2dp"
app:roundWidth="10dp"
app:roundHeight="10dp"
android:src="@drawable/default_head_icon" />

效果如图:

以上代码简单介绍了Android自定义圆角ImageView的相关知识,希望本文分享对大家有所帮助。

您可能感兴趣的文章:Android自定义ImageView实现圆角功能Android实现自定义ImageView的圆角矩形图片效果Android自定义圆角ImageView控件Android自定义控件之圆形、圆角ImageViewAndroid ImageView绘制圆角效果Android实现圆角矩形和圆形ImageView的方式Android 圆角 ImageView类可设置弧度(代码简单)Android中通过反射实现圆角ImageView代码实例Android自定义带圆角的ImageView


--结束END--

本文标题: Android自定义圆角ImageView

本文链接: https://www.lsjlt.com/news/25968.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android自定义圆角ImageView
    废话不多说了,直接给大家贴代码了。 java类如下: import android.content.Context; import android.content.res...
    99+
    2022-06-06
    Android
  • Android自定义控件之圆形、圆角ImageView
    一、问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的:  二、怎么搞? 机智的我,第一想法就是,切一张中间圆形透明、四周与底色相同、尺...
    99+
    2022-06-06
    Android
  • Android自定义圆角柱状图
    本文实例为大家分享了Android自定义圆角柱状图的具体代码,供大家参考,具体内容如下 需求: 画一个圆角柱状图,显示12个月的数据,Y轴数据动态分割,如果是当前月,就画出当前月图片...
    99+
    2022-11-13
  • Android自定义Drawable实现圆形和圆角
    本文实例为大家分享了自定义Drawable实现圆形和圆角的具体代码,供大家参考,具体内容如下圆形package com.customview.widget;import android.graphics.Bitmap;import andr...
    99+
    2023-05-30
    android drawable 圆形
  • Android ImageView绘制圆角效果
    前言 Android 开发中,我们经常需要实现图片的圆形/圆角的效果,我们可以使用两种方式来实现这样的效果。一种是使用Xfermode,另一种是BitmapShader来实现。...
    99+
    2022-06-06
    Android
  • Android如何自定义圆角柱状图
    这篇文章主要为大家展示了“Android如何自定义圆角柱状图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android如何自定义圆角柱状图”这篇文章吧。具体内容如下需求:画一个圆角柱状图,显示...
    99+
    2023-06-29
  • Android自定义Drawable实现圆角效果
    Drawable是一种可绘制资源的载体,如图形、图像等。在实际开发中可以作为view的背景。主要有静态和动态两种方式,静态通过xml描述使用,动态即自定义Drawable。本文实现一个圆形和圆角的背景图片效果。效果图:实现方式:初始化一个B...
    99+
    2023-05-30
    drawable 圆角 roi
  • Android自定义样式圆角dialog对话框
    本文实例为大家分享了Android创建自定义样式圆角dialog对话框的具体代码,供大家参考,具体内容如下 效果如上,圆角对话框,标题和正文都可以自己设定 做法: 1.在res文件...
    99+
    2022-11-12
  • Android编程实现自定义ImageView圆图功能的方法
    本文实例讲述了Android编程实现自定义ImageView圆图功能的方法。分享给大家供大家参考,具体如下:首先很感谢开源项目Universal Image Loader图片加载框架。之前也看过一段时间框架源码,但是却没有时间进行知识点的总...
    99+
    2023-05-30
    android 自定义 imageview
  • Android自定义控件之圆形/圆角的实现代码
    一、问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的:  二、怎么搞? 机智的我,第一想法就是,切一张中间圆形透明、四周与底色相同、尺寸...
    99+
    2022-06-06
    Android
  • Android之自定义View实现带4圆角或者2圆角的效果
    1 问题 实现任意view经过自定义带4圆角或者2圆角的效果 2 原理 1) 实现view 4圆角 我们只需要把左边的图嵌入到右边里面去,最终显示左边的图就行。 2) 实现v...
    99+
    2022-06-06
    view 自定义view Android
  • android 自定义圆角button效果的实例代码(自定义view Demo)
    概述 在平时开发过程中经常会碰到需要使用圆角button的情况,一般也会包括很多其他小功能,比如要在里面添加img,设置不同的圆角大小等。 针对这样的场景,直接使用创建多个s...
    99+
    2022-06-06
    button 自定义 view demo 自定义view Android
  • Android实现圆角矩形和圆形ImageView的方式
    Android中实现圆角矩形和圆形有很多种方式,其中最常见的方法有ImageLoader设置Option和自定义View。 1.ImageLoader加载图片 publi...
    99+
    2022-06-06
    Android
  • Android自定义水平进度条的圆角进度
    平时项目中经常用到自定义进度条样式,我们一般实现的也是下面的第一种,至于第二种的圆角进度,网上介绍的资料也不是很多,这里一起展示一下这两种的实现。 下面开始看代码,先从主界...
    99+
    2022-06-06
    进度条 Android
  • Android怎么自定义样式圆角dialog对话框
    这篇文章主要介绍“Android怎么自定义样式圆角dialog对话框”,在日常操作中,相信很多人在Android怎么自定义样式圆角dialog对话框问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android...
    99+
    2023-06-25
  • Android ImageView 设置圆角及外边框样式
    目录 ImageView 设置圆角及外边框样式一、设置圆角逻辑:裁剪画布二、设置外边框逻辑:在绘制 Drawable 后再绘制外边框三、在项目中集成1. 添加依赖2. 控件样式3. 在 xml 中使用(1)分别指定4个圆角的大小(2...
    99+
    2023-08-19
    android kotlin
  • Android自定义view实现圆形、圆角和椭圆图片(BitmapShader图形渲染)
    一、前言 Android实现圆角矩形,圆形或者椭圆等图形,一般主要是个自定义View加上使用Xfermode实现的。实现圆角图片的方法其实不少,常见的就是利用Xfermode,...
    99+
    2022-06-06
    view 图片 椭圆 Android
  • Android编程自定义圆角半透明Dialog的方法
    本文实例讲述了Android编程自定义圆角半透明Dialog的方法。分享给大家供大家参考,具体如下: 效果图如下: 只是在实例化的时候使用带样式的构造函数即可 new My...
    99+
    2022-06-06
    自定义 方法 dialog Android
  • Android自定义GestureDetector实现手势ImageView
    不说废话了,进入我们今天的主题吧。 先贴上前面内容的地址: Android手势ImageView三部曲(一) Android手势ImageView三部曲(二) Android手...
    99+
    2022-06-06
    Android
  • Android怎么实现自定义圆角输入框和按钮
    这篇文章主要介绍“Android怎么实现自定义圆角输入框和按钮”,在日常操作中,相信很多人在Android怎么实现自定义圆角输入框和按钮问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android怎么实现自定...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作