
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
文章摘要: ViewModel中的"Model"并非单纯指数据模型,而是代表一种抽象表示。在软件架构中,Model层包含业务数据、规则和逻辑,而ViewModel特指为View准备的UI状态模型。它不同于业务Model,专门处理UI相关数据如加载状态、错误信息等。Android采用ViewModel而非Controller/Presenter,是因为它不直接操作UI,仅提供观察
音频基础知识声音是什么?记得初中学物理的时候我们就学过声音了,声音是由振动产生的,声音在空气中振动形成振动波传到我们的耳朵,我们的耳膜接收到了振动波,所以能感受到声音。声音在空气中的振动波我们看不见,可以把它比作水中的水波,水波是能看见的,如下:我们可以想一想水波产生的样子,然后再把水波想像为无形的声音振动波。振动幅度和振动频率声音由振动幅度和振动频率组成,振幅即上下振动的幅度,当然这个我们也看不

今天下载了一个Android官方Demo:https://codeload.github.com/googlecodelabs/android-lifecycles/zip/master用AndroidStudio打开此项目,没有报任何错误,但是运行的时候编译就报错了,如下:Execution failed for task ':app:compileDebugJavaWithJavac'.>
官方插件(如 org.jetbrains.kotlin.android)社区插件(如 com.github.spotbugs、io.spring.dependency-management)gradle的官方插件通常不会托管到或google()。包含几乎所有 非 google() 系的 Java 库(当然也包含kotlin)。仅包含 Google 官方发布的库。

方法的调用封装到了方法里面,这样重复的代码就只写一次,不用每次都写了。这里,对于 “确定” 和 “取消” 按钮也是很常用的,而且不管你是点了确定还是取消,点击之后对话框都会自动取消,所以上面代码中的。从对比上来看,长得差不多,带接收者就是把括号中的参数移到括号前面,并加了一个 “.” ,带。参数大多数情况下都是用不到的,但是每次都要写也很麻烦,而且函数名。这样做是可以的,但是真的很麻烦,能不能像。

这篇文章主要介绍了在Android平台上编译支持文字水印功能的FFmpeg的过程。内容包括: 需求分析:需要在Android设备上采集摄像头YUV数据,通过FFmpeg添加水印并编码为H264格式 依赖关系:FFmpeg的drawtext功能需要FreeType和HarfBuzz支持,分别负责字体渲染和文字排版 软件下载: 下载Linux版NDK r27d 下载FreeType 2.14.1 下载
判断一个字数字是否在某个范围里面,自己写也没几行代码,但是有更方便的为什么不用呢?Kotlin提供了这样的函数,比如 IntRange 里面的这个函数:fun contains(value: Int): Boolean = first <= value && value <= last语法糖如下,跟for循环差不多:fun main() {val x = 6val y
示例代码如下:fun main() {val map = sortedMapOf(1 to 2, 3 to 1, 2 to 3)println(map) // 输出:{1=2, 2=3, 3=1}println(map.javaClass.simpleName) // 输出:TreeMap}从上面例子可以看到,有序Map的实现类是TreeMap,它默认是对key进行升序排序。TreeMap的构造方
Gzip压缩和解压的实现Gzip压缩使用起来很简单,以前我也只是在客户端使用,服务器端不用管,所以我只用过GZIPInputStream来读取,用起来也没有问题。后来OkHttp开始流行,后来听说OkHttp会自动处理Gzip压缩的数据,不需要我们使用GZIPInputStream来处理,于是我想验证一下是否真的是这样的,这时我就需要写个服务器端Demo了,发现行不通,会报错,找不到原因,老办法.
这里使用的是Kotlin语言来讲解Lambda,和Java中的Lambda是一样的,之前看Java Lambda的书也有讲到这个点,原理是一样的,这里记录一下。在做Android开发的时候,假设有三个TextView(显示文本的控件),需要设置同一个点击事件,Kotlin实现代码如下:val onClickListener = { _: View -> 。。。 }tv_1.setOnC...







