カスタムビュー波
7733 ワード
public class CustomView extends View{
//
private Path mPath;
private Paint mPaint;
//
private int mScreenHeight;
private int mScreenWidth;
private int mOffset;
public CustomView(Context context) {
super(context);
init(context);
}
public CustomView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
WindowManager win= (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics displayMetrics = new DisplayMetrics();
win.getDefaultDisplay().getMetrics(displayMetrics);
mScreenHeight = displayMetrics.heightPixels;
mScreenWidth=displayMetrics.widthPixels;
mPath=new Path();
mPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(Color.BLUE);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setStrokeWidth(8);
setViewanimator();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPath.reset();
mPath.moveTo(-mScreenWidth+mOffset,mScreenHeight/2);
for (int i=0;i<2;i++){
mPath.quadTo(-mScreenWidth*3/4+(mScreenWidth*i)+mOffset, mScreenHeight / 2 - 100, -mScreenWidth / 2 + (mScreenWidth * i) + mOffset, mScreenHeight / 2);
mPath.quadTo(-mScreenWidth / 4 + (mScreenWidth * i) + mOffset, mScreenHeight / 2 + 100, +(mScreenWidth * i) + mOffset, mScreenHeight / 2);
}
mPath.lineTo(mScreenWidth,mScreenHeight);
mPath.lineTo(0,mScreenHeight);
canvas.drawPath(mPath,mPaint);
}
private void setViewanimator() {
ValueAnimator valueAnimator = ValueAnimator.ofInt(0, mScreenWidth);
valueAnimator.setDuration(1200);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mOffset= (int) valueAnimator.getAnimatedValue();
invalidate();
}
});
valueAnimator.start();