PhotoBgView1.java 4.46 KB
package com.sw.laryngoscope.widget;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.View;


/**
 * 电量显示控件
 */
public class PhotoBgView1 extends androidx.appcompat.widget.AppCompatImageView {

    private Paint mPaint;
    private float angle;// 旋转角度
    private float mWidth;
    private float mHeight;
    public static final int LEFT = 270;
    public static final int RIGHT = 90;public static final int UP = 0;
    public static final int DOWN = 180;

    private Paint mBgPaint;

    public PhotoBgView1(Context context) {
        super(context);
        init(context, null, 0);
    }

    public PhotoBgView1(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs, 0);
    }

    public PhotoBgView1(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context, attrs, defStyle);
    }

    private void init(Context context, AttributeSet attrs, int defStyle) {
        initPaint();
    }

    private void initPaint() {
        mBgPaint = new Paint();
        mBgPaint.setAntiAlias(true);
        mBgPaint.setColor(Color.parseColor("#333333"));
        mBgPaint.setStyle(Paint.Style.FILL);

        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        //mPaint.setColor(Color.BLACK);
        mPaint.setColor(Color.parseColor("#1B2027"));
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap(Paint.Cap.ROUND);
        mPaint.setStrokeWidth(1);
    }

    public PhotoBgView1 setWidth(float width){
        this.mWidth = width;
        return this;
    }

    public PhotoBgView1 setHeight(float height){
        this.mHeight = height;
        return this;
    }

    /**
     *
     * @Title: setAngle
     * @Description: 按角度调整箭头方向 0-360
     * @param @param angle
     * @return TriangleView this
     * @throws
     */
    public PhotoBgView1 setAngle(float angle) {
        this.angle = angle;
        invalidate();
        return this;
    }

    /**
     *
     * @Title: setDirection
     * @Description: 调整箭头方向  LEFT,RIGHT,UP,DOWN
     * @param @param direction
     * @return TriangleView this
     * @throws
     */
    public PhotoBgView1 setDirection(int direction){
        this.angle = direction;
        invalidate();
        return this;
    }

    /**
     *
     * @Title: setColor
     * @Description: 给三角形填充颜色
     * @param @param color
     * @return TriangleView this
     * @throws
     */
    public PhotoBgView1 setColor(int color){
        mPaint.setColor(color);
        invalidate();
        return this;
    }

    public void setSelect(boolean isSel) {
        if ( isSel ) {
            mBgPaint.setColor(Color.parseColor("#C1C1C1"));
        } else {
            mBgPaint.setColor(Color.parseColor("#333333"));
        }
        invalidate();
    }

    private void drawTriangle(Canvas canvas) {
        mWidth = getWidth();
        mHeight = getHeight();

        canvas.drawRect(0, 0, mWidth, mHeight, mBgPaint);

        int sideLen = (int) (mWidth / 12f * 1.0f);
        Path path0 = new Path();
        path0.moveTo(0, 0);
        path0.lineTo(sideLen, 0);
        path0.lineTo(0, sideLen);

        Path path1 = new Path();
        path1.moveTo(mWidth - sideLen, 0);
        path1.lineTo(mWidth, 0);
        path1.lineTo(mWidth, sideLen);

        Path path2 = new Path();
        path2.moveTo(0, mHeight - sideLen);
        path2.lineTo(0, mHeight);
        path2.lineTo(sideLen, mHeight);

        Path path3 = new Path();
        path3.moveTo(mWidth - sideLen, mHeight);
        path3.lineTo(mWidth, mHeight);
        path3.lineTo(mWidth, mHeight - sideLen);
        canvas.save();
        canvas.drawPath(path0, mPaint);
        canvas.drawPath(path1, mPaint);
        canvas.drawPath(path2, mPaint);
        canvas.drawPath(path3, mPaint);
        canvas.restore();
    }

    /**
     *
     * @Title: calTriangleSileLength
     * @Description: 计算三角形边长
     * @param @param diameter
     * @param @return
     * @return float
     * @throws
     */
    private float calTriangleSileLength(float diameter) {
        return (float) (2 * Math.sqrt(Math.pow(diameter / 2, 2)
                - Math.pow(diameter / 4, 2)));
    }

    @Override
    protected void onDraw(Canvas canvas) {super.onDraw(canvas);
        drawTriangle(canvas);
    }

}