Kotlin编程之路

作者: 冶金矿产  发布:2019-10-24

不知不觉离上次写SeeYou2016 整整一年了,这一年过的可快啊!还没有来得及回顾和思考就这样过去了,
每每想到是怎么涨工资怎么才能挣更多钱,怎么才能更快去做完这个项目,在紧张和刺激的节奏中写代码。

分享一篇文章,极其适合中级开发者复习当下2016--2017较为流行的几个框架相关知识点,这些个框架是开发中几乎必用到的。也适合初级的同学学习研究。也适合正在由java转向kotlin的Android开发同学。

前言

前面说了那么多,只是和kotlin有了一个大概的认知而已,如果没有经常去使用,久而久之就会忘记,所以是时候和Kotlin打交道的时候了,前面只是介绍Kotlin如何如何的,没有一个示例源码项目来为解剖kotlin的真面目,下面就开始为大家讲解如何在Android studio环境使用kotlin开发。

本篇文章是基于Android studio环境下开发的一个小小示例demo,主要是抛砖引玉,至于修行,还是得看个人。

回顾这一年做了三个项目,从去年写blog的时候是优铺app,通过接近6个月的时候才拿到尾款,那个时候已经是到了今天的四月份了,
优铺真的付出很多,还找了很多好的体验上面, 首先是动画,为首页添加了动态数字显示,搜索框中键盘操作,activity中右滑删除,
还有cookiejar的发现,建立本地的cooker。okhttp的使用,已经对其封装对okgo框架体验真的很好。 这是项目,真的自己很用心去做的。

因公司目前没有这方面的项目,用到的东西不如这个项目的东西多,也没有这么全。所以拿来学习,以供后续参考。

环境配置

在Android studio环境开发,需要安装kotlin的插件,如果没有安装的请先进行安装
安装方式路径Android studio -> preferences... ->Plugins -> Install JetBrains plugin...
然后在界面上输入Kotlin,这个时候在右边就会出现安装按钮,由于我已经安装过了,没有安装的童鞋就选择最新版本进行安装就可以了,安装完成后点击restart,这样我们在Android studio上就可以使用kotlin开发了

图片 1

image.png

还有一段时间自己去做一个shopapp 这个真的坏极了,但是它上面的mvc 模式真的很好,直接修改界面就可以了。在哪个时候我才
发现我界面写的真的很烂,自己单独写一个没有网络请求的界面,真的很难,要是没有从零开发,真的很难发现自己真的成了搬运工了。
于是我拒绝当帮运工,还是自己写了一部分界面。最后幼教项目来了,界面是人家做的,我只是对接网络请求部分。我想这样对我来说太好了。

本文转自: ,侵权请告知之,分分秒删。再次感谢原作者同学的分享。 以下是转发自原文:

正式和Kotlin打招呼-- Hello Kotlin

首先创建项目的时候还是和之前创建Android项目一样就可以了,然后会有一个神奇的东西,自动帮你转换成kotlin代码

这样我就可以看到外面外包项目,人家是怎么快速做出来的,真的,人家界面真的做的很快,不管三七二十一,先把所有的activity 创建起来,然后在把各个界面
中的串联起来,然后主攻单个界面的功能,然后对封装titlerbar 和dialog 有了新的认识,原来可以这样写,发现写代码的,应该是一个新的学者,他们应该是体系化学习的,
这里好多知识系统很好,每个点都能用到,但是不足之处就是,懒惰,没有重新再去看,还有总体把握不够。也许还是刚毕业小孩做的吧。想想自己也是
android的一名小学生,就这样吧,在一点一点的修改吧。

项目地址:Cuieney/kotlin-life  

未转换前的代码,这里直接上图片

图片 2

image.png

就这样幼教开启了擦屁股的工作,还好的是我擦的很好,项目作完了。
还没有结束就来了一个货车app,所有这两个项目是同时进行的。所以,我延续了之前的思路,先把所有的界面搭建成功,然后在对每个界面进行不同程度的修改,然后在重复修改和添加界面,以及上面的功能,还好的时候,我们来了一个测试人员,和测试人员开始自己主动性出击工作,把项目结束掉。

简介:kotlin java 混编项目,目前正在像 kotlin 转型 仅供学习交流使用 欢迎 star fork issues。

转换后的代码

我们找到code ->Convert Java File to Kotlin File 然后直接选择就可以了

图片 3

image.png

