Gradle Cheat Sheet (2): Groovy Closures and Objects

  Groovy可以通过Closure(闭包)来定义函数,闭包有两个特点:闭包可以像数值和字符串类型那样被赋给变量,也可以访问其作用域外的变量。 1. 闭包的声明和调用   使用def 声明闭包,注意这里和声明函数相比多了等号= : def foo = "One million dollars" def myClosure = { println "Hello fro…
Read more

Gradle Cheat Sheet (1): Groovy Fundamentals

  本系列整理自Udacity上Gradle for Android and Java课程(国内需访问中文版用Gradle构建Android和Java),旨在提供一份快速参考手册,以便查用。 0. Gradle与Groovy   Gradle编译脚本是基于Groovy编写的。Groovy是一个运行于JVM的脚本语言,支持DSL(Domain Specific Languages),具有很高的可读性…
Read more

处理View滑动冲突的一种方法

  当界面中内外两层View都可以滑动时,就会产生滑动冲突。比如一个列表型的ViewGroup里面盛放了若干个View,ViewGroup可以垂直滚动,而里面的View又支持水平滑动的手势,当用户在ViewGroup和View的重叠区域滑动手指时,就会产生滑动冲突——无法判断当前滑动操作应当由ViewGroup还是View来进行处理。本文通过一个简单的例子,说明滑动冲突的一种处理方法。 1. 构造…
Read more

通过直接继承View来实现自定义View的方法简介

  在设计自定义View时,可以选择直接继承View、直接继承ViewGroup、继承特定View、继承特定ViewGroup等方式。本文通过实现一个在屏幕上绘制矩形的自定义View,介绍通过继承View来实现自定义View的方法。 1. 创建继承View的自定义View   首先创建BlockView直接继承自View: public class BlockView extends View {…
Read more

在Toolbar中放置Spinner

  在展示列表时,可以通过在Toolbar中放置Spinner的形式,提供对列表进行过滤和分类的功能。本文在RecyclerView使用方法举例(2)的基础上,为Toolbar添加一个用于选择电影排序方法的Spinner,如图1所示。 0. 关于排序字符串的处理   之前在MovieService.java中定义了三种排序方式:按照流行度降序、按照投票平均分降序、按照投票量降序,如下所示: Str…
Read more

C#中字符串的编解码和乱码问题

  最近在C#使用StringBuilder处理调用dll获得的字符串时,中文出现乱码,如原字符串为“hello 你好”,在StringBuilder获取后变成“hello 浣犲ソ”。使用的调用为: [DllImport("user32")] public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg Msg, int…
Read more

自定义SearchView的搜索提示

  SearchView除了提供输入和提交搜索的界面,还能够根据输入显示对应的搜索提示。本文以搜索历史记录为例,介绍自定义Android搜索提示的方法,如图1所示。 1. SearchRecentSuggestionsProvider   首先要创建自己的SearchRecentSuggestionsProvider,用于保存和查询搜索记录。 1.1 创建SearchRecentSuggestio…
Read more