欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android如何设置圆角图片

程序员文章站 2023-12-18 09:09:16
在开发过程中有时需要将图片显示成圆角图片,一般我们可以通过在xml中设置drawable shape即可,但今天我给出另一种方法,用java代码动态去设置圆角,顺便做个简单...

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

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

roundedbitmapdrawablefactory

先上效果图:

Android如何设置圆角图片

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

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>

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

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

上一篇:

下一篇: