7 涂程

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3w+

Android自定义控件进阶10-控件核心Matrix Camera

本篇依旧属于Matrix,主要讲解Camera,Android下有很多相机应用,其中的美颜相机更是不少,不过今天这个Camera可不是我们平时拍照的那个相机,而是graphic包下的Camera,专业给View拍照的相机,不过既然是相机,作用都是类似的,主要是将3D的内容拍扁变成2D的内容。众所周知,我们的手机屏幕是一个2D的平面,所以也没办法直接显示3D的信息,因此我们看到的所有3D效果都是3D在2D平面的投影而已,而本文中的Camera主要作用就是这个,将3D信息转换为2D平面上的投影,实际上这个类更

2020-08-11 22:30:39

Android自定义控件进阶09-控件核心Matrix原理

本篇的主角Matrix,是一个一直在后台默默工作的劳动模范,虽然我们所有看到View背后都有着Matrix的功劳,但我们却很少见到它,本篇我们就看看它是何方神圣吧。由于Google已经对这一部分已经做了很好的封装,所以跳过本部分对实际开发影响并不会太大,不想深究的粗略浏览即可,下一篇中将会详细讲解Matrix的具体用法和技巧。⚠️ 警告:测试本文章示例之前请关闭硬件加速。Matrix简介Matrix是一个矩阵,主要功能是坐标映射,数值转换。它看起来大概是下面这样:Matrix作用就是坐标映

2020-08-11 22:27:35

Android自定义控件进阶08-PathMeasure详解

可以看到,在经过 Path之基本操作 Path之贝塞尔曲线 和 Path之完结篇 后, Path中各类方法基本上都讲完了,表格中还没有讲解到到方法就是矩阵变换了,难道本篇终于要讲矩阵了? 非也,矩阵这一部分仍在后面单独讲解,本篇主要讲解 PathMeasure 这个类与 Path 的一些使用技巧。PS:不要问我为什么不讲 PathEffect,因为这个方法在后面的Paint系列中。先放一个图镇楼,省的下面无聊的内容把你们都吓跑了Σ( ̄。 ̄ノ)ノPath & PathMeasure顾名

2020-08-11 22:24:35

Android自定义控件进阶07-Path之完结篇

经历过前两篇 Path之基本操作 和 Path之贝塞尔曲线 的讲解,本篇终于进入Path的收尾篇,本篇结束后Path的大部分相关方法都已经讲解完了,但Path还有一些更有意思的玩法,应该会在后续的文章中出现。一.Path常用方法表为了兼容性(偷懒) 本表格中去除了在API21(即安卓版本5.0)以上才添加的方法。忍不住吐槽一下,为啥看起来有些顺手就能写的重载方法要等到API21才添加上啊。宝宝此刻内心也是崩溃的。作用相关方法备注移动起点moveTo移动下一次操作的起

2020-08-11 22:18:18

Android自定义控件进阶06-Path之贝塞尔曲线

一.Path常用方法表为了兼容性(偷懒) 本表格中去除了在API21(即安卓版本5.0)以上才添加的方法。忍不住吐槽一下,为啥看起来有些顺手就能写的重载方法要等到API21才添加上啊。宝宝此刻内心也是崩溃的。作用相关方法备注移动起点moveTo移动下一次操作的起点位置设置终点setLastPoint重置当前path中最后一个点位置,如果在绘制之前调用,效果和moveTo相同连接直线lineTo添加上一个点到当前点之间的直线到Path闭合路径clo

2020-08-11 22:15:36

Android自定义控件进阶05-Path之基本操作

Android自定义控件进阶05-Path之基本操作在上一篇Canvas之图片文字中我们了解了如何使用Canvas中绘制图片文字,结合前几篇文章,Canvas的基本操作已经差不多完结了,然而Canvas不仅仅具有这些基本的操作,还可以更加炫酷,本次会了解到path(路径)这个Canvas中的神器,有了这个神器,就能创造出更多**炫(zhuang)酷(B)**的东东了。一.Path常用方法表为了兼容性(偷懒) 本表格中去除了部分API21(即安卓版本5.0)以上才添加的方法。作用相

2020-08-11 22:12:36

Android自定义控件进阶04-Canvas之图片文字

