CoordinatorLayout及自定义Behavior总结
一. CoordinatorLayoutCoordinatorLayout继承自viewgroup,但是使用类似于framLayout,有层次结构,后面的布局会覆盖在前面的布局之上。它可以监听子控件的各种事件,协调child之间的联动。CoordinatorLayout主要依靠Behavior来进行协调的。在CoordinatorLayout布局内部,每个child都必须带一个Behavior(其实不携带也可以,不携带就不能被协调),CoordinatorLayout就会根据每个child所携带的Behavior信息进行协调联动。 也就是说CoordinatorLayout是用来协调其子view们之间动作的一个父view,而Behavior就是用来给CoordinatorLayout的子view们实现协调交互的。 二. AppBarLayoutAppBarLayout 继承自LinearLayout,子控件默认为竖直方向排列显示。给AppBarLayout子View配置一个Behavior。而正是这个 Behavior,使得它能够响应依赖对象的位置变化或者是...
数据结构基础总结
一.数据结构的概念数据结构包含数据和结构,通俗一点就是将数据按照一定的结构组合起来,不同的组合方式会有不同的效率和不同的使用场景,不仅需要考虑如何存储数据,还考虑支持访问和处理数据的操作,这就是数据结构的概念。数据结构是计算机存储和组织数据的方式。 二.数据结构的分类 1.按照数据的逻辑结构分逻辑结构划分是指按照数据对象中数据元素之间的相互关系进行划分。 (1.)集合结构集合中的元素除了同属于一个集合外他们之间没有其他的关系。 如公共汽车上的所有乘客,存放在仓库中的产品。集合中的元素无前驱,无后继。 (2.)线性结构数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。 常用的线性结构有:线性表,栈,队列,双队列,数组,串。元素除首尾元素外都有一个前驱,一个后继。线性结构的特点: 集合中必存在唯一的一个”第一个元素”; 集合中必存在唯一的一个”最后的元素”; 除最后元素之外,其它数据元素均有唯一的”后继”; 除第一元素之外,其它数据元素均有唯一的”前驱”; (3.)树形结构树形结构中的数据元素是一对多的层级关系。常见的树形结构:...
Java-高级特性之反射和注解
一.Java反射机制。1.反射机制的定义。Java反射机制是指在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;对于任何一个对象,都能够调用它的任何一个方法和属性;这样动态获取新的以及动态调用对象方法的功能就叫做反射。 2.反射机制的作用。 在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时判断任意一个类所具有的成员变量和方法; 在运行时调用任意一个对象的方法; 3.获取字节码。1. 获取字节码 方式 解析 Class clazz1 = Class.forName(“全限定类名”); 通过Class类中的静态方法forName,直接获取到一个类的字节码文件对象,此时该类还是源文件阶段,并没有变为字节码文件。 Class clazz2 = Person.class; 当类被加载成.class文件时,此时Person类变成了.class,在获取该字节码文件对象,也就是获取自己, 该类处于字节码阶段。 Class clazz3 =...
Retrofit上传文件及下载文件
一.Retrofit文件上传1.文件上传注意点1.文件上传一般用post请求。2.文件上传的API接口中不能带@FormUrlEncoded参数。3.一般要携带@Multipart(上传文件的标志)。 2.接口示例123@Multipart@POST("UploadServlet")Call<String> uploadFile(@PartMap Map<String, RequestBody> params); 或者: 12345//description为描述信息可以不填。@Multipart@POST("UploadServlet")Call<ResponseBody> upload(@Part("description") RequestBody description, @Part MultipartBody.Part file); 3.单文件上传1234567891011File file = new...
Android虚拟机之Dalvik和ART
一.Java平台的虚拟机Jvm1.Jvm的作用Java语言的一个非常重要的特点就是与平台的无关性(跨平台性),经常会听到一句关于java特性的话:”一次编译到处执行”。由于机器只能识别机器码,所以需要通过Java 编译器将 .java 文件转换成 .class文件,也就是字节码文件,最后将字节码提供给 JVM,由 JVM 将它转换成机器码。 2.Jvm分析Jvm相关知识体系过于庞大,有兴趣可以看本人之前的文章:JAVA JVM详解 二.Dalvik虚拟机1.为什么Android平台不使用标准的Jvm虚拟机?由于 Androd 运行在移动设备上,内存以及电量等诸多方面跟一般的 PC 设备都有本质的区别 ,一般的 JVM 没法满足移动设备的要求,所以Android 团队一开始就打造了一个符合移动设备的可以执行 Java 代码的虚拟机,这就是说的 Dalvik 虚拟机 。 2....
编程算法基础总结
一.算法的优劣判断算法 (Algorithm),是对特定问题求解步骤的一种描述。解决一个问题往往有不止一种方法,算法也是如此。那么解决特定问题的多个算法之间如何衡量它们的优劣呢?好的程序设计无外乎两点,”快”和”省”。”快”指程序执行速度快,高效,”省”指占用更小的内存空间。这两点其实就对应**”时间复杂度”和“空间复杂度”**。通过这两点就能衡量多个算法之间的优劣。 1.时间复杂度一个算法执行所花费的时间,需上机运行测试才能知道。但我们不可能对每个算法都上机测试,所以只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。因为一个算法花费的时间与算法中的基本操作语句的执行次数成正比例,所以哪个算法中语句执行次数多,它花费时间就多。**一个算法中的语句执行次数称为语句频度,记为T(n)。n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。为了知道变化时呈现什么规律,所以引入时间复杂度**。一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n) / f(n)...
什么是子网?
...