自定义控件:

自定义控件: 1.组合控件:将系统原生控件组合起来,加上动画效果,形成一种特殊的UI效果 2.纯粹自定义控件:继承自系统的View,自己去实现view效果 自定义控件步骤: 测量:onMeasure 设置自己显示在屏幕上的宽高 布局:onLayout 设置自己显示在屏幕上的位置(只有在自定义ViewGroup中才用到) 绘制:onDraw 控制显示在屏幕上的样子(自定义viewgroup时不需要这个) View和ViewGroup的区别 1.他们都需要进行测量操作 2.ViewGroup主要是控...阅读全文

CSDN博客 2020-01-23 22:01:39 zmken497300

SurfaceView与View的区别

SurfaceView与View的区别 Android系统中使用View可以满足大部分绘图要求,View是通过刷新来重绘视图的,Android系统通过发出VSYNC信号来进行屏幕的重绘,刷新的间隔时间为16ms。如果在16ms内View完成了所需要执行的所有操作,那么在用户的视觉上,就不会产生卡顿的感觉;而如果执行的操作逻辑太多,特别是需要频繁刷新的界面上,例如游戏界面,那么就会不断阻塞主线程,从而导致画面卡顿。很多时候,在自定义View的Log中经常会看到如下所示的警告。 “Skipped 4...阅读全文

CSDN博客 2020-01-17 21:01:37 lj402159806

一、Android系统简介

