2014年7月27日 15:02:57

附:

android 官方培训课程中文版 //官方简单的入门教程, 每个大类中只介绍了几个知识点, 可以快速搭建一个hello world

android 开发手册 // 详细介绍了每个知识类中的每个知识点, 其用法, 解释, 手机截图等

首先是搭建环境(下边讲的是比较早的用eclipse搭建的, 目前官网都推荐了Android studio 开发了):

1. 把android官方给的那个ant下载下来,按照说明安装就行了,这里说的就是,ant:就是包含了已经配置好的eclipse + android sdk + sdk manager 不用你在额外下载这几个,然后再进行配置了

2.java环境,下载jdk等等的

3.环境变量,分两部分:一部分是把java一些可执行文件的路径写进去,一部分是把android sdk的一些工具路径写进去(在敲命令行时使用): sdk/tools 和 sdk/platform-tools 这两个路径

命令行运行 android avd时出错:

ERROR: SWT folder '' does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.


此时,要把Java+android sdk相关的一些环境变量值整体移到环境变量path的最前边,不用重启电脑
 
W/AudioService(382): Soundpool could not load file: /system/media/audio/ui/KeypressStandard.ogg

解决办法:

1:设定模拟器禁止响应点击按钮时有提示音

2:编辑模拟器,选择 emulation options的GPU选项

参考: http://stackoverflow.com/questions/19872307/eclipse-soundpool-loading-error

--------生成hello world---------

首先可以显示"hello world"字符串的是一个文本控件,这个控件定义在一个叫activity_main.xml文件里,名字为<TextView .... />

里边定义了显示这个hello world字符串的控件的长宽等样式,以及hello world这个字符串,

值得注意的是,这个xml标签里边并不直接写进去"hello world"这个字符串而是这样:

android:text="@string/hello_world"

意思是在一个叫strings.xml的文件中,找到一个叫hello_world的string标签,将标签中的文本替换到此处:

<string name="hello_world">Hello world!</string>

然后说说显示这hello world的流程:

程序运行时会执行MainActivity.java代码里的OnCreate()函数;

这个函数里的一条语句:

setContentView(R.layout.activity_main);

他会加载一个叫activity_main的xml文件,作为参数去渲染显示出"hello world", 这个activity.xml文件就是上边说的那个包含了可以显示helloworld字符串的控件的文件

R.layout.activity_main => res/layout/activit_main.xml

---------点击一个窗口里的按钮,触发显示另一个窗口---------

刚接触,给我的印象就是,一个activity,就是一个窗口

官方文档说:项目中所有的activity都必须在一个叫AndroidMainifest.xml里描述

All activities must be declared in your manifest file, AndroidManifest.xml, using an <activity> element.

每一个acrivity 都会对应一个java类,每个Java类里都会通过其中的onCreate()方法去显示一个窗口

这里的"点击一个按钮,显示一个窗口",本质上就是点击A窗口里的这个按钮,去触发执行弹出B窗口的onCreate()方法 // onCreate里面尽量少做事情,避免程序启动太久都看不到界面

这个按钮绑定了一个函数,这个函数在按钮被点击时被执行,然后通过这个函数去调用B窗口的onCreate()方法

现在要注意两点,一个是A窗口是怎么把数据传递到B窗口的,另一个是怎么去触发另一个类的onCreate()方法

第一个问题: 有一个叫Intent的类,他可以存储这些信息,用来进行两个类的通信,使用的时候要指定要和哪个类通信,通信的数据是什么

第二个问题:在上一步准备好了Intent类后,调用一个牛逼函数startActivity();并把初始化好Intent类的对象当作参数传递给这个方法

然后,然后就调用了B窗口对应的那个类的onCreate方法,然后,B窗口就显示出来了......

点击图标启动应用程序:

当用户从主界面点击程序图标时,系统会调用app中被声明为"launcher" (or "main") activity中的onCreate()方法。这个Activity被用来当作程序的主要进入点。

如果程序中没有声明了MAIN action 或者LAUNCHER category的activity,那么在设备的主界面列表里面不会呈现app图标。

activity 状态与可见的关系

resumed 唤醒状态, 全部可见

paused 暂停状态, 部分可见, 即切换界面

stopped 终止状态, 隐藏,不可见

一旦onCreate 操作完成,系统会迅速调用onStart() 与onResume()方法, 技术上来说, activity在onStart()被调用后开始被用户可见