Android自定义控件进阶04-Canvas之图片文字码牛学院用代码码出自己牛逼的人生在上一篇文章Canvas之画布操作中我们了解了画布的一些基本操作方法,本次了解一些绘制图片文字相关的内容。如果你对前几篇文章讲述的内容熟练掌握的话,那么恭喜你,本篇结束之后,大部分的自定义View已经难不倒你了,当然了,这并不是终点,接下来还会有更加炫酷的技能。一.Canvas的常用操作速查表操作类型相关API备注绘制颜色drawColor, drawRGB, drawARGB使用单

2020-08-11 22:09:28

Android自定义控件进阶03-Canvas之画布操作

Android自定义控件进阶03-Canvas之画布操作本来想把画布操作放到后面部分的,但是发现很多图形绘制都离不开画布操作,于是先讲解一下画布的基本操作方法。一.Canvas的常用操作速查表操作类型相关API备注绘制颜色drawColor, drawRGB, drawARGB使用单一颜色填充整个画布绘制基本形状drawPoint, drawPoints, drawLine, drawLines, drawRect, drawRoundRect, drawOval,

2020-08-11 21:54:47

Android自定义控件进阶02-Canvas之绘制图形

Android自定义控件进阶02-Canvas之绘制图形在上一篇自定义View分类与流程中我们了解自定义View相关的基本知识,不过,这些东西依旧还是理论,并不能拿来(zhuang)用(B), 这一次我们就了解一些能(zhaung)用(B)的东西。在本篇文章中,我们先了解Canvas的基本用法,最后用一个小示例来结束本次教程。一.Canvas简介Canvas我们可以称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础,非常强大。一般来说,比较基础的东西有两大特点:1.可操作性强

2020-08-11 21:53:07

Android自定义控件进阶01-自定义控件开发套路与流程

Android自定义控件进阶01-自定义控件开发套路与流程本章节为什么要叫进阶篇?(虽然讲的是基础内容),因为从本篇开始,将会逐渐揭开自定义View的神秘面纱,每一篇都将比上一篇内容更加深入,利用所学的知识能够制作更加炫酷自定义View,就像在台阶上一样,每一篇都更上一层,帮助大家一步步走向人生巅峰,出任CEO,迎娶白富美。 误,是帮助大家更加了解那些炫酷的自定义View是如何制作的,达到举一反三的效果。码牛学院用代码码出自己牛逼的人生自定义View绘制流程函数调用链(简化版)一.自定义V

2020-08-11 21:48:51

Android开发之APP插件化实践

背景在Android开发行业里,插件化已经不是一门新鲜的技术了,在稍大的平台型App上早已是标配。Atlas、Replugin、VirtualAPK相继开源,标志着插件化技术进入了成熟阶段。但纵观各大插件框架,都是基于自身App的业务来开发的,目标或多或少都有区别,所以很难有一个插件框架能一统江湖解决所有问题。最后就是绕不开的兼容性问题,Android每次版本升级都会给各个插件化框架带来不少冲击,都要费劲心思适配一番,更别提国内各个厂商对在ROM上做的定制了,正如VirtualAPK的作者任玉刚所说:完成

2020-08-09 22:24:17

是时候上车Jetpack了,内含音乐播放器实例

1. 背景之前公司项目用的一直是MVP框架,我个人也在几个月前基于鸿神 WanAndroid API开发了一款MVP版的App,使用MVP的过程最深的感受是开发效率极低,往往写一大堆接口,可复用的屈指可数。年初了解了Jetpack模式下的MVVM,在LiveData、ViewModel、DataBinDing的加持下实现了单向依赖和数据绑定,代码量大幅度减少,根据Jetpack的特性项目稳定性也提升了不少。为了更深入的理解Jetpack中各个组件,在前段时间基于Jetpack MVVM又实现了一版W

2020-08-09 22:13:43

怎么解决引用计数 GC 的循环引用问题?

作者:Android面试官引用计数方式 GC 存在循环引用问题,导致无法辨别无用对象,而 GC ROOT 方式不存在循环引用的问题引用计数和 GC ROOT 的实现机理很易理解,面试时大家都能流利应答,那怎么才能脱颖而出呢?思考一个问题:不通过 GC ROOT,仍使用引用计数方式,怎么解决它的循环引用问题?解答此问题前,通过目标驱动法来想象一下,若 Get 了此知识点,可以这样应用到面试中:面试官: 说一下垃圾回收机制吧我: …可以通过强、弱引用计数结合方式解决引用计数的循环引用问题,实际上

