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);
}
});```