iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在Android中利用ImageView控件实现一个圆角功能
  • 498
分享到

怎么在Android中利用ImageView控件实现一个圆角功能

androidageimageview 2023-05-31 04:05:02 498人浏览 安东尼
摘要

今天就跟大家聊聊有关怎么在Android中利用ImageView控件实现一个圆角功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。创建CustomImageView 类在你的项目中(

今天就跟大家聊聊有关怎么在Android中利用ImageView控件实现一个圆角功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创建CustomImageView 类在你的项目中(源码如下)

import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.graphics.canvas;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.graphics.RectF;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.ImageView;import com.towatt.charge.towatt.R;public class CustomImageView extends android.support.v7.widget.AppCompatImageView { private Paint paint; private Paint paintBorder; private Bitmap mSrcBitmap;  private float mRadius; private boolean mIsCircle; public CustomImageView(final Context context) {  this(context, null); } public CustomImageView(Context context, AttributeSet attrs) {  this(context, attrs, R.attr.customImageViewStyle); } public CustomImageView(Context context, AttributeSet attrs, int defStyle) {  super(context, attrs, defStyle);  TypedArray ta = context.obtainStyledAttributes(attrs,    R.styleable.CustomImageView, defStyle, 0);  mRadius = ta.getDimension(R.styleable.CustomImageView_radius, 0);  mIsCircle = ta.getBoolean(R.styleable.CustomImageView_circle, false);  int srcResource = attrs.getAttributeResourceValue(    "Http://schemas.android.com/apk/res/android", "src", 0);  if (srcResource != 0)   mSrcBitmap = BitmapFactory.decodeResource(getResources(),     srcResource);  ta.recycle();  paint = new Paint();  paint.setAntiAlias(true);  paintBorder = new Paint();  paintBorder.setAntiAlias(true); } @Override public void onDraw(Canvas canvas) {  int width = canvas.getWidth() - getPaddingLeft() - getPaddingRight();  int height = canvas.getHeight() - getPaddingTop() - getPaddingBottom();  Bitmap image = drawableToBitmap(getDrawable());  if (mIsCircle) {   Bitmap reSizeImage = reSizeImageC(image, width, height);   canvas.drawBitmap(createCircleImage(reSizeImage, width, height),     getPaddingLeft(), getPaddingTop(), null);  } else {   Bitmap reSizeImage = reSizeImage(image, width, height);   canvas.drawBitmap(createRoundImage(reSizeImage, width, height),     getPaddingLeft(), getPaddingTop(), null);  } }  private Bitmap createRoundImage(Bitmap source, int width, int height) {  Paint paint = new Paint();  paint.setAntiAlias(true);  Bitmap target = Bitmap.createBitmap(width, height, Config.ARGB_8888);  Canvas canvas = new Canvas(target);  RectF rect = new RectF(0, 0, width, height);  canvas.drawRoundRect(rect, mRadius, mRadius, paint);  // 核心代码取两个图片的交集部分  paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));  canvas.drawBitmap(source, 0, 0, paint);  return target; }  private Bitmap createCircleImage(Bitmap source, int width, int height) {  Paint paint = new Paint();  paint.setAntiAlias(true);  Bitmap target = Bitmap.createBitmap(width, height, Config.ARGB_8888);  Canvas canvas = new Canvas(target);  canvas.drawCircle(width / 2, height / 2, Math.min(width, height) / 2,    paint);  // 核心代码取两个图片的交集部分  paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));  canvas.drawBitmap(source, (width - source.getWidth()) / 2,    (height - source.getHeight()) / 2, paint);  return target; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  int width = MeasureSpec.getSize(widthMeasureSpec);  int height = MeasureSpec.getSize(heightMeasureSpec);  setMeasuredDimension(width, height); }  private Bitmap drawableToBitmap(Drawable drawable) {  if (drawable == null) {   if (mSrcBitmap != null) {    return mSrcBitmap;   } else {    return null;   }  } else if (drawable instanceof BitmapDrawable) {   return ((BitmapDrawable) drawable).getBitmap();  }  Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),    drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);  Canvas canvas = new Canvas(bitmap);  drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());  drawable.draw(canvas);  return bitmap; }  private Bitmap reSizeImage(Bitmap bitmap, int newWidth, int newHeight) {  int width = bitmap.getWidth();  int height = bitmap.getHeight();  // 计算出缩放比  float scaleWidth = ((float) newWidth) / width;  float scaleHeight = ((float) newHeight) / height;  // 矩阵缩放bitmap  Matrix matrix = new Matrix();  matrix.postScale(scaleWidth, scaleHeight);  return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); }  private Bitmap reSizeImageC(Bitmap bitmap, int newWidth, int newHeight) {  int width = bitmap.getWidth();  int height = bitmap.getHeight();  int x = (newWidth - width) / 2;  int y = (newHeight - height) / 2;  if (x > 0 && y > 0) {   return Bitmap.createBitmap(bitmap, 0, 0, width, height, null, true);  }  float scale = 1;  if (width > height) {   // 按照宽度进行等比缩放   scale = ((float) newWidth) / width;  } else {   // 按照高度进行等比缩放   // 计算出缩放比   scale = ((float) newHeight) / height;  }  Matrix matrix = new Matrix();  matrix.postScale(scale, scale);  return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); }}

--结束END--

本文标题: 怎么在Android中利用ImageView控件实现一个圆角功能

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

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

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

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

下载Word文档
猜你喜欢
  • 怎么在Android中利用ImageView控件实现一个圆角功能
    今天就跟大家聊聊有关怎么在Android中利用ImageView控件实现一个圆角功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。创建CustomImageView 类在你的项目中(...
    99+
    2023-05-31
    android age imageview
  • 如何在Android中利用Glide实现一个图片圆角功能
    如何在Android中利用Glide实现一个图片圆角功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、简介:介绍两种使用 BitmapTransformation 来实...
    99+
    2023-05-31
    glide android roi
  • 怎么在Android中利用ImageView将图片进行圆形、圆角处理
    本篇文章给大家分享的是有关怎么在Android中利用ImageView将图片进行圆形、圆角处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。基本思路是,自定义一个ImageVi...
    99+
    2023-05-31
    android imageview age
  • 使用JavaScript怎么实现一个圆角功能
    使用JavaScript怎么实现一个圆角功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。找在IE下实现css3效果的圆角时找到的一个实例,没有测试,不知道使用起来怎么样,...
    99+
    2023-06-08
  • 如何在Android中利用imageview实现一个图片缩放功能
    如何在Android中利用imageview实现一个图片缩放功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android 自定义imageview实现图片缩放实例详解&nb...
    99+
    2023-05-31
    android imageview age
  • 怎么在Android应用中利用控件实现一个对话框功能
    怎么在Android应用中利用控件实现一个对话框功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。自定义提示对话框DialogM.Builder builder&nb...
    99+
    2023-05-31
    android roi
  • 怎么在Android中利用控件实现一个验证码倒计时功能
    这期内容当中小编将会给大家带来有关怎么在Android中利用控件实现一个验证码倒计时功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用方式<com.landptf.view.CountDownM...
    99+
    2023-05-31
    android roi
  • 如何在Android应用中利用ImageView实现一个选择本地图片功能
    这期内容当中小编将会给大家带来有关如何在Android应用中利用ImageView实现一个选择本地图片功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。布局文件:<RelativeLayout xm...
    99+
    2023-05-31
    android imageview age
  • 怎么在Android中利用DownloadManager实现一个文件下载功能
    本篇文章为大家展示了怎么在Android中利用DownloadManager实现一个文件下载功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android中DownloadManager实现文件下...
    99+
    2023-05-31
    android downloadmanager age
  • 怎么在Android中利用ImageView实现一个放大缩小动画
    这期内容当中小编将会给大家带来有关怎么在Android中利用ImageView实现一个放大缩小动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.配置文件直接添加当直接在布局文件中添加图片的话,可以在自...
    99+
    2023-05-31
    android imageview age
  • Android中怎么利用RadioButton控件实现多选一功能
    Android中怎么利用RadioButton控件实现多选一功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。将多个RadioButton放在一个RadioGroup里面<...
    99+
    2023-05-30
    radiobutton android
  • 怎么在Android中利用IntentUtil实现一个跳转功能
    本文章向大家介绍怎么在Android中利用IntentUtil实现一个跳转功能的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Android是什么Android是一种基于Linux内核的自由及开放源代码的操作系统...
    99+
    2023-05-30
    android intentutil
  • 怎么在Android 中利用camera2 API 实现一个相机功能
    怎么在Android 中利用camera2 API 实现一个相机功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。流程因为 camera2 提供的接口比较多,虽然很灵活,但是也...
    99+
    2023-05-31
    android camera2 api roi
  • 怎么在Android中利用AlertDialog实现一个多选框功能
    怎么在Android中利用AlertDialog实现一个多选框功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在使用AlertDialog实现单选和多选对话框时,分别设置se...
    99+
    2023-05-31
    android alertdialog roi
  • 怎么在Android中利用CountDownTimer实现一个倒计时功能
    这篇文章主要介绍了怎么在Android中利用CountDownTimer实现一个倒计时功能,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:Android是什么Android是一种基于Lin...
    99+
    2023-05-30
    android countdowntimer
  • 怎么在Centos中利用文件实现一个swap功能
    怎么在Centos中利用文件实现一个swap功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。创建swap文件mkdir/var/swap#创建一个文件夹用于存放交换分区文件,...
    99+
    2023-06-10
  • 怎么在Android应用中利用View实现一个旋转功能
    本篇文章为大家展示了怎么在Android应用中利用View实现一个旋转功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。添加右侧旋转Bitmap turnBitmap =&nbs...
    99+
    2023-05-31
    android view roi
  • 怎么在Android中使用圆形控件实现画圆效果
    这篇文章给大家介绍怎么在Android中使用圆形控件实现画圆效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。package com.example.demo.util;import android...
    99+
    2023-06-15
  • 怎么在Android中利用orc实现一个文字识别功能
    这篇文章给大家介绍怎么在Android中利用orc实现一个文字识别功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、什么是orcorc是指利用光学字符识别(ORC全称:Optical Character Recog...
    99+
    2023-05-31
    android orc roi
  • 怎么在Android中利用GridView实现一个水平滚动功能
    怎么在Android中利用GridView实现一个水平滚动功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Android为我们提供了竖直方向的滚动控件Grid...
    99+
    2023-05-31
    gridview idv android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作