最近比较闲,以前也有相对安卓了解的想法,所以最近看了点关于安卓的东西,发现只要iOS以后,安卓开发学的也会比较快。

                                         wKioL1X_snnz2TS9AAEgKn54niA020.jpg

    安卓开发教程比较多,开发环境在mac上配置也比较简单,所以无论安装eclipse搞开发还是Android studio都比较容易,无非是JDK+ADT,建议安装个GM安卓模拟器,速度比自带模拟器快多了。

        

wKiom1X_tjDgVjU-AAI6kZV3yZE273.jpg

                        拖控件跟storyboard一样一样的


    接下来就是第一步,hello world,使用Android studio后,系统会自动创建一个activity,类似iOS的根视图控制器。如果想迅速看到界面效果,就来学习相当于UIKit框架的控件吧:andriod.widget(包含Button,TextView,EditView,ImageView,ScrollView)。

                


    安卓的布局大部分都在xml文件里,要是在代码里面适配,感觉很麻烦,不像iOS一样,安卓一般不使用绝对坐标,所以安卓开发需要先学布局(LinearLayout,RelativeLayout等),感觉跟iOS的xib一样一样的,而且都可以拖控件。xib也是xml的结构,难道灵感都来自HTML,安卓的最像。


<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView" />


<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/newbutton"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_marginRight="43dp"
    android:layout_marginEnd="43dp"
    android:layout_marginBottom="41dp"
    android:onClick="onClick"/>

    上面xml代码是安卓的布局,感觉一看就会明白干啥的,所以搞iOS的搞安卓真的很容易。


    做iOS项目时感觉iOS最重要的控件没有之一就是tableview,安卓和它对应的是ListView,很有意思的是初学者都会经常出现重用(当然重用的也比较类似,就是如果为空了创建一个)的问题。与UIKit框架中的UICollectionView相似的控件是GirdView。可能是GirdView不太熟悉,感觉collectionView比GirdView强大太多了,简直能各种布局。


        

wKioL1X_wUqgwPG8AAFbqktDWHc964.jpg

    

     语法方面的就是java和oc了,java是初学的可能理解上有些偏差。java中的接口interface和oc中的代理delegate比较类似,接口和代理都是写在继承后面,而且需要实现接口和代理中的方法。主要都是用于事件或者参数传递的。java中的匿名类结构和oc中的blcok比较类似,但是感觉差别有点大,有点像一个匿名类包含多个blcok一样。但是至今不知道类似oc的单个blcok如何实现,以后肯定要补习的。


    开发工具来讲都差不多,断点调试等都比较类似。吐槽一下安卓:Android控制台输出太多跟本程序无关的东西了,还得过滤来解决。就模拟器来说,安卓简直慢的要死,不过下载其他的比如GM模拟器就可以解决。在开发方面例如给view等添加手势,安卓简直麻烦的要死,iOS可以秒它几条街。还有java的数组使用太麻烦,Array、ArrayList、Vector都不知道用哪个了,oc一个NSArray全搞定。(以上吐槽可能是没有用对方法或者没用习惯,只是使用中感觉有些别扭的)。


    还有好多比较类似的东西,比如Activity和UIViewController都是用栈管理的都有生命周期、字符串提供的各种方法比较类等,因为都属于前端所以比较类似的东西多也正常。目前Android开发只看了一小部分(数据持久化、网络请求、webview等),还没进行实战,所以知道的不多,以后学习了还会来分享。