Android如何设置圆角图片
程序员文章站
2023-12-18 09:09:16
在开发过程中有时需要将图片显示成圆角图片,一般我们可以通过在xml中设置drawable shape即可,但今天我给出另一种方法,用java代码动态去设置圆角,顺便做个简单...
在开发过程中有时需要将图片显示成圆角图片,一般我们可以通过在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>
如有问题,欢迎指正,谢谢。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。