哈哈,有没有发现神奇的事情发生了,通过转换,这个代码看着怎么有点不适应啊,怎么感觉像是swift的代码风格了。至此,kotlin的环境已经搭建完成了,什么,这样就搭建完成了?是的,就是这么简单,一个插件就能帮你搞定。
接下来我就写个入门级的程序,废话不多说,直接上代码。
我们发现,使用kotlin之后,再也不用担心我们xml里面的控件ID没有绑定而直接使用后抛异常的情况了,是的,你没有看错,也没有听错,用kotlin再也不用绑定我们那些控件ID了,不过我们需要做一个动作,那就是引入以下插件,

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

图片 4

image.png

如果你在Android studio里面没有设置自动导包,那就需要手动导包了

import kotlinx.android.synthetic.main.activity_main.*

然后就可以看到神奇的效果了,xml布局文件的ID可以直接调用并运行

图片 5

image.png

那如何新建一个Kotlin类呢,来来来,看这里

图片 6

image.png

假设我们写一个User的Kotlin文件,当然你也可以写成一个Kotlin的class,这里我是写一个User的文件,然后在里面创建一个Users对象。

图片 7

image.png

看到这里,有没有觉得很奇怪,居然可以在Kotlin文件里面创建一个对象。

那在Kotlin里面是怎么new 一个对象的呢,看这里:

//声明一个对象,这个就跟我们使用Java new 一个对象一样 Java里面是Users users = new Users("小明");
  val users = Users("小明");

咦,有没有发现,Kotlin声明一个对象和Java区别这么大,以前人们总是调戏Java程序员没有对象怎么办,那就自己new 一个对象咯。现在可好,使用Kotlin之后,想new都没得new了,这里应该悲哀一下,因为没办法new对象了。

下面用两个EditText控件做一个简单的加法运算

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="55dp"
        android:gravity="center">

        <EditText
            android:id="@+id/input_edit_number_one"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="5" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="+" />

        <EditText
            android:id="@+id/input_edit_number_two"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="5" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="=" />

        <TextView
            android:id="@+id/result"
            android:layout_marginLeft="15dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="10" />
    </LinearLayout>

然后在使用EditText赋值变量的时候发现,居然不能这样子写,不能直接使用text属性赋值,而且还可以发现EditText属性没有getText()的方法了。

//这样子赋值是会报错的
input_edit_number_one.text = " 5 "

//我们只能这样子赋值,然后在做一次赋值后的转换
input_edit_number_one.setText("5");

下面直接给出两个数相加的代码示例

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //声明一个对象,这个就跟我们使用Java new 一个对象一样 Java里面是Users users = new Users("小明");
        val users = Users("小明");

        author.text = users.name;

        input_edit_number_one.setText("5");

        input_edit_number_two.setText("5");

        val number1: String? = input_edit_number_one.text.toString();

        val number2: String? = input_edit_number_two.text.toString();

        //Button 的点击事件
        equalTo.setOnClickListener {

            val result1 = calculatetwo(number1!!.toInt(), number2!!.toInt());

            result.text = result1.toString();
        }

        //也可以调用calculatetwo函数
        //val result2 = calculate(number1!!.toInt(), number2!!.toInt());

        //result.text = result2.toString();

    }

   /**
     * 计算两个数字相加
     */
    fun calculate(a: Int, b: Int): Int {
        return a + b;
    }

    /**
     * 计算两个数字相加
     */
    fun calculatetwo(a: Int, b: Int): Int = a + b;

这里我基本上学会了如何让自己开始进行什么样的开发模式了。想把自己的思路都有了一个整体的规划图了,先想出来所有的功能,界面上也搭建完,然后,
把他串联起来,自己把从头到尾的每个步骤都要记下。在同一去修改,去调试,这前用dubug模式真的很好,现在log和debug同时进行真的很好,log走一遍没有问题,最好,然后大错误就找debug。真的很有用。

标签:   kotlin    mvp    media    music    dagger2    retrofit    okhttp    glide    vide    

回顾一下今天所讲的内容,

  • 如何在Android studio环境下搭建Kotlin开发环境
  • 如何创建一个Kotlin文件,然后怎么声明一个对象,如何使用一个对象
  • 通过引入一个插件,所有的控件ID都不需要进行绑定就可以调用
  • EditText 控件的一些相关知识
  • 通过一个简单的函数,了解到了Kotlin的函数和Java的不同之处

好了,今天就先讲这么多,通过以上几点,我们对Kotlin的认知也加深了很多,如果文章中有什么错误的地方,欢迎丢砖,大家一起学习,一起进步,谢谢大家!

就这样这个夏天过去了,没有去参加集体活动,没有去旅游,只有在自己公司和家两点一线来回走动,回家时候和去年差不多时间,最让我吃惊的是没有去年更多疲倦的感觉,我学会如何去缓解自己的疲倦,分散自己工作和学习中的压力,然后把注意力转移走,然后在回过来继续工作。

