自定义view
文章平均质量分 78
洌冰
没有
展开
-
红橙Darren视频笔记 RecyclerView基本使用
1.基本使用1.1 先准备一个modelpublic class User { public User(String userName, int age, String address) { this.userName = userName; this.age = age; this.imageUrl = address; } String userName; int age; String imageUrl;原创 2021-05-17 21:02:59 · 208 阅读 · 0 评论 -
红橙Darren视频笔记 界面优化与屏幕适配(下)
1.几个概念1.1 屏幕尺寸屏幕对角线的长度,单位是英寸,计算结果为根号下(屏幕宽度的平方+屏幕高度的平方)注意屏幕宽度的平方和屏幕高度的平方的单位是英寸1.2 px像素,屏幕上最小绘制的点为一个像素1.3 屏幕分辨率也叫屏幕的物理尺寸单位是px 比如一般的屏幕物理尺寸有768x1920,768x1280等等,这里的单位都是px,以768x1920为例,他的意思是该屏幕最多可以绘制768x1920个不重叠的点我们可以使用以下命令获取手机的物理尺寸adb shell wm sizePhy原创 2021-02-02 19:51:19 · 439 阅读 · 0 评论 -
红橙Darren视频笔记 界面优化与屏幕适配(上)
1. 内存泄漏,内存溢出与内存抖动内存泄漏:GC在内存吃紧去回收内存的时候,无法回收某一块不再使用的内存。随着时间的推移会导致内存溢出,一般是强引用导致之前有总结过内存泄漏的一些case和解决方案https://blog.csdn.net/u011109881/article/details/61626520内存溢出:一般会导致程序crash,(out of memory)是由长时间的内存泄漏导致的内存抖动:GC的频率非常频繁,导致程序再不停的回收和释放内存比如我们在自定义View中的onDra原创 2021-02-02 19:41:02 · 314 阅读 · 0 评论 -
红橙Darren视频笔记 自定义View总集篇
本节目的 了解 ActivityManagerService Activity ActivityManager Window WindowManager WindowManagerService Session ViewRootImpl等的关系学完应该能够回答1 Activity怎么创建的?2 布局怎么加载3 View绘制流程4 View的touch事件5 WindowManger与window的关系第一部分 activity如何创建我们找到MainActivity的setContentV原创 2021-01-27 21:22:18 · 445 阅读 · 0 评论 -
红橙Darren视频笔记 旋转加载界面
效果知识点三角函数 动画结合画笔使用 状态机模式关于数学中的度再逼逼两句我们数学里面的度一半是是弧度的意思。即在一个圆中,角度代表当前角度对应的弧长AB是圆半径r的几倍。我们知道圆周计算公式C=2πr,因此360°的弧长对应弧度2π,因此我们平常所说的30° 60° 90°对应弧度是π/6 π/3 π/2。视频里面讲到的时候我还一脸懵,以前的知识忘得差不多了。。。关于状态机的使用 我在自定义View中有详细说明,如果不明白可以自己搜索一下,是个比较简单的设计模式实现思路分析黑色的十字交叉原创 2021-01-16 00:53:23 · 290 阅读 · 2 评论 -
红橙Darren视频笔记 点赞效果 动画练习
效果知识点位移动画 随机数 估值器(TypeEvaluator )使用思路1.在底部中心位置初始化图片1.1用上透明度变化和scale变化的动画2.计算二阶贝塞尔曲线3.添加透明度变化动画,飘到顶部时颜色最淡4.优化4.1加一些随机的插值器4.2动画结束时将添加的View删除大部分代码1 自定义Layoutclass LikesLayout extends RelativeLayout { private static final String TAG = "LikesL原创 2021-01-13 23:42:31 · 208 阅读 · 0 评论 -
红橙Darren视频笔记 任意控件实现拖动消失爆炸效果
效果注意 本节内容基于上一篇博客的代码继续编写code本节知识点1.如何创建View的截图2.值动画练习3.贝塞尔曲线的使用4.画笔使用 onDraw练习5.View.getRowX VS View.getX6.获取状态栏高度7.插值器使用8.帧动画练习步骤分析1.原理将原来的View隐藏,拖动的时候利用WindowManager创建一个新View(只是一个截图),拖动的其实只是截图,我们可以将截图放在Decor View的层级(这里是我的猜测,视频里面说的是放在WindowMa原创 2021-01-12 23:14:07 · 275 阅读 · 1 评论 -
红橙Darren视频笔记 贝塞尔曲线实现消息拖拽粘性效果 画笔练习
效果图要实现这样的效果 我们要先知道那段弧线是如何绘制的,实际上那段弧线就是贝塞尔曲线一. 什么是贝塞尔曲线https://www.jianshu.com/p/8f82db9556d2上面有个链接 里面的动图比较形象二阶Bezier曲线公式:P0A/P1A=P1B/P2B=AC/BC在维持以上比例的同时,A点从P0出发到达P1点点C所经过的路径就是Bezier曲线其中P1叫做控制点,控制点不同,绘制的路径也会大有不同当控制点有0个时,点C的路径叫1阶Bezier曲线当控制点有1个时原创 2021-01-10 14:20:57 · 251 阅读 · 3 评论 -
红橙Darren视频笔记 圆点loadingView 动画ANR
效果思路思路比较简单 先自定义view 该view只是一个圆,可以设置绘制的颜色。再自定义一个ViewGroup,在里面放三个之前自定义好的view。初始化的部分就完成了。下面接着看动画部分,动画可以分为两部分,一部分是向外移动 一部分是向内移动,这里使用属性动画+AnimatorSet很容易实现,接着就是监听动画执行完毕,执行向内移动的动画,向内移动的动画结束执行向外移动的动画,循环执行。注意需要提供一个方法,在加载完毕的时候停止动画释放资源。遇到的坑1.crash问题2021-01-09 1原创 2021-01-09 16:31:04 · 320 阅读 · 0 评论 -
红橙Darren视频笔记 筛选View 属性动画 Adapter模式 组合动画AnimatorSet 观察者模式(对比Android ListView) 练习
效果一 布局分析:分成三部分1.菜单栏TabView部分 本文采用线性布局包裹TextView的形式 采用LinearLayout的原因是每个Tab页可以使用权重做到均分LinearLayout的效果2.主题内容MainContent部分 本文为了简单处理 直接放一个相对布局3.阴影部分ShadowView 是个半透明的View3个部分放在一个相对布局中二 添加适配器模式并进行查漏补缺这里的适配器为了数据和Custom FilterView能够进行适配,使用不同的Adapter可以显示不同原创 2021-01-09 00:03:54 · 236 阅读 · 1 评论 -
红橙Darren视频笔记 动画讲解 仿58同城 加载动画
效果一.动画分类介绍帧动画 和 补间动画帧动画:一张一张的图片不断轮巡播放补间动画:位移,透明度,像缩放,改变的是View的属性(属性动画属于补间动画)二.效果分析2.1 加载显示组合控件(布局) 布局三个部分 = ShapeView + View(阴影背景 shape=“oval”) + TextView2.2 编写自定view ShapeView2.3 将布局加载到自定义ViewGroup LoadView中2.3 分析实现动画2.3.1第一部分 关于阴影:下落位移的时候配合中间阴转载 2021-01-04 01:23:33 · 11742 阅读 · 0 评论 -
红橙Darren视频笔记 CoordinatorLayout:实现自定义behavior
效果:目标:利用CoordinatorLayout实现自定义behavior ,顶部的TitleBar和底部的ActionBar实现能够随着手势自由显示和隐藏activity中使用了recyclerview 如果对recyclerview不熟悉可以参考官网:https://developer.android.google.cn/guide/topics/ui/layout/recyclerview所谓的behavior是与CoordinatorLayout进行联动的一些行为 注意观察 所有的beh原创 2021-01-02 00:38:09 · 284 阅读 · 3 评论 -
红橙Darren视频笔记 状态栏设置颜色 获取高度 设置全屏
一 修改状态栏颜色状态栏说的是黄框内部部分 //设置Activity的状态栏颜色 注意是状态栏 public static void setStatusBarColor(Activity activity, int color) { // 5.0 以上 直接调用系统提供的方法 setStatusBarColor if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {原创 2020-12-31 17:55:51 · 189 阅读 · 0 评论 -
红橙Darren视频笔记 九宫格解锁 Java版 & IntDef使用
参考链接https://www.jianshu.com/p/74e760ef8d10花了接近一天 终于完工最终效果:九宫格看起来复杂 将步骤分解 其实不是很复杂本文先讲思路 后贴代码一 定义结构体 测量宽高结构体Point用于记录各个点 点的位置 index用于记录密码 status记录按下的状态覆盖onMeasure方法 取宽高中的较小者 绘制一个正方形二 绘制默认状态的9个圆圈我们需要一个画笔以及各个圆圈的大小 位置等信息来绘制,因此先做第三步。完成第三步继续做这一步,需要考虑内圆原创 2020-12-29 19:13:16 · 422 阅读 · 0 评论 -
红橙Darren视频笔记 仿汽车之家 可拖动列表
最终效果演示1.ViewDragHelper简介1.1ViewDragHelper可以做什么基本效果1.2实现codepublic class DragView extends FrameLayout { ViewDragHelper mViewDragHelper; public DragView(@NonNull Context context) { this(context, null); } public DragView(@NonNu原创 2020-12-28 13:30:39 · 259 阅读 · 1 评论 -
红橙Darren视频笔记 仿QQ侧滑效果
这一篇没有什么新的内容 就是改写 红橙Darren视频笔记 仿酷狗侧滑效果 的侧滑的效果1.去掉淡入淡出效果2.加上黑色模板效果效果:去掉淡入淡出效果很简单 就是注释掉onScrollChanged对应代码即可而添加灰色蒙板效果的思路也很简单 就是在主体界面添加一个覆盖整体的View 给一个背景,在slidingMenu中获取到这个view 同样在onScrollChanged调整透明度以下只给出变化的部分<?xml version="1.0" encoding="utf-8"?>原创 2020-12-26 21:07:10 · 198 阅读 · 0 评论 -
红橙Darren视频笔记 仿酷狗侧滑效果
效果需求1.思路利用ScrollView包裹两个布局+scroll实现侧滑效果2.新建menu和主体的xml布局文件 自定义属性 并获取4.在onFinishInflate修改布局宽度 思考onFinishInflate的调用时机5.利用api smoothScrollTo关闭 打开菜单(默认状态关闭菜单)6.利用onScrollChanged+setAlpha实现淡入淡出效果7.利用onScrollChanged+setScaleX setScaleY实现右侧内容放大缩小的效果8.利用o原创 2020-12-26 16:35:51 · 310 阅读 · 1 评论 -
红橙Darren视频笔记 自定义sidebar 自定义View ViewGroup套路
1效果2 目的学习onMeasure onDraw onTouchEvent等自定义view方法的使用3 自定义viewpublic class LetterSideBar extends View { private static final String TAG = "LetterSideBar"; String mLetters[] = new String[]{ "A", "B", "C", "D", "E", "F", "G转载 2020-12-22 00:03:46 · 210 阅读 · 1 评论 -
红橙Darren视频笔记 流式布局tagLayout measure layout方法学习 adapter使用 学习感悟
效果:自定义Viewpublic class TagLayout extends ViewGroup { private static final String TAG = "TagLayout"; List<List> childViewsInLines = new ArrayList<>(); List<View> oneLineViews = new ArrayList<>(); public TagLayout(原创 2020-12-19 17:02:13 · 288 阅读 · 1 评论 -
红橙Darren视频笔记 自定义RatingBar touch事件学习 dp转px listener监听
效果图:一 需求分析我们需要实现评分的控件 那么主要有几步1.绘制出评分控件2.响应用户的触摸改变星星数3.控件发生星星变化时通知监听者二 自定义属性需要属性:星星总数选中星星的图片id空白星星的图片id星星之间的间隔<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="CustomRatingBar"> <attr n原创 2020-12-17 00:24:25 · 316 阅读 · 0 评论 -
Android 高斯模糊demo
参考链接https://www.jianshu.com/p/97b3bd15f076效果图自定义属性<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="BlurringView"> <attr name="blurRadius" format="integer"/> <attr name="downSamp转载 2020-12-16 13:39:20 · 478 阅读 · 0 评论 -
红橙Darren视频笔记 一个控件显示两种颜色的文字 画笔的使用
需求分析1.一行文字显示两种颜色2.颜色变化可以从右到左或者从左到右3.能够随着view pager切换思路:a.继承View:需要重写onMeasure onDraw方法b.继承Text View 不需要重写onMeasure方法 只要重写onDraw方法需要定义字体变化的颜色...原创 2020-12-08 01:23:07 · 444 阅读 · 0 评论 -
红橙Darren视频笔记 仿QQ步数计数view 画笔的使用
步骤1.自定义属性2.在xml中使用3.创建自定义view文件 写好构造函数4.在上面的Java文件中访问自定义属性5.实现onMeasure方法6.画外圆弧 内圆弧 文字7.添加一点动画效果图新建attrs文件夹 编写自定义属性<?xml version="1.0" encoding="utf-8"?><resources> <!-- step1 定义组定义属性 --> <declare-styleable name="QQ原创 2020-12-06 18:11:51 · 240 阅读 · 0 评论 -
红橙Darren视频笔记 自定义TextView 基线的理解 问题引申(viewgroup 不触发onDraw方法)
1.自定义属性以备使用新建attrs.xml<?xml version="1.0" encoding="utf-8"?><resources> <!-- name 自定义view的名字 --> <declare-styleable name="MyTextView"> <!-- name 属性名称 format 格式 --> <attr name="ChjText" format="str原创 2020-12-06 01:32:33 · 401 阅读 · 3 评论 -
自定义view 写一个popup view
目标:实现一个popup view 自动显示在点击的view的附近,且箭头一直指向该view的水平中心位置效果图:思路自定义view包含PopupWindow的实例 对该实例进行操控步骤1 创建popupview的布局popview_container.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/and原创 2020-12-05 10:01:37 · 835 阅读 · 1 评论