Android如何设置圆角图片

发布时间 - 2026-01-10 23:16:51    点击率:

在开发过程中有时需要将图片显示成圆角图片,一般我们可以通过在xml中设置drawable shape即可,但今天我给出另一种方法,用java代码动态去设置圆角,顺便做个简单的笔记。

主要原理是使用系统自带api:

RoundedBitmapDrawableFactory

先上效果图:

由于比较简单,直接给出实现方式:

public class MainActivity extends AppCompatActivity {

 private ImageView mImgRectRound;
 private ImageView mImgRound;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  mImgRectRound = (ImageView) findViewById(R.id.img_rect_rounded);
  mImgRound = (ImageView) findViewById(R.id.img_rounded);
  rectRoundBitmap();
  roundBitmap();
 }

 private void rectRoundBitmap(){
  //得到资源文件的BitMap
  Bitmap image= BitmapFactory.decodeResource(getResources(),R.drawable.dog);
  //创建RoundedBitmapDrawable对象
  RoundedBitmapDrawable roundImg =RoundedBitmapDrawableFactory.create(getResources(),image);
  //抗锯齿
  roundImg.setAntiAlias(true);
  //设置圆角半径
  roundImg.setCornerRadius(30);
  //设置显示图片
  mImgRectRound.setImageDrawable(roundImg);
 }

 private void roundBitmap(){
  //如果是圆的时候,我们应该把bitmap图片进行剪切成正方形, 然后再设置圆角半径为正方形边长的一半即可
  Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.dog);
  Bitmap bitmap = null;
  //将长方形图片裁剪成正方形图片
  if (image.getWidth() == image.getHeight()) {
   bitmap = Bitmap.createBitmap(image, image.getWidth() / 2 - image.getHeight() / 2, 0, image.getHeight(), image.getHeight());
  } else {
   bitmap = Bitmap.createBitmap(image, 0, image.getHeight() / 2 - image.getWidth() / 2, image.getWidth(), image.getWidth());
  }
  RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), bitmap);
  //圆角半径为正方形边长的一半
  roundedBitmapDrawable.setCornerRadius(bitmap.getWidth() / 2);
  //抗锯齿
  roundedBitmapDrawable.setAntiAlias(true);
  mImgRound.setImageDrawable(roundedBitmapDrawable);
 }
}

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="com.cjl.roundedbitmap.MainActivity">

 <ImageView
  android:id="@+id/img_rect_rounded"
  android:layout_width="200dp"
  android:layout_height="300dp"
  android:layout_marginTop="20dp"
  android:layout_gravity="center_horizontal"/>

 <ImageView
  android:id="@+id/img_rounded"
  android:layout_marginTop="20dp"
  android:layout_width="200dp"
  android:layout_height="200dp"
  android:layout_gravity="center_horizontal"/>
</LinearLayout>

如有问题,欢迎指正,谢谢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # 圆角图片  # Android中TextView显示圆圈背景或设置圆角的方法  # android 设置圆角图片实现代码  # Android设置图片圆角的方法  # Android中给按钮同时设置背景和圆角示例代码  # Android 圆角 ImageView类可设置弧度(代码简单)  # Android实现图片设置圆角形式  # Android圆角设置方法看着一篇文章就够了  # 圆角  # 抗锯齿  # 如有  # 中有  # 我们可以  # 然后再  # 做个  # 种方法  # 要将  # 我们应该  # 大家多多  # 时需  # 系统自带  # mImgRound  # mImgRectRound  # Override  # void  # protected  # extends  # MainActivity 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 浅谈javascript alert和confirm的美化  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何快速生成凡客建站的专业级图册?  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  如何快速搭建高效WAP手机网站?  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  C语言设计一个闪闪的圣诞树  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  如何快速重置建站主机并恢复默认配置?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  bootstrap日历插件datetimepicker使用方法  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Python函数文档自动校验_规范解析【教程】  无锡营销型网站制作公司,无锡网选车牌流程?  如何在阿里云服务器自主搭建网站?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  zabbix利用python脚本发送报警邮件的方法  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  如何选择可靠的免备案建站服务器?  Laravel如何创建自定义中间件?(Middleware代码示例)  如何在IIS中新建站点并解决端口绑定冲突?  如何用5美元大硬盘VPS安全高效搭建个人网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  canvas 画布在主流浏览器中的尺寸限制详细介绍  如何快速上传建站程序避免常见错误?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Laravel Fortify是什么,和Jetstream有什么关系  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  如何确保FTP站点访问权限与数据传输安全?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程