Android 中关于PathEffect子类的效果(中级)
Android中关于PathEffect子类的效果(中级)
可以参考APIDeam中Graphis--PathEffects的效果在对比自己写出的效果
上代码
privatestaticclasspatheffectextendsView{
privateint[]color;
privatePathEffect[]patheffect=newPathEffect[7];
privatePaintpaint;
privatefloatphase;
privatePathpath;
/*
*初始化工作
*/
publicpatheffect(Contextcontext){
super(context);
paint=newPaint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
color=newint[]{
Color.BLACK,Color.BLUE,Color.YELLOW,Color.RED,Color.GRAY,Color.GREEN,Color.CYAN};
path=newPath();
path.moveTo(0,0);
for(inti=1;i<15;i++){//画出15个点连成一条线
path.lineTo(i*20,(float)Math.random()*60);
}
// path.close();如果有这句话第一个点会和最后一个点关联如图一没有如图二
}
/*下面测试PathEffect的子类
* ComposePathEffect,CornerPathEffect,DashPathEffect,
*DiscretePathEffect,PathDashPathEffect,SumPathEffect
*建议自己测试一下自己看效果就回明白这些子类的作用了
*/
@Override
protectedvoidonDraw(Canvascanvas){
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
patheffect[0]=null;
patheffect[1]=newCornerPathEffect(10);
patheffect[2]=newDiscretePathEffect(3,5);
patheffect[3]=newDashPathEffect(newfloat[]{20,10,5,10},10);
Pathp=newPath();
p.addRect(0,0,8,8,Path.Direction.CCW);
patheffect[4]=newPathDashPathEffect(p,12,phase,PathDashPathEffect.Style.ROTATE);
patheffect[5]=newSumPathEffect(patheffect[3],patheffect[4]);
patheffect[6]=newComposePathEffect(patheffect[3],patheffect[4]);
canvas.translate(8,8);
for(inti=0;i<patheffect.length;i++){
paint.setColor(color[i]);
paint.setPathEffect(patheffect[i]);
canvas.drawPath(path,paint);
canvas.translate(0,60);
}
phase+=1;//这里的phase如果不自增是没有动画效果的phase制定路径效果的相位
invalidate();//回调onDdraw重新绘制
}
}
大家可以看每条线的效果对应
更多相关文章
- Android 文字自动滚动(跑马灯)效果的两种实现方法[特别好使]
- android中实现tab标签切换时的一些效果
- Android dialog回弹效果
- android tab选项卡效果
- Android日记之2012/02/13——Android中Button点击效果
- 【Android】手写优化-更为平滑的签名效果实现
- Android Tv 背景动态改变,带过渡效果
- Android中的Button自定义点击效果之改变点击时按钮的颜色
- Android属性动画——实现灵动菜单效果