水波纹

MainActivity

package com.bw.water;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.RelativeLayout;

//自定义水波纹
public class MainActivity extends AppCompatActivity {

    private WaterView water_view;
    private ImageView img_view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        water_view = findViewById(R.id.water_view);
        img_view = findViewById(R.id.img_view);

        //让图标跟随水波纹上下动
        water_view.setAnimationListener(new WaterView.AnimationListener() {
            @Override
            public void Animation(float y) {
               RelativeLayout.LayoutParams params= (RelativeLayout.LayoutParams) img_view.getLayoutParams();
               params.setMargins(0, (int) y,0,0);
               img_view.setLayoutParams(params);
            }
        });
    }
}

自定义布局

package com.bw.water;

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;

/**
 * 作者:ww
 * <p>
 * 邮箱:2973627661@qq.com
 * <p>
 * 时间:on 2019/4/2 20:07
 * <p>
 * 简述:水波纹View
 */
public class WaterView extends View {

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

    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) {
        paint = new Paint();//画笔
        path = new Path();//路径

        paint.setStrokeWidth(5);
        paint.setColor(Color.CYAN);
        paint.setAntiAlias(true);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        //重置路径
        path.reset();

        //记录起始位置
        path.moveTo(getLeft(), getBottom());

        //记录波动的位置
        float mPi = (float) (Math.PI * 2 / getRight());//获取每个宽度所占的位置

        mX = mX - 0.1f;
        for (int x = 0; x <= getRight(); x += 20) {
            //path.lineTo(x, (float) (10 * Math.cos(mPi * x + mX) + 10));
            float y=(float) (10 * Math.sin(mPi * x + mX) + 10);
            path.lineTo(x, y);
            if (listener!=null){
                listener.Animation(y);
            }
        }

        //记录结束位置
        path.lineTo(getRight(), getBottom());

        canvas.drawPath(path, paint);

        postInvalidateDelayed(20);//定时刷新

    }
    public void setAnimationListener(AnimationListener listener){
        this.listener=listener;
    }

    public interface AnimationListener{
        void Animation(float y);
    }
}

全选反选

checkbox_all.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //是否选中
                boolean checked = checkbox_all.isChecked();
                double allPrice = 0;
                int allNum = 0;

                for (int i = 0; i < list.size(); i++) {
                    list.get(i).setChecked(checked);//给商家是否选中
                    ArrayList<ShopList> shopLists = CarFragment.this.list.get(i).getList();//获取商品下对应得商品

                    for (int j = 0; j < shopLists.size(); j++) {
                        shopLists.get(j).setChecked(checked);
                        if (checked) {//全选
                            Double price = shopLists.get(j).getPrice();
                            int num = shopLists.get(j).getNum();
                            allPrice = allPrice + price * num;
                            allNum = allNum + num;
                        } else {//不是全选
                            allPrice = 0;
                            allNum=0;
                        }
                    }
                }
                tv_hj.setText(allPrice + "");//设置总价
                tv_jie.setText("去结算(" + allNum + ")");
                shopCarAdapter.setList(list);
            }
        });```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值