自定义view
沙漠一只雕得儿得儿
沙漠一只雕,白月光与朱砂痣
展开
-
自定义LayoutManager--实现流式布局
整体效果,使用RecyclerView,通过自定义的LayoutManager实现了一个流式布局,在上滑到底部和下滑到顶部时无法滑动,并且每行子item可以测量当宽度不够时自动折行显示的效果,完整项目:https://github.com/buder-cp/CustomView/tree/master/buder_DN_view/buderdn23_layoutmanager首先我们要准备...原创 2020-05-05 14:36:48 · 988 阅读 · 0 评论 -
Android自定义LayoutManger-仿写抖音主界面
看下项目整体实现效果,上下翻页时完成视频切换:视频的切换这里我们使用RecyclerView进行实现,核心是需要自定义LayoutManager;视频播放我们使用VideoView控件。在MyLayoutManager加载成功后,我们需要添加监听addOnChildAttachStateChangeListener,目的是监听到RecyclerView中一个item的滑出以及下一个it...原创 2020-05-04 20:33:37 · 948 阅读 · 0 评论 -
Android自定义view仿写QQ空间可拉伸头部控件
先来看下仿照QQ空间顶部图片过度下拉时,顶部图片放大回弹的效果,完整项目:https://github.com/buder-cp/CustomView/tree/master/buder_DN_view/buderdn20业务逻辑包括:顶部图片可以下拉,当过度下拉时会有顶部图片放大的效果,在松手时会有顶部图片回弹效果。我们看下大致看下需要重写哪些方法才能完成上面的需求。首先肯定要有...原创 2020-05-04 17:25:46 · 342 阅读 · 0 评论 -
手写RecyclerView--实现item回收池、支持千万级item
首先我们手写RecyclerView需要继承ViewGroup,我们需要重写ViewGroup的一些方法完成RecyclerVIew的测量、摆放、以及事件分发、移动等主要方法:protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)protected void onLayout(boolean change...原创 2020-05-04 11:23:50 · 1012 阅读 · 2 评论 -
RecyclerView嵌套滑动冲突解决
现在我们有竖向滑动的RecyclerView,在每个item内部又嵌套了一个横向滑动的RecyclerView,那么我们手指在滑动RecyclerVIew时,到底是竖向的响应还是横向的响应呢?如图:红色线为手指滑动距离,右上方滑动到左下方;绿色为竖向滑动距离;蓝色为横向滑动距离;我们的期望是如果手指滑动的横向距离大于竖向距离的话就响应竖向的外层RecyclerVIew的滑动;如果手指移动的竖向...原创 2020-05-03 14:14:21 · 1739 阅读 · 0 评论 -
Android系统控件获取自定义属性
我们如果想在ImageView,Button,TextView等系统控件中在XML中配置自定义属性该如何实现呢?例如我们有一个scrollView,在ScrollView里面有上述的一些控件的自定义属性,实现在滑动Scrollview时,里面的控件根据滑动的距离执行各自的动画进度。scrollivew里包含的这些控件可以是任意常用的控件,如 ImageView,Button,TextView等。我...原创 2020-05-03 10:06:59 · 1025 阅读 · 0 评论 -
ItemTouchHelper实现拖拽和侧滑删除自定义篇(二)
上一篇中我们学习了使用itemTouchHelper来上下拖拽和侧滑删除view,但是如果需要在item侧滑后响应我们的按钮点击事件是无法生效的,因为ItemTouchHelper并没有进行子view的事件分发,导致无法响应在recyclerView中的子view的点击事件。这就需要我们自己完成对子view的事件分发了,整体实现效果如图,完整项目在这个recyclerView中我么定义了三...原创 2020-05-02 20:10:14 · 1226 阅读 · 0 评论 -
ItemTouchHelper实现拖拽和侧滑删除使用篇(一)
有时候我们可能需要实现侧滑删除的功能,又或者长按Item进行拖动与其他Item进行位置的交换,但RecyclerView没有提供现成的API供我们操作,但是SDK提供了ItemTouchHelper这样一个工具类帮助我们快速实现以上功能。首先我们来看下使用recyclerView的上下拖拽和侧滑删除效果,完整项目:官方提供了ItemTouchHelper类使用步骤如下:定义ItemTo...原创 2020-05-02 15:20:00 · 1284 阅读 · 0 评论 -
Android自定义view刮刮卡--刮奖品、刮妹子
先来看下今天能挂到啥样的妹子吧,完整项目我们来分析下实现流程吧~其实就是两个Bitmap,一前一后,前面的是穿着衣服的,后面的是没穿衣服的, 然后通过一个Path来记录用户绘制出来的图形,然后为我们的画笔设置DST_OUT的模式,那么 与Path重叠部分的DST(目标图),就是穿着衣服的图,会变成透明!好哒,很简单! 我们再慢慢细化! 首先我们需要两个Bitmap,用来存储前后两张图...原创 2020-04-29 11:47:52 · 350 阅读 · 0 评论 -
Android自定义view--图形叠加Xfermode与PorterDuff
首先来看下各个场景的效果,项目完整代码:https://github.com/buder-cp/CustomView/tree/master/buder_DN_view/buderdn04上述效果的实现主要是使用图形的fermode与PorterDuff属性的叠加,下面是18中图形叠加模式运行效果图:1)PorterDuff.Mode.ADD:饱和度叠加2)Porte...原创 2020-04-29 11:14:40 · 2021 阅读 · 0 评论 -
Android自定义view--雷达扫描
雷达扫描view,先看下整体效果:项目地址:https://github.com/buder-cp/CustomView/blob/master/buder_DN_view/buderdn03/src/main/java/com/test/buderdn03/RadarGradientView.java准备两个画笔,一个是一圈圈的圆圈,另一个是扫描画笔;动画实现这里实现动画的...原创 2020-04-26 22:54:33 · 687 阅读 · 0 评论 -
Android自定义扩散聚合旋转动画综合实例
看下整体实现效果如下:完整项目:https://github.com/buder-cp/CustomView/tree/master/buder_DN_view/buderdn12这个效果整体可以分为三个动画的合集:白色背景,六个小圆旋转动画:RotateState 白色背景,小圆扩散聚合动画:MergingState 绘制背景图片动画:ExpandStateimport ...原创 2020-04-25 18:17:00 · 626 阅读 · 0 评论 -
Android自定义侧滑菜单选项
看下整体实现效果,侧边滑出一个菜单选项。完整代码详见首先,我们需要实现从右边滑出菜单选项的背景色,利用二阶贝塞尔曲线即可实现:import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;im...原创 2020-04-25 16:05:31 · 364 阅读 · 0 评论 -
AnimatorSet制作卫星图动画
首先看下效果图:要实现这个效果很简单,就是Animator动画的合集使用,首先在屏幕右下角是一个Menu Button,它的下面隐藏了五个我们一会将要展示的卫星button,当点击到menu button后,执行AnimatorSet动画,五个卫星button做属性动画即可,包括X轴Y轴的平移动画、ScaleXScaleY的缩放动画,以及从透明到可见的alpha动画;缩放回去的动画就是上面...原创 2020-04-21 21:57:02 · 505 阅读 · 0 评论 -
Android Path以及PathMeasure动画练习
本次练习效果图如下:左边是支付宝的支付成功打对勾的path动画,右边的是一个箭头沿着圆圈做圆周运动的path动画。 首先了解下PathMeasure的相关基础函数的用法,下图是将一个正方形,利用PathMeasure的getSegment()方法截取从0开始,到150像素距离长度的路径画出来如下:import android.content.Context;...原创 2020-04-19 22:07:04 · 666 阅读 · 0 评论 -
Android画正N边形战力图
看下效果图画的正六边形:画正N边形最重要的就是求出N边形的每个顶点坐标,然后将这些顶点坐标连接起来就可以了。我们可以将问题转化为求圆周上的每个点的坐标,首先要学习下Math.sin(弧度)、Math.cos(弧度),注意这里的参数是弧度而非角的度数弧度的计算公式为:角度*(PI/180)30° 角度 的弧度 =30 * (PI/180)如何得到圆上每个点的坐标?解决...原创 2020-04-13 22:52:59 · 7441 阅读 · 4 评论 -
自定义View基础实战--文字居中、图文混排
实战view四:文字居中当我们在使用canvas.drawText时,它的参数有文字偏移的坐标设置,要设置好偏移坐标需要理解text文字绘制的几条baseline的线,如果不设置则,文字会稍稍偏上,如左图,设置好偏移后效果如右图相关参考https://hencoder.com/ui-1-3/ package com.test.drawing.view;...原创 2020-04-06 16:49:01 · 439 阅读 · 0 评论 -
自定义View基础实战--刻度圆盘、饼状体、两个图形叠加
本篇实战内容主要围绕draw、paint、path等常用API展开,为达到熟练使用目的,对一些基础常见的view效果进行实现。实战view一:圆盘刻度相关知识点:使用PathDashPathEffect画圆弧上的刻度,PathMeasure计算圆弧长度;可参考:https://hencoder.com/ui-1-1/ https://hencoder...原创 2020-04-06 12:08:14 · 378 阅读 · 0 评论