android如何设置圆角图片|Android如何设置圆角图片

更新时间:2021-06-30    来源:今天更新    手机版     字体:

【www.bbyears.com--今天更新】

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

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

RoundedBitmapDrawableFactory

先上效果图:

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

 

 代码如下

publicclassMainActivityextendsAppCompatActivity {

 

 privateImageView mImgRectRound;

 privateImageView mImgRound;

 

 @Override

 protectedvoidonCreate(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();

 }

 

 privatevoidrectRoundBitmap(){

  //得到资源文件的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);

 }

 

 privatevoidroundBitmap(){

  //如果是圆的时候,我们应该把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);

 }

}

 

布局文件:

 

 代码如下

 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">

 

 

  android:id="@+id/img_rect_rounded"

  android:layout_width="200dp"

  android:layout_height="300dp"

  android:layout_marginTop="20dp"

  android:layout_gravity="center_horizontal"/>

 

 

  android:id="@+id/img_rounded"

  android:layout_marginTop="20dp"

  android:layout_width="200dp"

  android:layout_height="200dp"

  android:layout_gravity="center_horizontal"/>

 

本文来源:http://www.bbyears.com/jintiangengxin/126815.html

热门标签

更多>>

本类排行