本帖最后由 1763982023 于 2017-11-18 16:10 编辑
前言
kotlin的语法规则和Java的语法不一样,对于初学者的我来说,就是一场语言灾难,因为Java虽说笨重,但是笨有笨的好处啊,比如说易于上手,而kotlin过于聪慧,让我一下感觉无法适从这种语言的聪慧,所以就以一个新闻客户端demo来解读一下kotlin世界的部分精彩.
重点:用kotlin去写android的目的是为了减少代码的数量和增加灵活性,如果代码没有减少到原有的1/3,我们可能使用了假的kotlin.
要求
前提:我们有个基类(kotlin配置我就不配了,反正3.0后就转正了,不需要配了)
1.透明度从无到有
2.图片旋转360出现
3.图片有大到小缩放
#基类
[AppleScript] 纯文本查看 复制代码 abstract class BaseActivity : Activity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//构建setContent方法
setContentView(getLayoutId())
initWidget()
}
//设置初始化方法
open fun initWidget(){
}
//抽象必须实现的布局设置方法
abstract fun getLayoutId(): Int
//添加可能用到的跳转方法
/**
* 这里的Class<Any>或者是Class<*>表示任意类的类型
*/
open fun intentFunction(activityClass:Class<*>){
startActivity(Intent(this,activityClass))
}
}
#属性动画的使用
经过思考,补间动画(tweenAnimation)我觉得太他喵的累赘了,用啥子3.0的动画啊,都是上世纪的api了,直接来属性动画简单明了.
思路:
1.先让对象缩放到0,透明度为0,,为什么这样设置呢,因为简单,不需要坑长的ObjectorAnimator点来点去的调方法,用最简单的方法就能完事.
- splash_image.apply {
- scaleX=0f
- scaleY=0f
- alpha=0f
- }
复制代码
不解释基础语法+基础的高阶函数用法
思路:
2.让图片旋转并且在旋转的,放大,充实,最后动画结束后需要跳转
- splash_image.animate().apply{
- scaleX(1f)
- scaleY(1f)
- alpha(1f)
- rotation(360f)
- duration = 1500
- //objecct之用法
- setListener(object : Animator.AnimatorListener{
- override fun onAnimationRepeat(animation: Animator?) {
- }
- override fun onAnimationCancel(animation: Animator?) {
- }
- override fun onAnimationStart(animation: Animator?) {
- }
- override fun onAnimationEnd(animation: Animator?) {
- //跳转事件
- intentSwitch()
- }
- })
- }
复制代码
Java用习惯了,自然觉得new 个内部类不就出来了相应的内部类了吗,但是kotlin写到小括号里面就没有了,就没有了,真的没有提示了,所以耗了很久,难受了:-(,看一下监听器的源码吧,点开setListener的源码,发现内部类是静态的static,,让人联想到,kotlin中的伴生对象,然后就是object,没错就是object,结果一套,就能用了,当然原理不是这样.
在此顺便介绍一下object用法回顾:
1/对象表达式,可以当point使,但point是二维的,太low了.
2/对象声明,相当于java里面的static用法
3/伴生对象,相当于Java的静态方法
对这些不太清楚的老哥们找度娘,就明白了
当然还有关于属性动画的由来和原理,大家有兴趣也可以百度一下
|
|