资源简介
使用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模拟时钟自定义控件
- java、php、net等平台的免费打印控件,
- 电子病历BS控件
-
sc
riptx打印控件(smsx.cabsmsx.exe) - Android控件IP地址输入
- javaweb 调用打印机控件Lodop
- Android代码-RTSP播放器源码.zip
- Sqlite数据库 VB6.0控件
- 大华摄像头视频监控OCX控件WEB3.0.接口
- Android 自定义spinner控件下拉框实现
- PrinterShare_11.19.1破解版
- Android-Andorid任意界面悬浮窗实现悬浮
- PageOffice for Java (免费破解版)文档控
- Telerik.Ultimate.Collection.for.NET.2019.R2 de
- Java入门-控件的排布(2).zip
- Java入门-产生自己的控件(1).zip
- Java入门-控件的相互控制与消息传递(
- Java 实现文本域控件的浮雕化边框
- Java 控件的纯色边框与图标边框
- Java 进度监视器控件的应用
- Java 使用事件分配线程更新Swing控件
- Java 在列表控件中显示单选按钮
- Java 密码域控件的简单应用
- Java 复选框控件数组
- Java 实现按钮控件边框留白
- Java 设置树控件选择模式
- Java 树控件常用遍历方式
- Java 忙碌的按钮控件
- Java 为文本框控件添加LineBorder线形边
- Java 列表控件折行显示列表项
评论
共有 条评论