Android RoundedBitmapDrawable:Android官方的圆角图形图象实现方案

来源:互联网 发布:js data属性 编辑:程序博客网 时间:2024/06/06 20:08

RoundedBitmapDrawable是Android在support v4的扩展包中新增的实现圆角图形的关键类,借助RoundedBitmapDrawable的帮助,可以轻松的以Android标准方式实现圆角图形图象。
写一个简单的例子。
写一个线性布局,竖直方向放三个ImageView:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     xmlns:tools="http://schemas.android.com/tools"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:orientation="vertical"  
  7.     tools:context="zhangphil.app.MainActivity">  
  8.   
  9.     <ImageView  
  10.         android:id="@+id/imageView1"  
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content"  
  13.         android:padding="5dp" />  
  14.   
  15.     <ImageView  
  16.         android:id="@+id/imageView2"  
  17.         android:layout_width="wrap_content"  
  18.         android:layout_height="wrap_content"  
  19.         android:padding="5dp" />  
  20.   
  21.     <ImageView  
  22.         android:id="@+id/imageView3"  
  23.         android:layout_width="wrap_content"  
  24.         android:layout_height="wrap_content"  
  25.         android:padding="5dp" />  
  26.   
  27. </LinearLayout>  


然后通过Java代码分别放原始图,圆角图,圆形图作为对比:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package zhangphil.app;  
  2.   
  3. import android.graphics.Bitmap;  
  4. import android.graphics.BitmapFactory;  
  5. import android.support.v4.graphics.drawable.RoundedBitmapDrawable;  
  6. import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;  
  7. import android.support.v7.app.AppCompatActivity;  
  8. import android.os.Bundle;  
  9. import android.widget.ImageView;  
  10.   
  11. public class MainActivity extends AppCompatActivity {  
  12.   
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_main);  
  17.   
  18.         //未做圆角处理的原始图  
  19.         ImageView image1 = (ImageView) findViewById(R.id.imageView1);  
  20.         image1.setImageResource(R.drawable.zhangphil);  
  21.   
  22.         //圆角图  
  23.         RoundedBitmapDrawable roundedDrawable = RoundedBitmapDrawableFactory.create(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.zhangphil));  
  24.         roundedDrawable.getPaint().setAntiAlias(true);  
  25.         roundedDrawable.setCornerRadius(30);  
  26.         ImageView image2 = (ImageView) findViewById(R.id.imageView2);  
  27.         image2.setImageDrawable(roundedDrawable);  
  28.   
  29.         //圆形图  
  30.         Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.zhangphil);  
  31.         RoundedBitmapDrawable circleDrawable = RoundedBitmapDrawableFactory.create(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.zhangphil));  
  32.         circleDrawable.getPaint().setAntiAlias(true);  
  33.         circleDrawable.setCornerRadius(Math.max(bitmap.getWidth(), bitmap.getHeight()));  
  34.         ImageView image3 = (ImageView) findViewById(R.id.imageView3);  
  35.         image3.setImageDrawable(circleDrawable);  
  36.     }  
  37. }  


代码运行结果:

附录文章:
1,《Android圆形头像图Circle ImageView》链接地址:http://blog.csdn.net/zhangphil/article/details/44960551 
2,《Android CustomShapeImageView对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等》链接地址:http://blog.csdn.net/zhangphil/article/details/50119921


0 0
原创粉丝点击