仿猎豹水波浪特效

效果图如上,其是根据CSDN里面的大小,源码必编了一下,把一些不太重要的代码,删除了。代码如下:

/***************
 * 
 * 
 * 波浪实现
 * 
 * @author util_c
 *
 */
public class MyWaterWave {
private long offset = 0L;//速率
private final float f = 0.033F;
private int mAlpha = 31; // 透明度
private int mColor = Color.GREEN; // 水颜色
private float mAmplitude = 10.0F; // 振幅
private final Paint mPaint = new Paint();
private float mWaterLevel = 0.5F; // 水高
private int speed=0;//速度
/***************

* 显示视图的宽、高

* @param width
* @param height
*/
public MyWaterWave() {
mPaint.setStrokeWidth(1.0F);
mPaint.setColor(mColor);
mPaint.setAlpha(mAlpha);

//变换速度
offset = (long) (Math.random()*10); 
offset = offset<=0?1:offset;//不小于等于0
}



/******************
* 绘制方法

* @param canvas
*/
public void drawWaterWave(Canvas canvas,int width,int height) {
canvas.save();

// 占视图总大小的多么份
float mHeigth = height * (1.0F - mWaterLevel);
//加上浪的高度<振幅>
int top = (int) (mHeigth + mAmplitude);// 水的位置
//水的高度<矩形>
canvas.drawRect(0.0F, top, width, height, mPaint);


//区间
if (offset>8388607L) {
offset=0;
}
//随机的偏移量<速度>
speed+=offset; 

//用绘制直线的方式,把每一个弧给绘制到视图的等宽
for (int i = 0; i < width; i++) {
// (i + c * mWidth) / mWidth放大器
double x = Math.sin(Math.PI * (2.0F * (i + speed * width * f)) / width);
int startY = (int) (height / 2 - mAmplitude * x);
canvas.drawPoint(i, startY, mPaint);
// 绘制填充区域<从曲线上的每一个,向下绘制直线>
canvas.drawLine(i, startY, i, top, mPaint);
}

canvas.restore();
}




/******************
* 设置振幅 默认认是10

* @param amplitued
*/
public void setAmplitude(float amplitued) {
mAmplitude = amplitued;
}


/***********
* 设置透明度0~1之间的小数 0 为透明,1为完全不透明

* @param alpha
*/
public void setWaterAlpha(float alpha) {
this.mAlpha = ((int) (255.0F * alpha));
mPaint.setAlpha(this.mAlpha);
}


/**********************

* 设置水的高度0-1之间 值越小,波浪的高度就越小,越大,波浪的高度越高

* @param paramFloat
*/
public void setWaterLevel(float paramFloat) {
mWaterLevel = paramFloat;
}


/****************
* 设置水的颜色 值范围在0~1之间

* @param color
*/
public void setWaterColor(float color) {
this.mColor = (int) (255.0f * color);
mPaint.setColor(mColor);
}

/****************

* 设置移动的速度
* <默认速度是0~10之间随机的数>
* @param speed
*/
public void setOffset(int speed){
this.offset = speed;
}
}


这是大神的写的源码,我是在他写的基础上改良的,谢谢

http://blog.csdn.net/litton_van/article/details/21888271


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值