資源簡介
使用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模式聊天室
評論
共有 條評論