为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我按视频写的程序,并没有3角型显示出来,这是怎么回事,贴上代码了

public class ViewPagerIndicator extends LinearLayout {

private Paint mPaint;

private Path mPath;//构造三角形类

private static final float RADIO=1/6F;

private int mTriangleWidth;

private int mTriangleHeight;

private int mInitTranslationX;//三角形的初始偏移位置,及第一次出现的X坐标

private int mTranslationX=0;//随着手指滑动,三角形会移动,该数据表示移动


public ViewPagerIndicator(Context context){

super(context);

}

public ViewPagerIndicator(Context context, AttributeSet attrs) {

super(context, attrs);

//初始化画笔

mPaint=new Paint();

mPaint.setAntiAlias(true);

mPaint.setColor(Color.parseColor("#ffffffff"));

mPaint.setStyle(Style.FILL);

}

protected void dispatchDraw(Canvas canvas){

canvas.save();

canvas.translate(mInitTranslationX+ mTranslationX, getHeight());

canvas.drawPath(mPath, mPaint);

canvas.restore();

super.dispatchDraw(canvas);

}

@Override

protected void onSizeChanged(int w,int h,int oldw,int oldh){

super.onSizeChanged(w, h, oldw, oldh);

mTriangleWidth=(int)( w/3*RADIO);

mInitTranslationX=w/3/2-mTriangleWidth/2;

initTriangle();

}

//初始化三角形

private void initTriangle() {

mPath=new Path();

mTriangleHeight=mTriangleWidth/2;

mPath.moveTo(0, 0);//应该是相对坐标

mPath.lineTo(mTriangleWidth, 0);

mPath.lineTo(mTriangleWidth/2,-mTriangleHeight);

mPath.close();

}


}


正在回答

3 回答

private static final float RADIO_TRANGLE_WIDTH = 1/6f;

我是没加f所以没显示出来

0 回复 有任何疑惑可以回复我~

没有上下文,接受一下上下文就好了

0 回复 有任何疑惑可以回复我~
把第一个构造方法中的super(context); 改为 this(context, null); 即可


0 回复 有任何疑惑可以回复我~
#1

qq_奋斗的我_03498945

我也没显示三角形出来
2016-09-12 回复 有任何疑惑可以回复我~
#2

qq_奋斗的我_03498945

我的可以了 我的是因为mpath.lineTo(mTriangleWidth/2,-mTriangleHeight)三角形高度那里没加负号
2016-09-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android-自定义ViewPager指示器
  • 参与学习       30028    人
  • 解答问题       75    个

带领大家实现最火爆的跟随型指示器,学完保准压倒一片

进入课程

为什么我按视频写的程序,并没有3角型显示出来,这是怎么回事,贴上代码了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信