- 博客(11)
- 资源 (7)
- 收藏
- 关注
原创 Activity源码浅析-DecorView
使用Activity,我们会先在onCreate方法中,设置setContentView public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(layoutResID); initWindowDecorActionBar(); }getWin
2017-06-30 12:54:42 3227
原创 水波纹+旋转小球动画
实现效果:实现思路:1.首先绘制小圆的位置: 每个小圆的间隔为:2 * Math.PI / CIRCLE_COUNT 2.通过控制第一个小圆的角度变化,控制小圆的旋转。 通过控制大圆半径,实现小圆的聚合 3.水波纹实现:绘制一个空心圆,通过不断改变空心圆的半径和画笔宽度。代码实现:package com.test.paintdemo;import android.animation.An
2017-06-27 13:18:31 2313
原创 视频直播中的心形漂浮效果
实现效果:思路:1.首先要给心形图片创建一个平滑的悬浮路径,那就要用到贝塞尔曲线,这里采用自定义TypeEvaluator实现。 2.路径有了,就要考虑实现动画的两个步骤 a.缩放,伴随透明度变化 b.底部悬浮到顶部 这里是用的是Matrix 3.自定义View,然后绘制心形图片。 详细步骤,看源码代码:1.自定义BezierEvaluatorpackage co
2017-06-26 19:29:22 2257
原创 SVG
Android微信上的SVGSVG 即Scalable Vector Graphics 可伸缩矢量图形,这种图像格式在前端中已经使用的非常广泛了。 SVG的W3C的解释: http://www.w3school.com.cn/svg/svg_intro.asp矢量图像 SVG是W3C 推出的一种开放标准的文本式矢量图形描述语言,他是基于XML的、专门为网络而设计的图像格式,
2017-06-25 00:19:44 1715
原创 SVG绘制中国地图
效果如图,点击省份区域,即可蓝色高亮显示 实现思路:地图资源 Android SVG to VectorDrawable 1.首先获取SVG图片,然后将SVG转化为VectorDrawable,然后放入res/raw目录下(SVG图片代码在文章末尾) 2.通过DocumentBuilderFactory获取svg中的根节点rootElement 3.通过rootElement获取所有pa
2017-06-24 23:41:14 12970
原创 PathMeasure
PathMeasurePathMeasure是一个用来测量Path的类,主要有以下方法:构造方法 方法名 释义 PathMeasure() 创建一个空的PathMeasure PathMeasure(Path path, boolean forceClosed) 创建 PathMeasure 并关联一个指定的Path(Path需要已经创建完成)公共方法 返回值 方法名
2017-06-24 15:14:32 1379
原创 PathMeasure + 贝塞尔曲线实现过山车效果
先看效果图: 思路: 1.首先绘制红色的贝塞尔曲线 2.然后用PathMeasure,测量曲线某一点A的长度、倾斜度、坐标 3.根据坐标倾斜度,绘制图片 4.根据PathMeasure获得,起始点O到A点的路径,绘制走过的路径代码:package com.test.paintdemo.pathrelate;import android.animation.ValueAnimator;im
2017-06-24 14:38:14 2987
原创 Canvas模拟太阳地球月球的运动过程
先看效果图代码package com.test.paintdemo.pathrelate;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphi
2017-06-23 14:41:53 4389
原创 Canvas
画线画一条直线: canvas.drawLine(0, 0, 100, 100, paint);画多条线: float []pts = {0,0,100,100,200,200,300,300}; canvas.drawLines(pts, paint);// 画虚线–也通过多条线的方式 画点画一个点: canvas.drawPoint(500, 500, paint);画多个点: fl
2017-06-22 15:45:04 1766
原创 自定义控件SearchView
先看张动图: 要实现的效果清楚了,接下来分析实现过程: 动画过程分为两个阶段: 阶段一:圆弧不断减小,直至消失,同时向右位移 阶段二:停止向右位移,AB1线段长度减少,同时CB2线段长度增加实现思路: 先画一个360度的圆弧,为了容易计算A、B1点坐标,先将画布逆时针旋转45度,再画弧度和AB1. 界面就变成: 圆心坐标(centerX, centerY)圆半径为Radius,则
2017-06-22 12:35:44 1234
原创 Paint 全面解析
paint的方法分为两类:负责图形绘制、路径相关setStrokeWidth(float width)设置画笔宽度setStyle(Paint.Style style)设置画笔样式Style有三类: Paint.Style.FILL :填充内部Paint.Style.FILL_AND_STROKE :填充内部和描边Paint.Style.STROKE :仅描边、注意STROKE、FILL_
2017-06-20 14:40:44 4348
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人