android 初探的更多相关文章

  1. Android——初探Dagger2依赖注入

    1,在做项目时,经常需要在一个对象里去创建另一个对象的示例,这种行为是产生耦合的常见形式,对于一个大型项目来说,过多的相互依赖会导致代码难以维护,很容易就会碰到修改一个小需求需要大面积的修改各种代码, ...

  2. Android -- 初探MVP模式

    1,相信大家对mvp模式都很熟悉了,M-Model-模型.V-View-视图.C-Controller-控制器.MVP作为MVC的版本演化,与MVC的意义类似:M-Model-模型.V-View-视图 ...

  3. android初探

    随着nodejs的不断发展,前端的范围越来越大,所以,适当的了解移动端是非常有必要的,比如使用RN开发app,前端必须要和安卓工程师沟通共同开发,那么学习android的基本知识就很重要了,因为目前安 ...

  4. Lottie开源库实现Android动画效果

    Lottie简介 Lottie是一个支持Android.iOS.React Native,并由Adobe After Effects制作aep格式的动画,然后经由bodymovin插件转化渲染为jso ...

  5. Android RxJava/RxAndroid结合Retrofit使用

    概述 RxJava是一个在 Java VM 上使用可观測的序列来组成异步的.基于事件的程序的库.更重要的是:使用RxJava在代码逻辑上会非常简洁明了,尤其是在复杂的逻辑上.告别迷之缩进. RxAnd ...

  6. React Native 常用学习链接地址

    Android Studio下载http://www.android-studio.org/ 第二章:Android Studio概述(一)http://ask.android-studio.org/ ...

  7. Android开发学习之路-RecyclerView使用初探

    在进行一些MaterialDesign规范开发的时候,比如之前说到的CoordinateLayout实现的向上折叠效果的时候,如果依然使用ListView,那么这种效果是做不出来的,因为ListVie ...

  8. Android热修复之微信Tinker使用初探

      文章地址:Android热修复之微信Tinker使用初探 前几天,万众期待的微信团队的Android热修复框架tinker终于在GitHub上开源了. 地址:https://github.com/ ...

  9. 《Android 性能测试初探》

    移动测试站点推荐: https://testerhome.com/ 专项相关帖子推荐: <Android 性能测试初探>合集 移动无线应用专项测试浅谈 公开课: [腾讯课堂]Testerh ...

随机推荐

  1. poj1679 kruskal

    判断最小生成树是否唯一.kruskal时记录需要的边,然后枚举删除它们,每次删除时进行kruskal,如果值未变,表明不唯一. #include<stdio.h> #include< ...

  2. hdu3397 线段树 成段更新

    这题真的呵呵了.敲了很长时间,调了很多bug,把0 1 输出,解决了.最后想取反,怎么搞都有bug, 最后还是看了大牛们的博客.不过这题真的敲得爽,调bug时基本把线段树过程全部弄了一遍. #incl ...

  3. 【CodeForces 605A】BUPT 2015 newbie practice #2 div2-E - Sorting Railway Cars

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/E Description An infinitely lon ...

  4. Yii2请求,报400错误

    出现400错误是yii2.0的csrf防范策略导致 在components里面添加request配置如下: 'request' => [ // !!! insert a secret key i ...

  5. int方法

    代码 #int内部功能 name='Kamil.Liu' age=18 num=-11 print(dir(age)) print(age.bit_length())#返回表示当前数字占用的最少位数 ...

  6. 【poj2234】 Matches Game

    http://poj.org/problem?id=2234 (题目链接) 题意 经典取火柴游戏 Solution 裸的Nim游戏,也就是取石子. 整个游戏的sg值为每一堆火柴(子游戏)的异或和. 代 ...

  7. TCP/IP详解 学习三

    网际协议 ip Ip 是不可靠和无连接的 ip首部 4个字节的 32 bit值以下面的次序传输:首先是 0-7 bit,其次 8-15 bit,然后 1 6-23 bit,最后是 24~31 bit. ...

  8. Ubuntu添加开机自动启动程序的方法

    文章出处:http://hi.baidu.com/gcc_gun/blog/item/fe9bbc4b84e911fa83025cb8.html 1. 开机启动时自动运行程序 Linux加载后, 它将 ...

  9. 深入浅出Redis03 使用Redis数据库(hashes类型)

    一 hashes类型及操作 Redis hash是一个string类型的field和value的映射表.它的添加,删除操作都是0(1)(平均).hash特别适合用于存储对象,相较于对将对象的每个字段存 ...

  10. dto

    dto dto- datatransfer object(数据传输对象):dto在设计之初的主要考量是以粗粒度的数据结构减少网络通信并简化调用接口. http://www.cnblogs.com/wu ...