资源简介
使用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) {
- 上一篇:Java 数字签名和验证
- 下一篇:java实现C/S模式聊天室
相关资源
- Android-Android仿知乎日报新闻详情页新
- 用于recyclerview控件使用的v7包
- android缩放控件
- office在线编辑控件最新破解版
- Android代码-Android上简洁轻量级的饼图
- Qt调用Android原生Toast控件,含源码
- Android 自定义控件 EditText输入框两边加
- Android自定义下拉列表框控件源码
- Android带日程安排的自定义日历控件
- 一个封装好的Android仿Ios ActionSheet控件
- android自定义控件CircleImageVIew
- Android吊炸天的控件粉碎动画,仿小米
- android自定义流式布局和热门标签控件
- android精美的日历控件
- Android 实现自定义多级树控件和全选
- Android下拉菜单控件
- android绘制五角星
- CameraView 模仿微信拍照Android 开源控件
- android仿美柚大姨妈控件仿美柚月经显
- Android自定义日历控件
- android视频播放自定义控件
- Android轮播控件
- Android下几个相关的时间日期控件的用
- android日历控件
- android pdf 阅读器开发 pdf demo pdf第三方
- Android非常好用的日历控件满足各种功
- Android 刮刮卡效果 自定义控件实现
- Android 任意层别 树形控件
- Android 根据EditText搜索框ListView动态显
- Android开源时间选择控件
评论
共有 条评论