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

朴灿烈づ我的快乐病毒、 2023-10-17 06:52 117阅读 0赞



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

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

  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. <ImageView
  9. android:id="@+id/imageView1"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:padding="5dp" />
  13. <ImageView
  14. android:id="@+id/imageView2"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:padding="5dp" />
  18. <ImageView
  19. android:id="@+id/imageView3"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:padding="5dp" />
  23. </LinearLayout>

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

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

代码运行结果:

Center

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

发表评论

表情:
评论列表 (有 0 条评论,117人围观)

还没有评论,来说两句吧...

相关阅读