zoukankan      html  css  js  c++  java
  • android 圆角ImageView类,可设置弧度

     1 public class RoundImageView extends ImageView {
      2     private Paint paint;
      3     private int roundWidth = 50;
      4     private int roundHeight = 50;
      5     private Paint paint2;
      6 
      7     public RoundImageView(Context context, AttributeSet attrs, int defStyle) {
      8         super(context, attrs, defStyle);
      9         init(context, attrs);
     10     }
     11 
     12     public RoundImageView(Context context, AttributeSet attrs) {
     13         super(context, attrs);
     14         init(context, attrs);
     15     }
     16 
     17     public void SetRoundValue(float roundValue) {
     18         roundWidth = (int) roundValue;
     19         roundHeight = (int) roundValue;
     20     }
     21 
     22     public RoundImageView(Context context) {
     23         super(context);
     24         init(context, null);
     25     }
     26 
     27     @SuppressLint("Recycle")
     28     private void init(Context context, AttributeSet attrs) {
     29 
     30         if (attrs != null) {
     31             TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RoundAngleImageView);
     32             roundWidth = a.getDimensionPixelSize(R.styleable.RoundAngleImageView_roundWidth, roundWidth);
     33             roundHeight = a.getDimensionPixelSize(R.styleable.RoundAngleImageView_roundHeight, roundHeight);
     34         } else {
     35             float density = context.getResources().getDisplayMetrics().density;
     36             roundWidth = (int) (roundWidth * density);
     37             roundHeight = (int) (roundHeight * density);
     38         }
     39 
     40         paint = new Paint();
     41         paint.setColor(Color.WHITE);
     42         paint.setAntiAlias(true);
     43         paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
     44 
     45         paint2 = new Paint();
     46         paint2.setXfermode(null);
     47     }
     48 
     49     @Override
     50     public void draw(Canvas canvas) {
     51         Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Config.ARGB_8888);
     52         Canvas canvas2 = new Canvas(bitmap);
     53         super.draw(canvas2);
     54         drawLiftUp(canvas2);
     55         drawRightUp(canvas2);
     56         drawLiftDown(canvas2);
     57         drawRightDown(canvas2);
     58         canvas.drawBitmap(bitmap, 0, 0, paint2);
     59         bitmap.recycle();
     60         bitmap = null;
     61     }
     62 
     63     private void drawLiftUp(Canvas canvas) {
     64         Path path = new Path();
     65         path.moveTo(0, roundHeight);
     66         path.lineTo(0, 0);
     67         path.lineTo(roundWidth, 0);
     68         path.arcTo(new RectF(0, 0, roundWidth * 2, roundHeight * 2), -90, -90);
     69         path.close();
     70         canvas.drawPath(path, paint);
     71     }
     72 
     73     private void drawLiftDown(Canvas canvas) {
     74         Path path = new Path();
     75         path.moveTo(0, getHeight() - roundHeight);
     76         path.lineTo(0, getHeight());
     77         path.lineTo(roundWidth, getHeight());
     78         path.arcTo(new RectF(0, getHeight() - roundHeight * 2, 0 + roundWidth * 2, getWidth()), 90, 90);
     79         path.close();
     80         canvas.drawPath(path, paint);
     81     }
     82 
     83     private void drawRightDown(Canvas canvas) {
     84         Path path = new Path();
     85         path.moveTo(getWidth() - roundWidth, getHeight());
     86         path.lineTo(getWidth(), getHeight());
     87         path.lineTo(getWidth(), getHeight() - roundHeight);
     88         path.arcTo(new RectF(getWidth() - roundWidth * 2, getHeight() - roundHeight * 2, getWidth(), getHeight()), 0,
     89                 90);
     90         path.close();
     91         canvas.drawPath(path, paint);
     92     }
     93 
     94     private void drawRightUp(Canvas canvas) {
     95         Path path = new Path();
     96         path.moveTo(getWidth(), roundHeight);
     97         path.lineTo(getWidth(), 0);
     98         path.lineTo(getWidth() - roundWidth, 0);
     99         path.arcTo(new RectF(getWidth() - roundWidth * 2, 0, getWidth(), 0 + roundHeight * 2), -90, 90);
    100         path.close();
    101         canvas.drawPath(path, paint);
    102     }
    103 
    104 }
    复制代码
  • 相关阅读:
    MVC ORM 架构
    Kubernetes 第八章 Pod 控制器
    Kubernetes 第七章 Configure Liveness and Readiness Probes
    Kubernetes 第六章 pod 资源对象
    Kubernetes 第五章 YAML
    Kubernetes 核心组件
    Kubernetes 架构原理
    Kubernetes 第四章 kubectl
    Kubernetes 第三章 kubeadm
    yum 配置及yum 源配置
  • 原文地址:https://www.cnblogs.com/yhws/p/3932610.html
Copyright © 2011-2022 走看看