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. Hibernate-二级缓存策略

    二级缓存的策略 当多个并发的事务同时访问持久化层的缓存中的相同数据时,会引起并发问题,必须采用必要的事务隔离措施. 在进程范围或集群范围的缓存,即第二级缓存,会出现并发问题.因此可以设定以下4种类型的 ...

  2. HDU-1754I Hate It 线段树区间最值

    这道题比较基本,就是用线段树维护区间最值,可以算是模板吧-.. I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768 ...

  3. [NOIP2011] 提高组 洛谷P1311 选择客栈

    题目描述 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均 ...

  4. ETHREAD APC 《寒江独钓》内核学习笔记(4)

    继续学习windows 中和线程有关系的数据结构: ETHREAD.KTHREAD.TEB 1. 相关阅读材料 <windows 内核原理与实现> --- 潘爱民 2. 数据结构分析 我们 ...

  5. android 开发问题:java.lang.ClassCastException

    java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl cannot be cast to javax.net.ssl ...

  6. PHP高效率写法(详解原因)

    1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍.当然了,这个测试方法需要在十万级以上次执行,效果才明显.其实静态方法和非静态方法的效率 ...

  7. 菲涅尔反射(Fresnel Reflection)

    离线渲染中,通常可以用kd,ks,kt(分别代表物体的漫反射系数,镜面反射系数,透射系数)来简单地描述一个物体的基本材质,例如,我们将一个物体设置为:kd=0,ks=0.1,kt=0.9,即代表一束光 ...

  8. JS 下拉菜单

    HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  9. Mongodb for C# 分组查询

    #region 排序获取集合 static List<BsonDocument> GetPagerWithGroup(string connectionString, string dat ...

  10. 如何调试R程序(转载)

    R语言的调试重要性不言而喻,这段时间准备改进一个R的包,但由于接触R时间不长,中间的很多东西不懂,需要重新打包调试,以对里面的很多程序有深入了解,下面从几个方面分享一下我的收获. 1.准备工作 a)R ...