Android绘制三角形以实现带有小三角形的PopupWindow

电脑杂谈  发布时间:2020-06-30 21:24:06  来源:网络整理

android canvas三角形_android canvas 画圆圈_android canvas画矩形

最近的项目使用了一个弹出窗口android canvas三角形android canvas三角形,上面带有一个小三角形,如图所示:

android canvas 画圆圈_android canvas画矩形_android canvas三角形

《Android绘制三角形实现带小三角的PopupWindow》

android canvas 画圆圈_android canvas画矩形_android canvas三角形

实现原理:

android canvas 画圆圈_android canvas三角形_android canvas画矩形

《Android绘制三角形实现带小三角的PopupWindow》

android canvas画矩形_android canvas 画圆圈_android canvas三角形

通过继承View进行绘图,上面的代码:


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
/**绘制三角形
 * Created by jiqunsoftpc10 on 2019/10/26.
 */
public class SharpView extends View {
    private int mWidth =0; //三角形的宽度
    private int mHeight =0; //三角形的高度
    private Context mContext;
    public SharpView(Context context) {
        super(context);
        this.mContext=context;
        initView();
    }
    public SharpView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        this.mContext=context;
        initView();
    }
    private void initView() {
        mWidth = DensityUtils.dip2px(mContext,10);
        mHeight = DensityUtils.dip2px(mContext,6);
    }
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setMeasuredDimension(mWidth,mHeight);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //创建画笔
        Paint paint = new Paint();
        paint.setColor(Color.parseColor("#292929"));
        paint.setAntiAlias(true); //抗锯齿
        paint.setStyle(Paint.Style.FILL);//实线
        //创建路径
        Path path = new Path();
        path.moveTo(0,mHeight);
        path.lineTo(mWidth,mHeight);
        path.lineTo(mWidth/2,0);
        path.close();//闭合路径
        //画在画布上
        canvas.drawPath(path,paint);
    }
}

由于项目中使用的三角形不多,因此您不打算自定义属性,因此可以根据需要扩展它们. 绘制后,可以直接在xml布局中使用它,然后完成下一个弹出窗口的内容布局.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-264002-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...