Life

图片 8

App 界的一股清流

下半年,从代码上 开始转换了一下思路,自己重新搭建了组件化程序,分开了一部分功能。
自定义了部分代码和功能。对解耦和功能分离的方式,对界面和代码能很快去修复。主要针对快速变化的需求变化做应对。同时也对新的想法的添加,以及新的框架的尝试,这也许是我待下去的原因吧。更多的是自己有独立学代码和写blog的时间。

目前项目持续更新重构中(目前项目已经转型到 kotlin 了)。

接着会添加部分插件化的东西,以及新框架的尝试,还有更多优秀的项目学习。

Life是一个多媒体信息 app,基于 Material Design Kotlin + MVP + RxJava + Retrofit + Dagger2 + GreenDAO + Glide做这款 app 主要是出于 Android 日常开发中或多或少的都会仿着 ios 的样式来写 ui(可能设计师就做了一份 ios 交互设计,android 只能跟着去写相同 ui),完全舍弃了 MD 风格,第一出于学习目的做的,第二出于想写一个完全按照 MD 风格的 App。 目前包括以下内容:

读书

自己通过微信读书这个软件,从微信登录,看到里面有北大才子艾力老师的一本《你一年的8760小时》。开始对时间把握,但是还好的是,里面讲到如何自己调节压力的,每个人都在工作,确实工作很累,但是我们的大脑在另一个区域确实闲的,所有我们要把现在的模块休息一下,接着要把没有工作的模块去工作,去体验生活,会看到不同的效果。

还好的是这本书真的很好,我也觉得很有道理,作者艾力,是一个从北大到现在的新东方的老师,真的历经的失败和成功,看着也挺激动的。看完了,发现读书app里面没有太多杂文和小说,并且有空就看看一下,一口气看完了八本书一共。
有《史蒂夫.乔布斯传》《居里夫人自传》《季羡林自传》《比尔盖茨传》《人工智能》《从你的全世界路过》《把时间当做朋友》。

这几本书,看乔布斯的时候,50年代到20世纪,美国电子产品发展真的很好的年代,对终端环境发生了翻天覆地的变化,再到现在的互联网时代,而我想知道当时的中国真正做什么?发现了才子季先生,从而开始了看他的作品自传。真的,从而思考到中国变化很快和很不同。

季先生在二战期间在德国,所以我想知道其他国在二战期间,是怎么的状况,居里夫人恰好在那个年代,二战期间,在经济最困难的时候居然做出伟大的作品和发现镭元素。这个伟大的女人,不仅让我看到她那股热情和科研精神,还让我看到无私奉献精神,真的太棒了。所以对那个时候的欧洲,是一个很好的认识,接着看到是拿破仑和梵高的一些东西,还没有看完,又看到美国的富兰克林和华盛顿,接着渐进的看到了不一样的世界,接着还会很多,所有算了不想了,也不看了,还是对眼前的了解下,所以看完了比尔盖茨。

写的也很好,感觉差乔布斯的作者太远了,那个作者写的才叫一个棒,对桥帮主价值观和人格魅力都展现出来了。

读书所以既让我学会了一些表达能力,也让我聚精会神看到一些东西,才使得我没有浪费一个小时的上班和下班的时间。 当时每每下班,我的思想都是比较活跃的,因为编码的活跃的毕竟是的大脑最小的部分,其他部分也是我最开始活跃的部分。

视频来自:开眼http://www.eyepetizer.net/汇集各种炫酷视频

代码

我上传的gitee.com上,之所以用它是为了看自己所上传的代码有多少,也强迫自己每天都要写一些代码,所有很多上传上去都是私有的,不是为了偷走自己写的代码,只是为了更好端正自己工作的态度,也对代码哪里都可以看,反思自己写的,及时在忙也要看看外面的代码和自己的代码。
下面是自己的代码记录展现图

图片 9

git图

不过真的很遗憾,没有太多star,自己也写了一部分demo,例如日历滑动,还有底部菜单收集,一句话popwindow。 在简书和掘金上也发布了一些,还好一个星期也有100个喜欢。
看了一下,一年中所写的blog 真的糟糕透了,没有一些创新的东西,更没有好的独特见解。只有搬砖了,搬的能做项目了。

前半年,我都在收集和使用它们的方法,都在用,先去github上看有没有砖,拿来就行了。
后半年,我开始封装一部分代码,例如一句话popwindow,还有使用动画,自定义下来刷新界面和等待界面,以及修改部分源码。另外开始看内存使用情况,从app 流畅度上开始做一些优化了。

