
android自定义View
z真真
我是咸鱼,我是咸鱼,我是咸鱼!
展开
-
绘制简单条形图(带一个直角的圆角矩形)
一种方案是:path先添加一个圆角矩形,再添加一个角的正方形另一种直接通过api ,radii 需要传入8个数值,分四组,从左上角开始addRoundRect(RectF rect, float[] radii, Direction dir)中间有个小点:如果在一个循环里,同时画柱子和文字,会出现前面3个柱子上的文字被柱子覆盖,只有最后1个柱子才展示文字标记。比如说1是柱子,2是文字,画个柱子,画个文字;往右边挪挪位置,再画个柱子,再画个文字就是12121212的顺序,会出现前面3个2被1覆盖.原创 2020-09-11 17:36:46 · 1055 阅读 · 0 评论 -
自定义圆环(渐变色,文字描述,带百分比)
动态设置百分比 btn1.setOnClickListener { childRate.setFraction(0.23f, true) }xml中引用控件,这里可以通过app:xxxx,使用所有在style中指定的属性<com.xxxxxxxxxx.widget.view.GradientCircleView android:id="@+id/childRate" android:layout_width="0dp" android:layo.原创 2020-09-10 17:35:48 · 516 阅读 · 0 评论 -
仿八大行星绕太阳3D旋转效果
android实现八大行星绕太阳3D旋转效果仿上面效果,采用kotlin实现,逻辑要简单些,注释在源码中,一看就懂<com.example.androidxdemo.star.StarGroupView android:layout_width="0dp" android:layout_height="0dp" app:layout_co...原创 2019-12-25 14:49:37 · 1541 阅读 · 0 评论 -
View绘制流程和加载过程(一)
参考:Android 的屏幕刷新机制View 补间动画运行原理面试官又来了:你的app卡顿过吗?android屏幕刷新显示机制原创 2019-10-11 14:11:16 · 603 阅读 · 0 评论 -
贝塞尔曲线
文章目录一阶曲线二阶曲线三阶曲线四阶曲线五阶曲线贝塞尔曲线画圆一阶曲线一阶曲线是没有控制点的,仅有两个数据点(A 和 B),最终效果一个线段。二阶曲线二阶曲线由两个数据点(A 和 C),一个控制点(B)来描述曲线状态F就是贝塞尔曲线上的一个点(由A驶向C),动态过程如下。三阶曲线三阶曲线由两个数据点(A 和 D),两个控制点(B 和 C)来描述曲线状态四阶曲线四阶曲线...原创 2019-09-20 18:26:28 · 1122 阅读 · 0 评论 -
Android属性动画解析和实例
逐帧动画:在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。补间动画:对View进行一系列的动画操作,包括淡入淡出、缩放、平移、旋转四种。属性动画(property animation):是一种不断地对值进行操作的机制,并将值赋值到指定对象的指定属性上,可以是任意对象的任意属性。为什么要引入属性动画(Android 3.0版本)?补间动画只能作用在View上;且只能...原创 2019-01-15 10:15:41 · 332 阅读 · 0 评论 -
Android自定义View(二)
上一篇:Android自定义View基础(一)自定义View: 一般继承自View,SurfaceView或其他的View,不包含子View。自定义ViewGroup: 一般是利用现有的组件根据特定的布局方式来组成新的组件,大多继承自ViewGroup或各种Layout,包含有子View。自定义View绘制流程函数调用链(简化版)1、构造函数 //一般用于new一个View时使...原创 2019-01-14 14:41:31 · 438 阅读 · 0 评论 -
Android自定义View基础(一)
一、坐标系屏幕坐标系: 默认以屏幕左上角为原点O (0,0),往左为正,往下为正View坐标系: view布局时有四个属性(left、top、right、bottom)是相对于父布局的childView相对于parentView getTop(); //获取子View左上角距父View顶部的距离 getLeft(); //获取子View左上角距父View左...原创 2019-01-14 14:40:48 · 222 阅读 · 0 评论 -
Canvas绘图之PorterDuffXfermode使用
使用案例:引导页的蒙层遮罩刮刮卡效果PorterDuff.Mode有16种public enum Mode { CLEAR (0), SRC (1), DST (2), SRC_OVER (3), DST_OVER (4), SRC_I...原创 2019-07-31 18:21:31 · 278 阅读 · 0 评论 -
Android自定义View——遥控器按钮
效果图:原理:onSizeChanged拿到控件宽高,进行path和region的计算(此处,path和region的坐标值都是以viewWidth/2,viewHeight/2为坐标原点进行计算的)画布平移,绘制5个path点击事件,判断是否处于相应的region区域内,进行控件的重绘点击事件motionEvent的原始坐标(getX和getY),是以viewPare...原创 2019-07-10 18:53:07 · 2516 阅读 · 6 评论 -
Android自定义View——qq消息气泡
效果图:原理:控件源码:public class DragView extends View { private int defaultZoomSize = 8; //初始化圆的大小 private int initRadius; //圆1的圆心位置 private PointF center1; private PointF cent...原创 2019-06-29 18:31:55 · 769 阅读 · 1 评论 -
Android自定义View——进度条动画
控件效果原理:控制代码//更新进度值val mHandler = object : Handler() { override fun handleMessage(msg: Message?) { progressView.setCurrentProgress(progress1.toFloat()) } }//开启动画...原创 2019-06-29 17:28:57 · 1365 阅读 · 1 评论 -
Android自定义View——水波纹效果
效果如下:原理控制代码//这里用的kotlin//主线程刷新控件 val mHandler = object : Handler() { override fun handleMessage(msg: Message?) { waterRippleView.refreshView() } //开启动画,开线程,延时刷新...原创 2019-06-29 16:32:57 · 518 阅读 · 0 评论 -
Android自定义View——雷达图
分析绘制雷达背景图 drawline绘制文字标签 drawText填充雷达数据 drawPath描点 drawPoint全部代码如下所示:如果要修改为五边形、四边形,只要将borderCount 修改为相应值即可另外数据源的个数要大于等于borderCount,不然会空指针异常,请自己做好兼容性处理public class RadarView extends View {...原创 2019-06-27 14:54:14 · 919 阅读 · 0 评论 -
Android自定义View——弹性的圆
效果图:一次快动作,一次慢动作分解原理:贝塞尔曲线画圆的系数求值:Approximate a circle with cubic Bézier curves1、动作分解不做位移运动,单点动作分解1.1、从A运动到B:P2、P3、P4 横坐标的变动P2/P4纵坐标的变动P8、P9、P10横坐标的变动P8/P10纵坐标的变动1.2、在B处做弹性运动:先凹进去一部分,再弹出来...原创 2019-07-01 18:29:15 · 490 阅读 · 0 评论