ConstraintLayout中Chains和Guideline的使用 前面介绍了如何使用ConstraintLayout,在用ConstraintLayout的时候千万要运行一下,在手机上看看结果,因为有时候在AS上面看是没问题的,但是运行到手机上面还是会又不一样的效果的。 然后本文将来介绍ConstraintLayout中的Chain也就是链条,还有ConstraintLayout辅助线Guideline的使用。Chains链条是什么?简单说就是...
Android ConstraintLayout的使用 ConstraintLayout是谷歌推出的一个新布局,字面意思是约束布局,距离发布已经有一段时间了,下面会有一个复杂布局的代码对比。 对于ConstraintLayout,有篇文章写了关于它的性能优势:解析ConstraintLayout的性能优势我们知道,当我们的布局越来越复杂的时候,所使用的嵌套就越来多,性能自然而然的就会有所下降,而ConstraintLayout恰恰就是为了...
Kotlin学习(二十): Kotlin实现流的读取的方案 在Java对流的读取是下面的那样,当前不要忘记流的关闭close。// java 代码void someFunc(InputStream in, OutputStream out) throws IOException { int read; while ((read = in.read()) != -1) { out.write(read); }}
Kotlin实战(三): 动手撸个玩Android客户端 玩Android鸿洋大神的玩Android网站。 本网站每天新增20~30篇优质文章,并加入到现有分类中,力求整理出一份优质而又详尽的知识体系,闲暇时间不妨上来学习下知识; 除此以外,并为大家提供平时开发过程中常用的工具以及常用的网址导航。可以在 https://github.com/hongyangAndroid/xueandroid项目中以issue的形式提出任何好的建议。接口由玩Andr
Kotlin学习(十九): 属性自动生成方法所引发问题 在Kotlin中创建一个属性,如果是val,那么会自动生成getter方法,如果是var,那么会自动生成getter和setter方法。class MethodFoo() { var a: Int = 1 var b: Int = 2}生成的class内容public final class MethodFoo { private int a = 1; private
Kotlin学习(十八): 委托模式(Delegate)和委托属性(Delegate Properties) 委托模式已经被证明是实现继承的一个很好的替代方式,在扩展一个基类并且重写方法时,基类就必须依赖子类的实现,当不断地修改的时候,基类就会失去当初的性质,Kotlin中就将类默认为final,确保不会被修改。有一种模式是装饰器模式,本质就是创建一个新类,实现与基类一样的接口,并且将类的实现作为一个字段保存,这样就能在基类不被修改就能直接修改基类的实例。但是这样的缺点是会造成很多的样板代码。class D
Kotlin学习(十七): 运算符重载 在前面写了关于集合和范围的内容,里面包括了一点运算符重载的内容,在这里我们来详细了解运算符重载的知识,内容参考《Kotlin实战》(Kotlin in Action)。什么是运算符重载?简单来说,就是Kotlin通过调用自己代码中定义特定的函数名的函数(成员函数或者扩展函数),并且用operator修饰符标记,来实现特定的语言结构,例如如果你在一个类上面定义了一个特定函数命名plus的函数,那么按照
Kotlin学习(十五): 解构声明(Destructuring Declarations) Kotlin1.1.3发布,Kotlin 插件现在支持在编辑器的提示中显示推导的变量、函数和参数类型。默认情况下该功能是禁用的,可以在编辑器的设置中启用它。下面进入正文,有时候要获取一个对象的属性,会定义很多个变量,这样子就会很麻烦,而在Kotlin中有个很方便的用法,就是使用解构声明。创建变量在Java中创建多个变量Person person = new Person("person", 1);
Kotlin学习(十六): 关键字与操作符(Keywords and Operators) 本文同步更新于旺仔的个人博客,访问可能有点慢,多刷新几次。Kotlin中有一些常用的关键字和标识符,同时还有一些操作符和特殊符号,这些都是和Java有不一样的地方的,这里将他们介绍一下,方便记忆和回看。硬关键字(Hard Keywords)Kotlin中的硬关键字不能作为标识符package与Java一样,Kotlin的源文件同样以包声明开始的。package foo.barfun baz() {}
使用Xposed实现QQ/TIM自动确认电脑扫一扫登录 缘由不知道大家有没有用过QQ/TIM登录的时候使用扫描二维码登录的功能呢?也就是登录界面的右下角那里有个二维码的按钮点击之后就会出现二维码然后用手机QQ/TIM打开扫一扫界面,扫了之后,会弹出允许登录的界面然后我们需要点击允许登录TIM/QQ,电脑端就登录成功了。但是每次登录都要点击允许登录,我觉得好麻烦,所以就实现了自动点击功能,这篇文章就是来介绍如何使用Xposed来实现自动点击。实践首先我们先
使用Xposed去除微博国际版的启动广告 本文同步更新于旺仔的个人博客,访问可能有点慢,多刷新几次。前面有篇文章已经介绍了如何创建Xposed模块的文章了,这篇就让我们来实现一个简单的去除启动广告的功能吧。起因为什么要是要去掉微博国际版的开屏广告呢,因为广告烦人啊,而且我打开微博的时间也是偶尔才会打开的,每次一打开就能看到广告,所以就想把这个开屏广告给删掉,奇怪的是,打开一次后,再关掉再打开是没有广告的,要隔一段时候才会出现广告,这个原因会
探究Exported属性对startActivity的影响 本文同步更新于旺仔的个人博客,访问可能有点慢,多刷新几次。缘由这几天想做一个点击跳转到TIM的扫一扫的Activity的功能,代码是这样的,就是普通的跳转Intent intent = new Intent();intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);ComponentName component = new ComponentName("c
Xposed开发初体验 本篇文章具体是Xposed开发,如何安装Xposed需自行上网查找,本文同步更新于旺仔的个人博客,访问可能有点慢,多刷新几次。Xposed什么是Xposed呢? “Xposed是一个适用于Android的框架。基于这个框架开发的模块可以改变系统和app应用的行为,而不需要修改APK。这是一个很棒的特性,意味着Xposed模块可以不经过任何修改,安装在各种不同的ROM上。Xposed模块可以很容易
通过GitHub和Hexo来搭建自己的个人博客 搭建个人博客在我大学的时候建过一次,那时候是用新浪云和Wordpress搭建的,那时候新浪云服务是免费的,后来变收费,博客就没有了。之前便想着再弄个自己的博客出来,这几天就着手弄了起来。 看到很多人的个人博客是用github来当服务器,然后通过Hexo来搭建博客框架,那么新建个人博客也用这两个来搭建吧。本文同步更新于旺仔的个人博客,访问可能有点慢,多刷新几次。 GitHub主页创建仓库想必大家都
Kotlin常见问题和代码 高阶函数,又称算子(运算符)或泛函,包含多于一个箭头的函数,高阶函数是至少满足下列一个条件的函数:1.接受一个或多个函数作为输入,2.输出一个函数。 在无类型Lambda 演算,所有函数都是高阶的;在有类型Lambda 演算(大多数函数式编程语言都从中演化而来)中,高阶函数一般是那些函数型别包含多于一个箭头的函数。在函数式编程中,返回另一个函数的高阶函数被称为Curry化的函数。 在很
Kotlin学习(十四): 类型别名(Type aliases)和注解(Annotations) 高阶函数,又称算子(运算符)或泛函,包含多于一个箭头的函数,高阶函数是至少满足下列一个条件的函数:1.接受一个或多个函数作为输入,2.输出一个函数。 在无类型Lambda 演算,所有函数都是高阶的;在有类型Lambda 演算(大多数函数式编程语言都从中演化而来)中,高阶函数一般是那些函数型别包含多于一个箭头的函数。在函数式编程中,返回另一个函数的高阶函数被称为Curry化的函数。 在很
Kotlin学习(十三): 集合(Collections)和范围(Ranges) 高阶函数,又称算子(运算符)或泛函,包含多于一个箭头的函数,高阶函数是至少满足下列一个条件的函数:1.接受一个或多个函数作为输入,2.输出一个函数。 在无类型Lambda 演算,所有函数都是高阶的;在有类型Lambda 演算(大多数函数式编程语言都从中演化而来)中,高阶函数一般是那些函数型别包含多于一个箭头的函数。在函数式编程中,返回另一个函数的高阶函数被称为Curry化的函数。 在很
Kotlin学习(十二): 函数、高级函数和Lambda表达式 高阶函数,又称算子(运算符)或泛函,包含多于一个箭头的函数,高阶函数是至少满足下列一个条件的函数:1.接受一个或多个函数作为输入,2.输出一个函数。 在无类型Lambda 演算,所有函数都是高阶的;在有类型Lambda 演算(大多数函数式编程语言都从中演化而来)中,高阶函数一般是那些函数型别包含多于一个箭头的函数。在函数式编程中,返回另一个函数的高阶函数被称为Curry化的函数。 在很
Kotlin实战(二): 实现RecyclerView多种Item布局 前言RecyclerView出来很久了,可以说一出来就将ListView给比下去了,当然,Recyclerview有它的好,ListView的好,并不是说一定要用Recyclerview,最适用自己项目的才是最好的。在这里我们将用Kotlin来实现RecyclerView的多种item布局,和单个item布局,同时写一个通用的Adapter。使用先将写完的代码的使用方式展示一下:一种item布局cl
Kotlin学习(十一): 泛型(Generics) 泛型,即“参数化类型”,顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。接下来学习Kotlin中的泛型,Kotlin的泛型为类型安全提供保证,相比与Java更安全。泛型在Java中经常会用到泛型:class Box<T>{ private T var ; }// 使用Bo