虽说,blog写的不多,但是还是坚持写到最后了。 2018加油。

遗憾是,Kotlin Demo Begin这篇始终没有机会和时间去整理出来和kotlin的学习。 kotlin也是我一直是我想去学习的东西,真的应该抽出来时间进行学习了。

python 和node 本来是自己下半年要学习的地方,遗憾的node连接数据库的时候就放弃了。

学了一段从零搭建mvcspring ,真的很好。但是在向里冲击一下东西的时候,发现太难了。要涉及的东西太多了。所有说 我都在逃避困难,要有遗憾,就必须这面困难,这也是对2018年对自己说的。

音乐来自:余音http://app.mi.com/details?id=fm.wawa.mg/文艺骚年专属

生活

今年感觉去比年好很多,例如对象的脾气和孩子的成长,都让我感觉比去年好很多。

对象也学会了如何去理解人,如何去应对生活中的琐事了,并没有太多的苛刻要求。这一点真的很好。但是我也想过上还贷的日子,例如房贷。有一个自己的温暖的窝。

周末,我几乎不敢出去,我要和孩子玩,我会背这她溜达,但是对象说不要这么惯着,你上班了谁背。所有我也明白了,要对待和平时一样。和他画画,写字,做游戏,看电视。
孩子的笑,让我仿佛恋爱了。

图片 10

孩子图

我给我对象买了天津大学的专科学历,不知道能不能用到,但是毕竟可以愿她梦想吧,想做什么就自己去做吧,例如去大公司去上班,她学习能力也不差,为啥不去和上大学的有竞争呢?还让别人看只是一个没有上学的呢?路还很长,为啥不试一试呢?我对象也同意。 加油2018。

自己又买了二建的教程,准备每年考试,感觉二建里面工程很好,二建会从法律,投标,到设计,在实施,再到结项,和我们计算机很像,这才是真正的工程师和项目经理。 不管过还是不过,我学到了 基本的法律和整体的流程,以及作为项目经理的责任,以后自己成为责任人的责任。

文章来自:余音http://www.wufazhuce.com/韩寒主编和监制

未来之期

以前做规划然只是为了学习某个技能,现在我学会了,综合能力,例如听懂别人的话,端正自己的太多,还有部分教程进行,开始是基础,再去简单教程,再到实战。一步一步进行。现在我买了mac了,我要学习苹果开发了,下一年的准备。mac一是是我的梦,为什么我看乔布斯传?也是出于这个原因,还要备考二建。继续自己的blog,希望写点好的东西,自己希望有所突破吧。

还得增加个人收入,毕竟孩子要上幼儿园了,花钱的地方多了。

最后引用苏东坡的《留侯论》中的文字,

“古之所谓豪杰之士者,必有过人之节,人情有所不能忍者。匹夫见辱,拔剑而起,挺身而斗,此不足为勇也。天下有大勇者,卒然临之而不惊,无故加之而不怒,此其所挟持者甚大,而其志甚远也。”

全景图片来自:kuulahttps://kuula.co/主要是图片质量很高

Tips

1.本项目目前只是在开发测试阶段,发现 bug 或有好的建议欢迎issuesEmailcuieney@163.comlink.

2.本项目仅作为学习交流使用,API 数据内容所有权归原公司所有,请勿用于其他用途

3.目前项目几乎已经转型到 kotlin 了,代码所在目录dir

4.针对第一次拉代码安装 apk 闪退(ClassNotFoundException),再次运行一下就好

Points

使用 Rx 家族配合 Retrolambda 减少代码量

使用 RxJava 配合 Retrofit2 做网络请求

使用 Rxlifecycle 对订阅的生命周期做管理

使用 RxBus 来方便组件间的通信

使用 RxJava 其他操作符来做延时、轮询、转化、筛选等操

使用 okhttp3 对网络返回内容做缓存,还有日志、超时重连、头部消息的配置

使用 Material Design 控件和动画

使用 Ijkplayer 来实现播放视频功能

使用 MVP 架构整个项目,对应于 model、ui、presenter 三个包

使用 Dagger2 将 M 层注入 P 层,将 P 层注入 V 层,无需 new,直接调用对象

使用 GreenDAO 做阅读记录和收藏记录的增、删、查、改

使用 Glide 做图片的处理和加载

使用 Fragmentation 简化 Fragment 的操作和懒加载

使用 Statusbaruitl 动态的改变通知栏颜色

使用 XRecyclerView 实现下拉刷新、上拉加载

本文由88必发手机版发布于冶金矿产,转载请注明出处:Kotlin编程之路

关键词:

上一篇:没有了
下一篇:Kotlin编程之路