当前位置: 首页 > news >正文

太原网站建设信息推荐网络科技公司经营范围

太原网站建设信息推荐,网络科技公司经营范围,免费大型网站,中国建设论坛网站大全Android 系统api提供了quadTo和rQuadTo实现二阶贝塞尔曲线,三阶贝塞尔曲线在这不做阐述,只不过是两个控制点。ed662587bd.jpg效果图device-2018-10-19-155544.gif首先看张二阶贝赛尔的曲线bzier.jpgPath path new Path();//贝赛尔的起始点moveTo(x,y)pa…

Android 系统api提供了quadTo和rQuadTo实现二阶贝塞尔曲线,三阶贝塞尔曲线在这不做阐述,只不过是两个控制点。

1e8bdf66b150

ed662587bd.jpg

效果图

1e8bdf66b150

device-2018-10-19-155544.gif

首先看张二阶贝赛尔的曲线

1e8bdf66b150

bzier.jpg

Path path = new Path();

//贝赛尔的起始点moveTo(x,y)

path.moveTo(getWidth() / 2 - 200, getHeight() / 2);

//quadTo 参数讲解(x1,y1,x2,y2)

//x1:控制点x坐标

//y1:在控制点y坐标

//x2:终点x坐标

//y2:终点y坐标

path.quadTo(getWidth() / 2 - 100, getHeight() / 2 - 100, getWidth() / 2, getHeight() / 2);

path.quadTo(getWidth() / 2 + 100, getHeight() / 2 + 100, getWidth() / 2 + 200, getHeight() / 2);

canvas.drawPath(path, mPaint);

quadTo和rQuadTo的区别

//rQuadTo参数讲解(dx1,dy1,dx2,dy2):

//dx1:控制点相对起点的x位移

//dy1:控制点相对起点的y位移

//dx2:终点相对起点的x位移

/dy2:终点相对起点的y位移

path.moveTo(getWidth() / 2 - 200, getHeight() / 2);

path.rQuadTo(100, -100, 200, 0);

path.rQuadTo(100, 100, 200, 0);

canvas.drawPath(path, mPaint);

效果一样,在这就不贴图了。

quadTo参数讲解(x1,y1,x2,y2):x1:控制点x坐标,y1:在控制点y坐标,x2:终点x坐标,y2:终点y坐标

rQuadTo参数讲解(dx1,dy1,dx2,dy2):dx1:控制点相对起点的x位移,dy1:控制点相对起点的y位,dx2:终点相对起点的x位移,dy2:终点相对起点的y位移

实现水波纹动态的效果

实现水波纹动态效果无非是曲线向左一个偏移量dx,看过去想凹凸的曲线,于是形成了水波纹动态效果。看代码。

public class WaveView extends View {

private Paint mPaint;

private int mWidth;

private int mHeight;

private int mWaveHeight;

private int mWaveDx;

private int dx;

public WaveView(Context context) {

this(context, null);

}

public WaveView(Context context, @Nullable AttributeSet attrs) {

this(context, attrs, 0);

}

public WaveView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

mPaint = new Paint();

mPaint.setAntiAlias(true);

mPaint.setDither(true);

mPaint.setColor(Color.parseColor("#FF3891"));

mPaint.setStyle(Paint.Style.FILL);

//波长的长度(这里设置为屏幕的宽度)

mWaveDx = getResources().getDisplayMetrics().widthPixels;

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

//控件的宽高

mWidth = MeasureUtils.measureView(widthMeasureSpec, mWaveDx);

mHeight = MeasureUtils.measureView(heightMeasureSpec, 300);

//水波的高度

mWaveHeight = DensityUtil.dip2px(getContext(), 16);

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

drawWave(canvas);

}

private void drawWave(Canvas canvas) {

Path path = new Path();

path.reset();

path.moveTo(-mWaveDx + dx, mHeight / 2);

for (int i = -mWaveDx; i < getWidth() + mWaveDx; i += mWaveDx) {

path.rQuadTo(mWaveDx / 4, -mWaveHeight, mWaveDx / 2, 0);

path.rQuadTo(mWaveDx / 4, mWaveHeight, mWaveDx / 2, 0);

}

//绘制封闭的区域

path.lineTo(mWidth, mHeight);

path.lineTo(0, mHeight);

//path.close() 绘制封闭的区域

path.close();

canvas.drawPath(path, mPaint);

}

public void startAnimation() {

ValueAnimator valueAnimator = ValueAnimator.ofInt(0, mWaveDx);

valueAnimator.setDuration(2000);

valueAnimator.setRepeatCount(ValueAnimator.INFINITE);

valueAnimator.setInterpolator(new LinearInterpolator());

valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

//水平方向的偏移量

dx = ( int ) animation.getAnimatedValue();

invalidate();

}

});

valueAnimator.start();

}

}

核心代码是drawWave()这个方法,startAnimation()是一个水平方向动画,偏移量是dx,在Activity中调用。水波纹的高度(贝塞尔曲线的高度),颜色、大小都可以自定义。小编没有写,整个绘制水波纹动画效果的思路和清晰。主要是搞懂quadTo和rQuadTo的区别和参数的意思。

http://www.lbrq.cn/news/2729287.html

相关文章:

  • 东莞南城外贸网站建设石家庄百度快速排名优化
  • html5素材网站链接交换平台
  • 主流建站公司企业seo如何优化
  • 怎么让网站被百度收录seo网上培训
  • wp建站网络营销的定义是什么
  • 收藏网站的链接怎么做多少关键词排名优化软件
  • 辽宁建设工程信息网场内业绩什么意思南京百度关键字优化价格
  • p2p网上贷款网站建设方案.docx深圳互联网公司50强
  • 网站开发包含的项目和分工今日头条搜索优化怎么做
  • 门户网站微信服务号建设方案怎么让百度收录
  • 新乡建设公司网站做个公司网站一般需要多少钱
  • 佛山市建设局网站公司网络营销推广软件
  • 成都 网站设计百度seo怎么优化
  • 如何区分官方网站和空壳网站平台推广是什么
  • 宜昌市建设信息网站成都专业的整站优化
  • 网站查询seo中国进入一级战备状态了吗
  • 图片生成网址seo关键词排名优化推荐
  • 九江市做网站的公司seo实战
  • 怎么去掉wordpress首页关注我们厦门seo怎么做
  • 做什网站推广真实有效全渠道营销的概念
  • 做网站找哪个好googleseo排名公司
  • 欧美一级a做爰片免费网站网站排名靠前方法
  • 运城建设银行网站点千度seo
  • 深圳燃气公司官网seo宣传网站
  • 学校html网站模板代码深圳网络营销策划
  • 武昌网站建设公司软文推广案例大全
  • wordpress不用ftp下载文件网络优化工资一般多少
  • 找做金融的网站广告营销的经典案例
  • 家装公司加盟网络舆情优化公司
  • 近期军事新闻热点事件成都seo优化排名推广
  • [Linux] Linux交换空间管理 Linux系统启动原理
  • 8.16 pq
  • 在鸿蒙应用中快速接入地图功能:从配置到实战案例全解析
  • Qt QDateTime时间部分显示为全0,QTime赋值后显示无效问题【已解决】
  • Hadoop面试题及详细答案 110题 (16-35)-- HDFS核心原理与操作
  • ETH持续上涨推动DEX热潮,交易活跃度飙升的XBIT表现强势出圈