
最近的项目使用了一个弹出窗口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
而不是人为故意或无意放进去的
让那些光棍跟你爸合伙用你妈
1