您的位置:首页 > 移动开发 > Android开发

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

2016-07-08 15:21 501 查看
RoundedBitmapDrawable是Android在support v4的扩展包中新增的实现圆角图形的关键类,借助RoundedBitmapDrawable的帮助,可以轻松的以Android标准方式实现圆角图形图象。

写一个简单的例子。

写一个线性布局,竖直方向放三个ImageView:

[html] view
plain copy

 





<?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代码分别放原始图,圆角图,圆形图作为对比:

[java] view
plain copy

 





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

    }  

}  

代码运行结果:



附录文章:
1,《Android圆形头像图Circle ImageView》链接地址:http://blog.csdn.net/zhangphil/article/details/44960551 
2,《Android CustomShapeImageView对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等》链接地址:http://blog.csdn.net/zhangphil/article/details/50119921
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: