Android RoundedBitmapDrawable:Android官方的圆角图形图象实现方案
RoundedBitmapDrawable是Android在support v4的扩展包中新增的实现圆角图形的关键类,借助RoundedBitmapDrawable的帮助,可以轻松的以Android标准方式实现圆角图形图象。
写一个简单的例子。
写一个线性布局,竖直方向放三个ImageView:
- <?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:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context="zhangphil.app.MainActivity">
- <ImageView
- android:id="@+id/imageView1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:padding="5dp" />
- <ImageView
- android:id="@+id/imageView2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:padding="5dp" />
- <ImageView
- android:id="@+id/imageView3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:padding="5dp" />
- </LinearLayout>
然后通过Java代码分别放原始图,圆角图,圆形图作为对比:
- package zhangphil.app;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
- import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.widget.ImageView;
- public class MainActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //未做圆角处理的原始图
- ImageView image1 = (ImageView) findViewById(R.id.imageView1);
- image1.setImageResource(R.drawable.zhangphil);
- //圆角图
- RoundedBitmapDrawable roundedDrawable = RoundedBitmapDrawableFactory.create(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.zhangphil));
- roundedDrawable.getPaint().setAntiAlias(true);
- roundedDrawable.setCornerRadius(30);
- ImageView image2 = (ImageView) findViewById(R.id.imageView2);
- image2.setImageDrawable(roundedDrawable);
- //圆形图
- Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.zhangphil);
- RoundedBitmapDrawable circleDrawable = RoundedBitmapDrawableFactory.create(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.zhangphil));
- circleDrawable.getPaint().setAntiAlias(true);
- circleDrawable.setCornerRadius(Math.max(bitmap.getWidth(), bitmap.getHeight()));
- ImageView image3 = (ImageView) findViewById(R.id.imageView3);
- image3.setImageDrawable(circleDrawable);
- }
- }
代码运行结果: