我的三角形也沒有顯示出來求解答
private Paint mPaint;
?private Path mPath;
?private int mTriangleWidth;
?private int mTriangleHeight;
?//初始位置
?private int mInitTanslateX;
//移動的位置
?private int mTranslateX;
private static final String TAG = "ViewPagerIndicator";
?private static float RADIO_TRIANGLE = 1/6F;
public ViewPagerIndicator(Context context) {
? ? this(context,null);
}
public ViewPagerIndicator(Context context, AttributeSet attrs) {
? ? super(context, attrs);
? ? mPaint = new Paint();
? ? /**
? ? ?* ?Helper for setFlags(), setting or clearing the ANTI_ALIAS_FLAG bit
? ? ?* AntiAliasing smooths out the edges of what is being drawn,
? ? ?*/
? ? mPaint.setAntiAlias(true);
? ? //@ parseColor
? ? // * Parse the color string, and return the corresponding color-int.
? ? mPaint.setColor(Color.parseColor("#ffffffff"));
? ? mPaint.setStyle(Paint.Style.FILL);
? ? mPaint.setPathEffect(new CornerPathEffect(3));
}
/**
?* 這里繪制三角形
?* @param canvas
?*/
@Override
protected void dispatchDraw(Canvas canvas) {
? ? canvas.save();
? ?//這個方法什么意思?
? ? canvas.translate(mInitTanslateX+mTranslateX,getWidth());
? ? canvas.drawPath(mPath,mPaint);
? ? canvas.restore();
? ? super.dispatchDraw(canvas);
? ? Log.d(TAG, "dispatchDraw: ");
}
//當當前VIEW的size發(fā)生變化的時候就會調(diào)用這個方法
// @param w Current width of this view.
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
? ? super.onSizeChanged(w, h, oldw, oldh);
? ? mTriangleWidth = (int) (w/3 *RADIO_TRIANGLE);
? ? mTriangleHeight = mTriangleWidth/2;
? ? mInitTanslateX = ? w/2/3-mTriangleHeight/2;
? ? initTriangle();
}
private void initTriangle() {
? ? mPath =new Path();
? ? //@param x The x-coordinate of the start of a new contou(新輪廓)
? ? mPath.moveTo(0,0);
? ? mPath.lineTo(mTriangleWidth,0);
? ? mPath.lineTo(mTriangleWidth/2,-mTriangleHeight);
? ? mPath.close();
? ? Log.d(TAG, "initTriangle: ");
}
2016-10-14
canvas.translate(mInitTanslateX+mTranslateX,getWidth());?--------->canvas.translate(mInitTanslateX+mTranslateX,getHeight());?