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