疯狂安卓Android自学笔记
开发者必备自学工具:
谷歌搜索:www.yundou.info
Android原版开发文档 (英文) Doc http://www.phoned.cn/docs/reference/android/view/View.html
Android原版开发文档 (英文) Doc 下载地址 http://www.phoned.cn/docs.zip 由于谷歌被封杀网页相关谷歌API无法调用打开会非常卡建议断网或FQ后使用。
2015-12-24
View 组件:
绝大多数的android基础控件都存在包android.widget,android.view 及其子包中。
所有的UI基础组件都继承了View类,view是一个空白的panel 板。
ViewGroup 具有view的功能,通常用作view的容器,而其又是抽象类,为了减少方法复写通常使用ViewGroup的子类作为容器。
ViewGroup通过它自身的内部类LayoutParams,MarginLayoutParams的XML方法来控制放在其容器内部的组件布局。
开发者可以通过继承View类并实现其方法,自定义个性化的UI组件。通常重写View构造函数这种基本的方式实现。
继承自View的类重写其方法,该类生成的对象将按照重写的方法来生成相应的形状或者效果。
如果使用R引用控件或文件时无法找到已经创建的控件时,查看引入的R文件是否是当前包的R文件。
//////////////////////////////////////////////////////////////////////////////////////////////////////
2015年12月25日
再探布局:
LinearLayout 流式布局,组件可按照横向或纵向先后顺序排列,组件之间会相互推挤,由于屏幕大小有限,有时有的控件会推挤到屏幕外而无法看到该控件。
GridView网格布局,指定行列后添加View控件、。
TableLayout 表格布局,无需事先指定行列,添加行数后,在行控件中添加子控件。
FrameLayout 帧布局,各个控件会按照加载顺序会叠加在一起。
RelativeLayout 关系布局,各个控件的位置由其他控件的位置作为参考来摆放。
AbsoluteLayout 绝对布局,控件的位置由开发者自己决定,严格的按照x,y坐标来摆放控件。
//////////////////////////////////////////////////////////////////////////////////////////////////////
2015年12月26日
深入Activity
众多的Activity组成Activity栈,当前活动的Activity处于栈顶。
通过继承关系图可知:Activity间接的继承了context,contextwrapper,contextthemewrapper等基类。
什么是回调:在特定时刻会发生的调用行为,例如回调函数。A调用B去处理相关事务,B在处理事务时需要A提供一个处理事务的函数C,C则称为回调函数,为什么A不直接去处理而让B去处理,在处理过程中B可能不只是处理A的事务,还处理其它类型的事务,在处理各种类型的事务的过程中底层某些实现逻辑是一致的,所以封装了B,减少了冗余的底层实现代码,对于一个具有通用性质的程序架构来说,程序完成整个应用的通用功能,流程,但是在特定的点上,需要执行开发者自定义的与软件业务相关的代码,这段代码”因人而异”而通用程序构架无法完成这段代码。
程序内部逻辑执行完成后需要调用该段由开发者自定义的函数或代码来实现特定的功能,通常有两种方式完成这段功能代码的编写:一种是以接口的新式,复写其回调方法以嵌入自己的代码。另一种是通过继承基类的抽象或非抽象的类方法,复写其抽象或非抽象类方法完成代码嵌入。
//////////////////////////////////////////////////////////////////////////////////////////////////////2015年12月27日
理解intent相关
Android使用同一的intent模型来封装模块间的启动,为各个模块组件提供了统一的编程模型。
ComponentName(A1,A2);A
参数A1代表A1所对应的包,A1可以是String、Context。
参数A2代表组件,A2可以是String、class。
Intent属性 action和category是一个设置静态字符串的方法,action方法代表intent需要完成的行为(打开,查看等),category方法为action提供附加信息。
Intent设置了category和action结合的方法后只是定义了intent的行为和该行为附加信息,并没有指定执行这一行为的对象,通过intent-filter来控制执行对象,在Manifest中配置Activity的Intent-filter,该Activity就有可能被启动。
通过intent-filter来指定动作的执行者,从而切断了行为与执行者之间的粘合,行为和执行者之间是可插拔的关系,如此设计降低程序的耦合度。
//////////////////////////////////////////////////////////////////////////////////////////////////////
2015年12月29日(补一章)
Android资源操作
Android目录下的res目录中存放的资源会自动在R文件中生成索引,在代码中可以直接引用。Assets也是存放资源的目录,存放的是android无法直接访问的原生资源,需要使用AssetsManager已二进制流读取。
在XML代码中使用@符号引用的标识符号除了系统定义的资源名称还外可以在XML资源文件中使用name标签自定义资源名称。
尺寸,颜色,字符串资源,定义在res下的value文件夹中,使用@符号引用资源时格式为例如:@string/title即引用了value下的string文件下name为title的item的值。
XML资源中的数组,在XML根标签<resource>下定义的三种数组形式:<array>普通型<string-array>字符串型<integer-array>整形数组。
根标签<layer-list>是LayerDrawable的XML声明格式,其内部包含的是Drawable对象(drawable=XXX),可以包含多个Drawable。绘制顺序根据索引大小依次绘制。
五大资源特效控件 StateListDrawable, LayerDrawable, ShapeDrawabe, ClipDrawable, AnimationDrawable。
StateListDrawable 根标签<seloctor>设置控件事件发生变化时起作用。
LayerDrawable 根标签<Layer>根据Drawable对象绘制图形。
ShapeDrawable 根标签<Shape>设置控件视觉效果,例如 圆角,填充,边线,渐变。
ClipDrawable 根标签<Clip>截取图片特定位置的片段。
AnimationDrawable 根标签<set>设置一个动画资源。
原始XML:保存一些初始化参数或者小量的配置信息,大量信息可以考录使用SQLite。
要求:是一份语法符合XML规范的文件。
通过XML解析类XmlResourceParser的方法getXml(int id)获取XmlPullParser对象来进行XML相关操作。
使用InputStream类的方法openRawResource方法可获取XML输入流。
菜单资源./res/menu 根标签<menu>通过设置其内嵌的元素项来设置菜单的内容。
通过重写上下文菜单方法onCreateContextMenu可以将菜单资源文件载入作为一个上下文菜单,也可以用于其他地方,手法类似。
Android中定义theme主题资源。
控件风格控制:根标签<resource>通过子标签<style>添加属性。子标签<style>可通过name指定样式名称,parent指定继承项。
Activity主题控制:Activity主题XML格式类似风格控制的写法,item项多采用系统函数android:WindowXXX书写的形式。
通过activity的setTheme方法可为单个activity设置主题,统一设置主题可在manifest中设置。
Attribute属性资源,根标签<resource>,attr为子元素,declare-styleable为属性的集合。
代码中通过AttributeSet方法获取属性。
Attribute对对象的属性进行托管,规范化对象属性。
使用属性时通过在项目XML布局中导入attribute所在的包。命名空间:xmlns:xxx.android.com/apk/res/packge
Android程序国际化的主要类:ResourceBundle,locale,翻译文件以KEY-VAR键值对形式存放,通过native2veascii将其转化为Unicode格式。
Android程序国际化也可以通过res下建立不同语言命名的文件夹(value-zh-rCN)的String.xml键值对(<string name=”ok”>好</string>)来实现。、
//////////////////////////////////////////////////////////////////////////////////////////////////////
图形与图像处理(主要靠动手)
Bitmap代表一张位图,BitmapDrawable封装了Bitmap对象。
访问android程序自身以外的路径中的图像需要需要使用BitmapFactory来解析创建bitmap对象。
创建bitmap对象往往需要占用设备内存,bitmap对象方法isRecycle()方法判断是否已经回收recycle()方法则强制回收。
继承view组件重写onDraw方法即可实现绘画。
Canvas代表画布,paint代表画笔。使用它们各自的方法可以实现绘画不同效果。
Path代表任意多条子线链接而成的任意图形。它可以预先在view上将N个点链接成一条路径,然后使用canvas的drawPath方法沿路径绘制图形。
PathEffect定义绘制的效果。
Matrix是android提供的一个矩阵工具类,结合其它API来控制图形组件的变换。
//////////////////////////////////////////////////////////////////////////////////////////////////////
2016年1月1日(补两章)
Android数据存储于IO流
SharedPreferences 接口以键值对的形式:用于保存少量信息,例如配置信息,软件相关外存。
SharedPreferences提供了一系列对外存文件的读写操作。
SharedPreferences内部接口Editor提供了数据的写入和清除方法。
SharedPreferences本身是一个接口,无法使用new方法生成其对象,强行使用new方法生成其对象则会写成内部类形式。使用context.getSharedPreferences();获取对象。
Context提供了一组读取当前应用程序的数据文件夹下文件的IO文件流:openFileInput openFileOutput。
读写SD卡文件:Environment getExternalStorageState();判断SD卡状态。
GetExternalStorageDirectory()获取SD卡目录。
使用FileInputStream FileOutputStream FileReader FileWriter方法对文件进行读写。
后记:学习至此只看书然而并没有什么卵用,光领会内容是不够的,工科资料需要边领会边实战,还有如果不能坚持的话前面干得再多也将会很快忘记。2016年1月2日
疯狂安卓Android自学笔记的更多相关文章
- Android自学笔记:Git下载源代码
Info:做J2ME几年了,现在基本没有公司用了,是时候向Android领域进军了. 自学中,难免会有疏漏,有问题请及时提出,共同学习共同进步. 2014-10-13:初版 2014-10-14:添加 ...
- Android自学笔记:环境配置
Info: 自学Android之旅第二篇,初步学习会有疏漏,以后我会不断修改补全,直到完美. 2014-10-09:初版 2014-11-12: 重新配置了一台电脑,更新在学习robotium过程中, ...
- android自学笔记(1):android简介
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名称,中国大陆地区较 多人使用“安卓 ...
- android自学笔记一
android是什么我自闭不必多说,我们挑精华整理 一.android体系架构: android从下而上分为四层: (1)分别是linux操作系统及驱动(C语言实现) (2)本地代码(C/C++)框架 ...
- android 应用笔记
android 应用笔记 android 应用笔记 小书匠 Android 综合教程 Android常用技巧 安卓系统架构 安卓源码开发 安卓驱动 Linux内核 安卓应用开发 Java 教程 tic ...
- 安卓第九天笔记-Activity
安卓第九天笔记-Activity 1.创建Activity 一个界面对应一个activity 创建一个Activity 1.写一个JAVA类,继承Activity publicclass CalcA ...
- [置顶] Android开发笔记(成长轨迹)
分类: 开发学习笔记2013-06-21 09:44 26043人阅读 评论(5) 收藏 Android开发笔记 1.控制台输出:called unimplemented OpenGL ES API ...
- 《Linux内核设计与实现》课本第四章自学笔记——20135203齐岳
<Linux内核设计与实现>课本第四章自学笔记 进程调度 By20135203齐岳 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵 ...
- 《Linux内核设计与实现》课本第三章自学笔记——20135203齐岳
<Linux内核设计与实现>课本第三章自学笔记 进程管理 By20135203齐岳 进程 进程:处于执行期的程序.包括代码段和打开的文件.挂起的信号.内核内部数据.处理器状态一个或多个具有 ...
随机推荐
- oracle 的服务器进程(PMON, SMON,CKPT,DBWn,LGWR,ARCn)
来着TOM的<oracle 编程艺术 9i,10g,11g> PMON PMON,进程监视.PMON主要有3个用途: 1,在进程非正常中断后,做清理工作.例如:dedicated serv ...
- ORACLE函数详解【weber出品】
一.什么是函数 一个函数: 1. 是命名的PL/SQL块,必须返回一个值 2. 可以存储到数据库中重复执行 3. 可以作为表达式的一部分或者提供一个参数值 二.创建函数的语法 必须至少有一个返回值,创 ...
- 此项目的默认Web访问模式设置为文件共享, 但是无法从路径(此为转贴)
故障现象: 当你打开ASP.NET Web项目时,如果出现这样的错误提示:提示窗口标题: Web访问失败提示内容: 此项目的默认Web访问模式设置为文件共享, 但是无法从路径“...”打开“...”处 ...
- BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 算法讨论: 1.可以用最大流做,最大流等于最小割. 2.可以把这个图转化其对偶图,然 ...
- Web项目中用模板Jsp页面引入所有静态样式脚本文件(js,css等)
这样的好处是不需要再每个页面中都添加太多的外链接(不会减少请求数量),但对开发会更快捷,如果更改这些文件的位置或名称,只需要更改模板文件,不需要一个一个页面复制粘贴:同时可以为不同jsp页面组创建不同 ...
- a标签加绝对定位在图片上面,a的链接和块状属性block失效,而且是所有IE版本都失效的
谷歌和火狐浏览器下测试是正常的,IE下鼠标移过logo是没有超链接的提示的 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...
- 关闭并且禁用ECSHOP缓存
ECSHOP的缓存机制从一定程度上可以减少ECSHOP反复读取数据库的几率,从而一定程度上降低服务器负担,提高访问速度.但是启用缓存机制,对一些新手站长也有不利的地方.我就遇到很多新手站长经常问,我明 ...
- Jasper_table_resolve get multiple copies of table in detail band issue
resolve method: (1) put table component into the Title band / Page Header band / Summary band, not i ...
- BIT_COUNT()和BIT_OR()
在学习MySQL手册时,看到根据天数计算访问量时,出现了BIT_COUNT()和BIT_OR()两个函数来处理天数计算的问题 所使用的表格信息如下: mysql> select year,mon ...
- win8、win8.1官方版本、及安装密钥
云盘地址:Windows 8 简体中文专业版+核心版 MSDN 正式版(32位)http://pan.baidu.com/s/1eQgiAiQSHA1:0C4A168E37E38EFB59E88443 ...