我认为编程思想是最重要的,语言是其次。所以,我可以用 Kotlin 来替代平时通过 Java 实现的代码。 光说不练,假把式。...,其实这一步是有意为之,我特地为了测试在 kotlin 中获取自定义属性弄了这么一处。...TagView 进行测试了,我们可以在布局文件 activity_main.xml 中添加代码。...它的子 View 都是 TextView 然后背景在 xml 中用统一的 shape 来代替,所以我们可以实现圆角矩形的式样。...color = mTagBackgroundColor } } 最后的测试 现在我们就可以用编码好的 Tag 代替之前的 TextView 来进行测试,把它们放进 TagView 中 activity_main.xml
---- 单元测试 Unit test 在本地执行的单元测试,不需要运行在物理设备或模拟器上,可以测试一些与Android框架无关的代码。...new test… 选择需要进行测试的方法,在setUp中创建类。...} } 运行测试可以在虚拟机或物理设备上看到上述的操作,模拟键盘输入时,需要注意因为输入法语言可能带来的不一致。...重复上述过程,模拟用户在多activity之间的操作。 验证结果, ViewAssertions的方法如match()验证控件中结果是否正确。...利用Espresso Intents进行测试 用于截断activity或service发出的intent,验证其传递的内容是否正确。
安卓编程初学者手册 零、前言 一、安卓和 Kotlin 入门 二、Kotlin、XML 和用户界面设计器 三、探索 AndroidStudio 和项目结构 四、布局和材质设计入门 五、卡片视图和滚动视图的漂亮布局...六、安卓的生命周期 七、Kotlin 变量、运算符和表达式 八、Kotlin 决策和循环 九、Kotlin 函数 十、面向对象编程 十一、Kotlin 的继承 十二、将我们的 Kotlin 连接到用户界面和可空性...库 六、回收器视图 七、安卓权限和谷歌地图 八、服务、工作管理器和通知 九、JUnit、Mockito 和 Espresso 的单元测试和集成测试 十、安卓架构组件 十一、持久化数据 十二、ButterKnife...十六、集合和枚举 十七、操作位图和编码Snake类 十八、设计模式介绍,以及其他 十九、使用观察者模式监听,多点触摸,构建粒子系统 二十、更多模式,滚动背景,建造玩家之船 二十一、完成滚动射击游戏 二十二...二、用户界面设计 三、用户界面开发 四、设备开发 五、素材和资源 六、模板和插件 七、语言支持 八、测试和分析 九、打包和发布 安卓取证教程 一、安卓和移动取证 二、安卓硬件平台 三、安卓软件开发工具包和安卓调试桥
NO.3 《疯狂Kotlin讲义》 ? 本书尤其适合从Java转Kotlin的读者,对于没有Java功底的读者,可忽略“对比”部分,直接学习本书也可掌握Kotlin编程。...第一部分讲解如何开始使用 Kotlin 现有的库和API,包括基本语法、扩展函数和扩展属性、数据类和伴生对象、lambda 表达式,以及数据类型系统(着重讲解了可空性和集合的概念)。...演讲也揭示了在生产中使用 Kotlin 的意义,以及在工作中采用新兴语言将面临的挑战。...如 Kotlin 中的面向对象以及像 lambda 表达式的功能编程。...v=_DaZQ374Chc 这个讲座从 2016 年开始,它介绍了现实世界中的编程语言功能,你将了解到 Kotlin 是如何适应 Android 工作流程中存在的工具。
长久以来,Android视图都是用 XML 来完成布局的。这些 XML可重用性比较差。同时在运行的时候,XML 要转换成 Java 表述,这在一定程度上占用了 CPU 和耗费了电量。...中,设置android.support.v7.widget.Toolbar的背景色为 android:background="?...在构建脚本中添加kotlin-gradle-plugin依赖,使用 Kotlin 对应的版本号。...Screenshot_1500669255.png 本章小结 Android 中经常出现的空引用、API的冗余样板式代码等都是是驱动我们转向 Kotlin 语言的动力。...另外,Kotlin 的 Android 视图 DSL Anko帮我们从繁杂的 XML 视图配置文件中解放出来。
UI 界面 与 数据模型 , 在各个平台都有该技术的应用 , 如 Android , Angular , React 等框架中都使用了 数据绑定技术 ; 数据绑定 DataBinding 将 数据模型...组件 中 ; 使用 DataBinding 可以在 Android 的布局文件 中 , 承担部分 Activity 组件的工作 , 减少传统方式用法的 耦合度 ; 如 : 想要将 数据设置到 TextView...中开发代码进行设置 ; 三、Android 中的 DataBinding 代码示例 ---- 1、build.gradle 构建脚本 - 启动数据绑定 在 Module 内的 build.gradle...:espresso-core:3.4.0' } 在 build.gradle 构建脚本 中 , 设置 dataBinding { enabled = true } 后 , 第一时间点击右上角的 Sync...} 获取该数据类型对象的成员 , 并设置到布局组件中 ; <TextView android:id="@+id/textView2" android
前言 最近小编在探索端对端测试相关的topic,在Android端的自动化测试上,可供我们选择的库并不是很多,而其中小编使用最多的两个库分别是Espresso和UIAutomator。...尽管两者都可以达成我们的最终目的,但实现的过程还是有所区别的: Espresso是用于Android测试的白盒解决方案,以沙盒化的形式测试当前应用程序。...Espresso 在Espresso中,我们一般会处理三种类型的对象:匹配器、ViewAction和ViewAssertions。...在项目成熟度发展到某一节点时,维护功能集合会变得很困难,因此我们必须对其进行整理集合,使其独立于我们正在测试的程序。当前Github上已有Android Test KTX可供大家使用。...我们如果要自行更新或增加Kotlin DSL库的内容,可以将UIAutomator和Espresso相同的操作通过Espresso实现,并集合在库中。
对Acitivity的测试 对于Activity,我们大致有两种测试需求: 1、在Activity正常启动后,查看界面布局是否正确,包括View的点击事件等是否正确。...2、需要在Activity启动前完成各种数据的部署,然后查看Activity的效果。 对于这两种需求,笔者分别做了两个示例解说: 1、检测一个布局中的button和TextView是否正确。...两个测试方法逻辑如下: textViewTest(): 在Activity中查找id为tv_simple_view的View,检查它的text是否为“111”。...然后执行点击事件,点击事件的逻辑是在Activity的OnCreate中设置的,是把TextView的text设置为777。...在执行完点击事件后,测试方法中继续测试TextView的text是否为“777”。
博客资源 上一篇博客 【Android 组件化】使用 Gradle 实现组件化 ( Gradle 变量定义与使用 ) 中 , 在顶层的 build.gradle 中定义了相关参数变量 ; 在顶层的 build.gradle...中定义全局的变量 , 用于统一管理各个 Module 的编译相关版本号 ; 全局变量可以定义在 ext 扩展 中 , 也可以定义在 gradle.properties 属性 中 ; 组件化的本质就是可以实时切换依赖库...资源配置选项 , 可以配置 java , manifest , res , assets , 等目录 ; Android Studio 中 默认的 Java 代码的路径是 Component\app\...\res , 默认的 Assets 资源路径是 Component\app\src\main\assets 在 Library Module 中 , 一般不会配置 Launcher Activity ,...因此在 组件模式 下 , 需要指定一个新的 AndroidManifest.xml 清单文件 ; 这里在 main 目录下创建 component 目录 , 组件化 相关文件 , 都放在该目录中 ;
在本次教程中,我们将使用ZXing库让我们的app实现条形码和二维码的扫描。...文件中,添加下面的代码: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.github.marktony.espresso...代码文件导入完成后,我们还需要导入下面的资源文件: res/layout/activity_scan - CaptureActivity的布局文件. res/values/zxing_ids.xml -...注意: 如果你的app的target api level是23或者更高, 不要忘记适配运行时权限因为我们的app需要用到相机。 测试 现在我们可以测试app是否成功运行了。...在你自己的app中,你可能需要对扫描的结果进行进一步的处理,例如加载URL或者是从第三方数据源中获取数据等等。 你可以在访问Espresso项目主页下载全部源代码。
如果希望整个test流程都执行完的话,那么可以使用continue的Flag: $ gradlew test --continue 我们也可以通过在一个正确的路径保存一个Test的类来在某个版本中执行Test...Robolectric 我们可以使用Robolectric来编写使用Android SDK和资源的测试。而这些测试任务会跑在一个JVM中。...不同的是,我们写的测试单元可以使用Android的类和资源。...Functional tests 功能测试用来测试App中的一些组件是否与预期一样进行工作的。...例如,这个测试类检查是否这个TextView中的Text是否在MainActivity中: @RunWith(AndroidJUnit4.class) @SmallTest public class TestingEspressoMainActivityTest
哈哈,实际上你完全可以不用这么痛苦,用 Kotlin 替代 Java 开发你的程序,无论是 Android 还是 Server,你都能像之前写 Java 一样思考,同时又能享受到新一代编程语言的特性,说到这里你是不是开始心动了呢...Kotlin 正是充分利用了这一点,它自己的标准库只是基于 Java 的语言框架做了许多扩展,你在Kotlin 当中使用的集合框架仍然跟你在Java当中一样。...这表示编译器不再强制 savedInstanceState 是否可 null,开发者在覆写时可以自己决定是否可 null。...不过用 Kotlin 的 Android 扩展插件,我们就可以这样: 先上布局文件: main.xml ? 在 Activity 中: ?...main.xml 中的 id 为 start 的按钮和 id 为 textView 的 TextView。
drawable/:位图文件(.png、.9.png、.jpg、.gif)或编译为以下可绘制对象资源子类型的 XML 文件: 位图文件、九宫格(可调整大小的位图)、状态列表、形状、动画可绘制对象、其他可绘制对象...其他 res/ 子目录中的 XML 资源文件会根据 XML 文件名定义单个资源,而 values/ 目录中的文件可描述多个资源。...各种 XML 配置文件(如可搜索配置)都必须保存在此处。 font/:带有扩展名的字体文件(如 .ttf、.otf 或 .ttc),或包含 元素的 XML 文件。...[1240] shape介绍 shape又称为“形状可绘制对象”。为了简便,以下都称作shape或者“shape文件”。 shape是一种在 XML 文件中定义的通用形状。...[1240] 如果想要渐变色,再增加gradient的设置就好。 代码中使用资源 在java代码中使用资源,比如在activity中设置背景。
中配置 在AndroidManifest.xml中配置 找到你所指定的activity中加上android:screenOrientation属性,它有以下几个参数: unspecified–默认值,由系统来判断显示方向...Activity下面的那个Activity的方向一致(在Activity堆栈中的) sensor–有物理的感应器来决定。...1080x1920就要用xxhdpi的资源 比如华为M3平板 就还是建议做xhdpi的图 分辨率 DP 密度 密度DPI 1920x1200 853x533 2.25 360 用原图上切图 在853x533...( WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 方法二:在AndroidManifest.xml中,在所要设置的activity中设置以下属性就行了...系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。
用法 在不同情况下有很多可绘制的类型,设置按钮的状态行为,创建可伸缩的按钮背景和创建复合可绘制图层。...这用于创建一个复杂的形状,然后可以作为布局或视图的背景附加在屏幕上。例如,可以使用可绘制的形状来更改按钮背景的形状,边框和渐变。 一个形状只是一个属性的集合,被合并来描述一个背景。...Drawable List 状态集合 StateListDrawable是一个在XML中定义的可绘制对象,根据对象的状态,使用多个不同的图像来表示相同的图形。...运行时Drawables 我们可以通过访问具有可绘制应用的视图的背景,在我们的Java代码的运行时访问drawable。...② TransitionDrawable - 可绘制的对象,可以在两个drawable资源之间交叉淡入淡出。用于两个drawable之间的动画。
Java作为一门最受欢迎的编程语言,有其无法比拟的优越性,但同时在如今日益推崇的函数式编程思想上,Java的脚步却显得没有那么与时俱进了,直到最近刚刚推出的Java8才开始支持lambda函数式编程。...而Kotlin作为一门函数式编程语言,在这方面是走在了前列的。 当然每门语言都有一个从排斥,到接触,到喜爱或者放弃的过程。...我对于Kotlin一开始也是没有多大的兴趣,对函数式编程也是有一定排斥的,总感觉代码可读性和可维护性似乎大大下降,事实上只是对这中编程思想没有一个很好的转变而已。...接下来就可以愉快的使用Kotlin玩耍啦,此处我们以一个列表页面来演示。 1. 首先,在activity_main.xml中,我们添加一个列表,id命名为listView: <?...在xml中声明好的id可以直接在Activity中使用,如上面的listView,无需在代码中再次去声明和定义,Kotlin会自动帮你映射。
它可以扩展函数:这意味着,就算我们没有权限去访问这个类中的代码,我们也可以扩展这个类的更多的特性。 它是函数式的:Kotlin是基于面向对象的语言。...但是就如其他很多现代的语言那样,它使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。其中一个很棒的特性就是Collections的处理方式。我稍后会进行介绍。...它是高度互操作性的:你可以继续使用所有用Java写的代码和库,甚至可以在一个项目中使用Kotlin和Java两种语言混合编程。一行Java一行Kotlin,别提有多风骚了。 详细实例 1....我们可以直接这样写 user.text="我是一个TextView" user就是我们布局文件声明的id,.text就相当于setText(),在Kotlin语言中,我们看不到了像Java中的set/...在重写期间没有发生大的架构更改,因此在重写之前和之后测试编译时间应该很好地了解Java和Kotlin之间的构建时间的差异。我写了一个shell来重复执行gradle。所有测试连续进行10次。
前言 Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin,作为跟着Google玩儿Android的人,我们必须尽快了解和使用Kotlin语言。...本文将详细介绍Android动画入门之kotlin的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。...Android之前的补间动画机制其实还算是比较健全的,在android.view.animation包下面有好多的类可以供我们操作,来完成一系列的动画效果,比如说对View进行移动、缩放、旋转和淡入淡出...这里我举一个简单的例子,比如说我们有一个自定义的View,在这个View当中有一个Point对象用于管理坐标,然后在onDraw()方法当中就是根据这个Point对象的坐标值来进行绘制的。...AnimotionProxy:再3.0以下使用View的属性动画的辅助类 基本使用 这是一个让textview点击向下移动的demo 效果展示 ? xml: <?
ActivityAwesomeBinding.java) 布局文件中每一个带有 id 的视图都会在绑定对象中有一个对应的属性,这个属性将拥有正确的类型,并且空安全 视图绑定完美支持 Java 和 Kotlin...这意味着您的修改会立即反映在绑定对象中,而无须等待或者重新构建工程。 Android Studio 被优化为可以在您编辑过 XML 布局文件后立即更新绑定对象。...如果想要了解更多关于两种语言的互操作问题,请查阅文档: 在 Kotlin 中调用 Java。...关于视图绑定,一个最常见的问题是: “我是否应该用视图绑定替代 Kotlin 合成方法或 ButterKnife ?...虽然 ButterKnife 会在运行时校验可空与不可空,但是编译器并不会检查您匹配的视图是否在存在于您的布局之中。 为了安全性与更简洁代码,我们推荐尝试使用视图绑定。
领取专属 10元无门槛券
手把手带您无忧上云