我认为编程思想是最重要的,语言是其次。所以,我可以用 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类 十八、设计模式介绍,以及其他 十九、使用观察者模式监听,多点触摸,构建粒子系统 二十、更多模式,滚动背景,建造玩家之船 二十一、完成滚动射击游戏 二十二...二、用户界面设计 三、用户界面开发 四、设备开发 五、素材和资源 六、模板和插件 七、语言支持 八、测试和分析 九、打包和发布 安卓取证教程 一、安卓和移动取证 二、安卓硬件平台 三、安卓软件开发工具包和安卓调试桥
manifests 表示配置文件,在Android项目中这个很重要、你的四大组件和这个文件都有关系,里面AndroidManifest.xml中,可以设置你的App名称、图标、网络配置、权限等。...比如我现在从网上抄了一个Groovy的配置,我想把它放进Kotlin的配置文件中,但是我两个语言都不懂呢?...它允许开发者在不预先安装 Gradle 的情况下,自动下载并使用正确的 Gradle 版本来构建项目,确保团队协作和持续集成(CI)环境中的构建一致性。...,app模块中的代码中MainActivity里面就是常规的Activity,而且res目录下多了一个layout目录,里面就是activity_main.xml文件,配置区域的区别从表面上看就是build.gradle...关键插件: android.application:标记此模块为可运行的 Android 应用。 kotlin.android:启用 Kotlin 语言支持。
NO.3 《疯狂Kotlin讲义》 ? 本书尤其适合从Java转Kotlin的读者,对于没有Java功底的读者,可忽略“对比”部分,直接学习本书也可掌握Kotlin编程。...第一部分讲解如何开始使用 Kotlin 现有的库和API,包括基本语法、扩展函数和扩展属性、数据类和伴生对象、lambda 表达式,以及数据类型系统(着重讲解了可空性和集合的概念)。...演讲也揭示了在生产中使用 Kotlin 的意义,以及在工作中采用新兴语言将面临的挑战。...如 Kotlin 中的面向对象以及像 lambda 表达式的功能编程。...v=_DaZQ374Chc 这个讲座从 2016 年开始,它介绍了现实世界中的编程语言功能,你将了解到 Kotlin 是如何适应 Android 工作流程中存在的工具。
一、项目背景: 介绍MDC(Android View) Carousel UI Material Design Components (MDC) 是构建现代 Android 应用的 UI 组件库,遵循...Jetpack Compose 完全基于声明式 UI编写代码,不需要写XML,UI 的更新和状态绑定,只需改变状态,Compose 会自动重新绘制界面。...它采用声明式编程的方式,你只需要专注于描述“界面应该是什么样子”,而不需要手动更新视图。UI 会根据状态的变化自动重新绘制。开发界面很直观,只需要改变状态,Compose 会自动处理 UI 更新。...4.3 布局管理:XML VS Kotlin 代码 MDC:XML 文件布局 MDC 使用的是传统的 XML 文件布局,像 LinearLayout、RelativeLayout 等都是通过 XML 定义的...MDC:可定制但代码复杂 MDC 提供了一整套 Material Design 的 UI 组件,你可以通过 XML 或代码来定制这些组件。
长久以来,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实现,并集合在库中。
在本次教程中,我们将使用ZXing库让我们的app实现条形码和二维码的扫描。...文件中,添加下面的代码: 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项目主页下载全部源代码。
博客资源 上一篇博客 【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 目录 , 组件化 相关文件 , 都放在该目录中 ;
如果希望整个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
run { // 操作UI textView.text = "Updated" } } } // 在Activity中清理消息...优化阶段分析 冷启动耗时主要分布在: Application初始化:第三方库初始化 首帧渲染:主题背景绘制、布局复杂度 优化代码实践 1....中配置 <provider android:name="androidx.startup.InitializationProvider" android:authorities="${...避免过度绘制 开启调试工具:开发者选项 → 显示过度绘制 优化策略: 移除不必要的背景 使用canvas.clipRect()限制绘制区域 如何优化APK体积?...APK组成分析 代码:Java/Kotlin编译后的DEX 资源:图片、XML、字体等 本地库:armeabi-v7a/arm64-v8a等SO文件 分阶段优化方案 1.
哈哈,实际上你完全可以不用这么痛苦,用 Kotlin 替代 Java 开发你的程序,无论是 Android 还是 Server,你都能像之前写 Java 一样思考,同时又能享受到新一代编程语言的特性,说到这里你是不是开始心动了呢...Kotlin 正是充分利用了这一点,它自己的标准库只是基于 Java 的语言框架做了许多扩展,你在Kotlin 当中使用的集合框架仍然跟你在Java当中一样。...这表示编译器不再强制 savedInstanceState 是否可 null,开发者在覆写时可以自己决定是否可 null。...不过用 Kotlin 的 Android 扩展插件,我们就可以这样: 先上布局文件: main.xml ? 在 Activity 中: ?...main.xml 中的 id 为 start 的按钮和 id 为 textView 的 TextView。
text="Click Me" android:onClick="onButtonClick"/> 在Activity中实现点击事件: kotlin 复制代码 fun onButtonClick(view...它支持加载和显示各种格式的图片资源。 属性 android:src: 设置显示的图片资源。 android:scaleType: 设置图片的缩放类型(如适应、裁剪、填充等)。...ProgressBar ProgressBar 是一个进度条控件,用于显示任务的进度。 属性 android:indeterminate: 设置进度条是否为不确定模式(即加载中,不显示具体进度)。...创建自定义控件的基本步骤 继承已有控件: 创建一个类,继承自 View 或 ViewGroup。 重写绘制方法: 在 onDraw 方法中定义控件的绘制逻辑。...处理事件: 在 onTouchEvent 方法中处理用户的交互事件。 添加自定义属性: 在 res/values 文件夹中定义自定义属性,并在控件中解析这些属性。
中配置 在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/:位图文件(.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中设置背景。
一:代码分析 1:Android界面开发方式 (1)Java+View(传统视图系统) 这是 Android 早期的开发方式,用 Java 或 Kotlin 代码配合 XML 布局文件 来构建界面。...(简单了解即可) 分离式开发: 界面布局写在 XML 文件里(如 activity_main.xml),用各种控件(TextView、Button 等)拼出界面。...res下的工程资源在java代码下的映射 访问布局R.layout.activity_main 类比 访问图片R.mipmap-xhdpi.ic_launcher 6:沉浸式布局 (...二:View和ViewGroup比较 在安卓中,所有的UI控件或者布局,都是View的子类。我们可以使用Java或者xml的形式来引用它们。...); 在一个Activity页面中的布局,一般都是如下图的结构,一个页面的根布局ViewGroup下面(如 ConstraintLayout 作为根 ),还有其他的View,或者其他的下级ViewGroup
5.3 图片资源文件(drawable/ 和 mipmap/) res/drawable/ 目录下放的是位图文件(.png、.9.png、.jpg、.gif)或编译为可绘制对象资源子类型的 XML 文件...说明:{} 中的内容为可选;类型 可以是可绘制对象资源类型,也可以是控件类型(具体见附录UI 控件缩写表);最后可加后缀 _small 表示小图,_big 表示大图。...同时,这些定义是跟一些环境关联起来的,如 button 或者 comment,应该放到一个按钮风格中,而不是在 colors.xml 文件中。...9.2 Espresso 测试 每个 Espresso 测试通常是针对 Activity,所以其测试名就是其被测的 Activity 的名称加 Test,比如 SignInActivityTest。...减少很多模板化的代码,更易于测试,降低耦合,创建可复用可互换的模块; 项目引入 RxAndroid 响应式编程,可以极大的减少逻辑代码; 通过引入事件总线,如:EventBus、AndroidEventBus