自定义水波纹

《自定义view》
public class WaterView extends View {

private Paint paint;
private Path path;
private float mX;

public WaterView(Context context) {
    super(context);

    init(context);
}


public WaterView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    init(context);
}

//初始化画笔路径
private void init(Context context) {
    //初始化路径
    path = new Path();

    paint = new Paint();//画笔
    paint.setColor(Color.RED);//画笔颜色
    paint.setStrokeWidth(5);//画笔的粗细
    paint.setAntiAlias(true);//设置是否使用抗锯齿功能,会消耗较大资源,绘制图形速度会变慢

}

//绘制方法
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    path.reset();//路径重置


    path.moveTo(getLeft(), 350); //记录起始位置
    //记录波动位置
    float mpl = (float) (Math.PI*4/getRight());//获取每一个宽度所占的度数

    mX -= 0.1f;
    for (int x = 0; x<=getRight(); x+=20) {
        path.lineTo(x, (float) (10*Math.cos(mpl*x+mX)+100));//记录从左向右的x作弊哦
    }
    path.lineTo(getRight(), 350); //记录结束位置
    //通过canvas绘制
    canvas.drawPath(path, paint);

    postInvalidateDelayed(20);//定时刷新
}

}

《布局》
<com.bawei.mydonghua.WaterView
android:id="@+id/water_view"
android:layout_width=“match_parent”
android:layout_height=“match_parent” />

《MainActivity 》
public class MainActivity extends AppCompatActivity {

private WaterView water;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    water = findViewById(R.id.water_view);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值