引言: 从接触Android学习到开发马上就有3年了,讲道理是不是也该算是一个熟练的码农了(啥时候能成大牛啊),但是你问我Android都有哪些技术啊,开发过程中都有什么难点啊,好吧,我还真的不知道从何讲起,所以下定了决心,准备像各路大牛学习,坚持写博客,整理记录自己的脑子里的知识。都说写博客特别耗费时间,但是时间嘛就像女人的胸,挤挤总是会有的(坏笑)。好,不多多逼逼,下面开始... 一、Android系统简介 Android系统:Google公司发布的手机或者平板上的运行系统,现在最新(180...阅读全文

CSDN博客 2020-01-16 11:02:46 a619993087

状态字体颜色有区分

最近一直忙着写业务,一直没精力更新博客,趁着最近有点空闲事件,觉得很有必要写一篇博客捡回以前的那个状态。就写一个自己当时总结的一个适配功能吧:关于状态栏的字体/图标颜色适配。 随着Android6.0 Android7.0系统的系统升级,开发者来说适配的容易程度越来越低,我们需要将精力放到适配4.4+以上,而Android4.4相对来说是一个比较稳定的版本,尤其是在UI上它又和Android 6.0、Android7.0接近。 对于状态栏的,我记得之前我写过文章来实现着色的、透明的等各种样式的适...阅读全文

CSDN博客 2020-01-10 22:01:35 ownWell

谈谈我对Kotlin中协程的理解

1 协程是什么 kotlin 官方文档说:本质上,协程是轻量级的线程。 从 Android 开发者的角度去理解它们的关系: 我们所有的代码都是跑在线程中的,而线程是跑在进程中的。 协程没有直接和操作系统关联,但它不是空中楼阁,它也是跑在线程中的,可以是单线程,也可以是多线程。 单线程中的协程总的执行时间并不会比不用协程少。 Android 系统上,如果在主线程进行网络请求,会抛出 NetworkOnMainThreadException,对于在主线程上的协程也不例外,这种场景使用协程还是要切线程...阅读全文

Segmentfault 2019-11-20 19:03:32 小羊子说

Gbox开源:比RN和WebView更轻的高性能动态化业务容器,解决首页动态化的痛点

1 前言 注: 本文中所有的xml都可以直接贴去mock测试,文章中还附有运行预览的截图。阅读本文可能需要您亿点点的时间。 2 我们要解决什么问题? 2.1 不讲应用场景就是耍流氓! 在线上,对于某些适用于要求强展示、轻交互、高可配场景,RN和WebView显得不够灵活,性能表现也不够好。 使用RN时要占据整个Activity,而且Native和Js的通信损耗不可避,WebView的情况则更加糟糕,还要lock主线程来加载webkit。这在二级、三级页面还好,在首页是绝对不能用这种掉性能的方案的...阅读全文

Segmentfault 2019-11-13 14:03:33 LukeXeon

ZetCode Kotlin 教程

来源:ApacheCN ZetCode 翻译项目译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。(改编自维基百科) 目录 Kotlin Hello World 教程 Kotlin 变量 Kotlin 的运算符 Kotlin w...阅读全文

Segmentfault 2019-11-11 19:03:33 飞龙

Kotlin之在Gradle中无参(no-arg)编译器插件的使用

1、前言 最近在用Kotlin+Spring Boot写一个后端项目,实体类习惯性地用了Kotlin中的data class,但是Spring要求要有一个无参的构造函数,否则可能会抛出java.sql.SQLDataException。要使data class能够生成一个无参的构造函数,有两种方法可以做到: 1.给data class的构造函数中的每一个参数都赋上默认值。比如: data class User( @TableId(value = "id", type = IdType.AUTO)...阅读全文

Segmentfault 2019-11-10 15:03:32 lindroid

Kotlin 重载个方法,还有两幅面孔,省代码的同时也带来一个深坑 | Kotlin 原理

一. 序 今年五月的 Google I/O 上,Google 正式向全球宣布 Kotlin-First 这一重要概念,Kotlin 将成为 Android 开发者的首选语言。 新语言自然有新特性,还保持 Java 的编程习惯去写 Kotlin,也不是不行,但是总感觉差点意思。 最近公众号「谷歌开发者」连载了一个《实用 Kotlin 构建 Android 应用 | Kotlin 迁移指南》的系列文章,就举例了一些 Kotlin 编码的小技巧。既然是一种指南性质的文章,自然在「多而广」的基础上,有意...阅读全文

Segmentfault 2019-11-07 14:03:33 plokmju88

浅谈Kotlin中的函数

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/UV23Uw_969oVhiOdo4ZKAw 作者:连凌能 Kotlin,已经被Android官方宣布 kotlin first 的存在,去翻 Android 官方文档的时候,发现提供的示例代码已经变成了 Kotlin。Kotlin的务实作风,提供了很多特性帮助开发者减少冗余代码的编写,可以提高效率,也能减少异常。 本文简单谈下Kotlin中的函数,包括表达式函数体,命名参数,默认参数,顶层函...阅读全文

Segmentfault 2019-11-04 12:03:32 vivo互联网技术

Kotlin干掉了findViewById,但用不好也会有性能问题

自从 Google 宣布 Kotlin 为 Android 一等公民的身份后,大量的 Android 开发开始接触和使用 Kotlin,也体会到 Kotlin 在编码过程中的便捷和高效。 在 Kotlin 中,有个非常便捷的特性,就是无需再使用 findViewById() 方法,Kotlin 可以直接通过 View 的 ID 来访问 View 并进行操作,该特性被称为「静态布局引入」。 findViewById() 这个方法,会通过遍历 View Tree 的方式,来找到我们指定 ID 的 V...阅读全文

Segmentfault 2019-10-29 22:03:34 安卓资深架构师

Android Navigation的四大要点你都知道吗?

在JetPack中有一个组件是Navigation,顾名思义它是一个页面导航组件,相对于其他的第三方导航,不同的是它是专门为Fragment的页面管理所设计的。它对于单个Activity的App来说非常有用,因为以一个Activity为架构的App页面的呈现都是通过不同的Fragment来展示的。所以对于Fragment的管理至关重要。通常的实现都要自己维护Fragment之间的栈关系,同时要对Fragment的Transaction操作非常熟悉。为了降低使用与维护成本,所以就有了今天的主角Na...阅读全文

Segmentfault 2019-10-28 20:03:36 idisfkj

Kotlin——数据类型与Java的对比

严格的数据类型验证 java 的世界中,基本数据数据类型不同也是可以赋值操作的( java 处于睁一只眼闭一只眼的情况) 例如: public static void main( String[] args) { int a = 10; /** * 这种情况,java 是支持的,因为不存在精度丢失的情况 */ long b = a; } Kotlin 具有严格的数据类型判断,不同的类型是不允许赋值操作的。 如: fun main() { val a: Int = 10 /** * 将 Int 类...阅读全文

Segmentfault 2019-10-28 10:03:42 安卓资深架构师

Android Display 系统分析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/ljp1205/article/details/53405641 Android Display 系统分析 大概两年前做过一个项目,大致是在Android 系统上实现双显的支持,其中有个需求是需要手动配置每个显示器的旋转角度,当时对Android 的 Display系统有关简单了解,但是不够深入。一直觉得是留下了一个遗憾,现在趁有时间来把...阅读全文

CSDN博客 2019-10-26 11:01:35 ljp1205

总数操作符

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/hjkcghjmguyy/article/details/73879795 总数操作符 any() 如果至少有一个元素,或者至少有一个元素符合给出的判断条件,则返回true。 val list = listOf(1, 2, 3, 4, 5, 6) assertTrue(list.any()) assertTrue(list.any { i...阅读全文

CSDN博客 2019-10-25 16:01:04 hjkcghjmguyy

Kotlin有可能取代Java吗?详谈Kotlin的优缺点

Kotlin有可能取代Java吗?这是前不久,技术开发区讨论最多的问题,对于java来说,一生之敌太多,不过真正能笑到最后的还是java,而这次java好像真的遇到事了,一种叫kotlin的语言强行C位出道,对于java来说是一个很大的冲击。不过对于外行人来说,Kotlin是什么都不太清楚?更别说Kotlin真的会取代Java吗?今天传智播客就给大家科普一下关于Kotlin的一些问题。 Kotlin取代Java是真的吗? Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains ...阅读全文

Segmentfault 2019-10-18 12:03:33 黑马程序员广州

BeginnersBook Kotlin 教程

来源:ApacheCN BeginnersBook 翻译项目译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。(改编自维基百科) 目录 起步 在 Eclipse IDE 中创建并运行您的第一个 Kotlin 项目 在 Intel...阅读全文

Segmentfault 2019-10-16 15:03:35 飞龙

mybatis-plus的kotin配置.md

很久没有写分享了,因为最近一直在用 kotlin 写 spring,作为 kotlin 新人遇到的坑基本都能 Google 到,也就没必要在写一次了。今天将我在开发过程中使用 kotlin 加 mybatis-plus 遇到的问题写出来,给即将入坑的朋友。 先给kotlin打个广告 如果你正在写 Java 代码,可以尝试使用 kotlin,历史的积累不会失去,kotlin 的优雅会让你爱不释手。 正文 mybatis-plus 在 kotlin 中使用已经可以完美使用了,这一篇主要写 mybat...阅读全文

Segmentfault 2019-09-30 20:03:33 范儿

Kotlin协程教程(3):操控协程

在之前的文章中,已经讲了如何启动协程、协程的作用域是如何组织和工作的以及各种协程构造器(builder)的特性。 本篇将讲解对协程的各种操作,包括挂起、取消、超时、切换上下文等。 挂起 fun main() { runBlocking(Dispatchers.Default) { for (i in 0 .. 10) { println("aaaaa ${Thread.currentThread().name}") delay(1000) // 这是一个挂起函数 println("bbbbb $...阅读全文

Segmentfault 2019-08-29 21:03:33 好奇码农君kross

Kotlin协程教程(2):协程作用域与各种builder们

作用域与上下文 协程作用域本质是一个接口,既然是一个接口,那么它就可以被某个类去实现(implement),实现它的那个类,也就具备了一些能力。 class MyClass: CoroutineScope { // MyClass就具备了CoroutineScope的一些能力 } 那么它具备了哪些能力呢? 当然是启动协程的能力和停止协程的能力。除了runBlocking有一些特殊外,launch和async其实都是CoroutineScope的扩展方法,它们两个都必须通过作用域才能调用。 比如我...阅读全文

Segmentfault 2019-08-29 21:03:33 好奇码农君kross