• 大小: 7KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: Java
  • 标签: 控件  

资源简介

使用SurfaceView实现水波纹动画的代码

资源截图

代码片段和文件信息

package com.eshore.common.library.widget;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.DrawFilter;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.Path;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

import com.eshore.common.library.R;
import com.eshore.common.library.utils.ViewUtils;

/**
 * Created by Administrator on 2017/8/16.
 */

public class SurfaceViewDemo2 extends SurfaceView implements SurfaceHolder.Callback Runnable {
    private SurfaceHolder mHolder;
    //用于绘图的canvas
    private Canvas canvas;
    //子线程标志
    private boolean mIsDrawing;


    private Paint mWavePaint;
    private DrawFilter mDrawFilter;
    private static final int WAVE_PAINT_COLOR = 0x26FFFFFF;// 波纹填充颜色
    private static final int TRANSLATE_X_SPEED_1 = 4;// 第一条水波移动速度
    private static final int TRANSLATE_X_SPEED_2 = 8;// 第二条水波移动速度
    private static final int TRANSLATE_X_SPEED_3 = 6;// 第三条水波移动速度
    private int mTotalWidth mTotalHeight;
    private float mWaveHeight;//水波纹高度
    private float mWaveWidth;//水波纹宽度(半个周期)
    private float mWaveHalfWidth;//1/4周期
    private Path path;
    private Path path2;
    private Path path3;
    private int mXOffsetSpeed_1;
    private int mXOffsetSpeed_2;
    private int mXOffsetSpeed_3;
    private int mXOffset_1;
    private int mXOffset_2;
    private int mXOffset_3;

    public Thread thread;
    Bitmap bitmap;

    public SurfaceViewDemo2(Context context) {
        super(context);
        initView(context);
    }

    public SurfaceViewDemo2(Context context AttributeSet attrs) {
        super(context attrs);
        initView(context);
    }

    public SurfaceViewDemo2(Context context AttributeSet attrs int defstyleAttr) {
        super(context attrs defstyleAttr);
        initView(context);
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        clearBlack();
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder int format int width int height) {
        initParam(width height);
    }


    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        mIsDrawing = false;
        thread=null;
        bitmap = null;
    }

    @Override
    public void run() {
        while (mIsDrawing) {
            draw();
        }
    }
    public void clearBlack(){
        bitmap = BitmapFactory.decodeResource(getResources() R.mipmap.bg_white);
        Canvas canvas = mHolder.lockCanvas();
        setZOrderOnTop(true);
        getHolder().setFormat(PixelFormat.TRANSLUCENT);
        if (canvas != null) {
         

评论

共有 条评论