2020-08-07 22:29:51

字节瞧不上老程序员?我很慌…

前段时间,字节的朋友有个新项目,要我推荐靠谱的朋友,然后我就推荐了一个88年的同事老贾。一面的时候,老贾各方面都挺好,问啥都会,后来聊到性能优化问题,答得也还行,至少勉强进了二面。可好巧不巧,二面的时候问了个内存回收机制与GC算法,然后他就答不上来了,据说走的时候几乎落泪...唉!后来跟字节的朋友聊起这件事,他告诉我其实老贾并不是个例,他提醒了我以后面试的几个点,在这里我也分享给大家: 当面试官向你问图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?

2020-08-07 17:39:02

一次线程OOM排查看线程使用注意事项

一、背景介绍在开发项目中发生了一次OOM问题,通过crash 平台查看上报信息,发现在很多的页面都有报这个错误,但是相同的出错都是以下的错误,看不到APP的堆栈只能看到是线程池创建有问题的堆栈信息,如下所示:java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again at java.lang.Thread.nativeCreate(Native Method) at java.lang.Th

2020-08-06 21:02:18

从应用中的Binder谈起

一、前言要自顶向下的介绍Binder,那么我们需要先从日常开发中接触到的Binder组件说起,对于应用开发来说Binder的存在是透明的,我们可能在不经意间就通过Binder完成了一系列操作,接下来我将会介绍和应用开发和Binder关系最为紧密的部分,以次让读者对Binder的在系统中的存在有初步的认识和了解。二、Activity的启动Activity启动的时候是我第一个想到的使用Binder的场景,这是我们开发中最频繁使用的功能,接下来我们看看我潜入到Activity启动中看看Binder如何

2020-08-06 20:40:02

通过字节码分析Java中自动装箱和拆箱是如何实现的

Java中自动装箱和拆箱装箱(Boxing),也称为包装(Wrapper),是在对象中放置原语类型(primitive type)的过程,以便原语(primitive)可以作为引用对象使用。这里的primitive type就是Java里面的基本类型,所有的基本类型都有一个与之对应的类。例如,Integer类对应基本类型int。通常,这些类称为包装器(wrapper)。这些对象包装器类拥有很明显的名字:Integer、Long、Float、Double、Short、Byte、Character、

2020-08-05 22:39:05

做了三年 Android,我竟然不知道什么是 UI 线程

面试官:说说什么是 UI 线程?????:就是用来刷新 UI 所在的线程嘛面试官:多说点????:UI 是单线程刷新的,如果多个线程可以刷新 UI 就无所谓是不是 UI 线程了,单线程的好处是,UI 框架里不需要到处上锁,做线程同步,写起来也比较简单有效。面试官:你说的这个 UI 线程,它到底是哪个线程?是主线程吗?????:拿 Activity 来说,我们在 Activity 里异步做完耗时操作,要刷新 UI 可以调用 Activity.runOnUiThread 方法,在 UI 线程

2020-08-04 22:28:38

说一说 Service 的启动流程

???? ???? ????️ :好久不见,甚是想念❝???? 自认为无所不知,水平已达应用开发天花板,目前月薪 10k❞「面试官」:说一说 Service 的启动流程????:直接 startService 就启动了鸭「面试官」:就这样?????:你也太小看我了,还有 bindService 啊,也会自动启动「面试官」:emm,深入点呢?????:不好意思,没深入过。。。「面试官」:没事,回去准备下,下次还问你 Service❝???? 业余时间经常打游戏、追剧、

2020-08-04 22:25:35

Android面试10问:并发基础

前言对Android开发者来说,尤其是初中级的开发者,相信对并发编程和设计模式的了解少之又少(主要也平常用的少,学了就忘系列)。包括本人在内,这方面一直是个人进阶的软肋之一。对于并发实践经验缺乏的开发者来说,文绉绉的技术书籍和博客,会比较羞涩难懂。从本文开始,会尝试着,从不同角度和思维方向写设计模式和并发编程的知识(会比较偏理论),望能和大家共勉。由于无知与惰性,让我们感觉摸到了技术的天花板!面试10问本文结合个人实际面试经验和最近学习归纳总结而出,欢迎各位大佬点赞支持。通过面试10问,

2020-08-04 19:40:05

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。