Android学习笔记

androiddev:lookslikehtmldev

基本开发套路:

获得组件findXXXById(R.id.XXX)

添加事件addXXXListener()

常用事件:click,longClick,touch,key,focus

一个重要问题:主线程即UI线程不能阻塞,会带来糟糕的用户体验,并且会使系统弹出警告。

方案一,将耗时任务放入新线程。

缺点:如果需要在新线程中修改view的属性,需要调用view.post(),而不能直接调用,否则会报错。并且这种方法会带来很多冗余代码,不好维护。

方案二,创建SyncTask,实现任务方法和回调方法。

context:两种上下文,就像web开发中request,session,application

ActivityContext,整个activity周期,时间短

ApplicationContext,整个应用周期,时间长

弹出框:

Toast=Alert

通知:

NotificationCompat:创建一个notify对象,可以定义:Title,Content,Ticker,Icon

NotificationManager:弹出一个notify对象

资源管理:

常用res,不常用asset

三种引用res的方式:

代码:

Resourcer=context.getResources()

R.资源类型.资源名称

XML:

@[包名称:]资源类型/资源名称

资源结构:

res/

drawable:图片

menu:菜单

xml:

values/

dimens:尺寸

string:字符串

color:颜色

组件:

view:widget一般组件

viewgroup:layout组件容器

组件分类:

1,基础:TextView,EditText,Button

2,选择:TimerPicker,DatePicker

3,列表:ListView,Spinner

4,显示图片:Gallery,ImageSwitcher

5,菜单:

6,其他:AnalogClock和DigitalClock

组件大小属性:

相对设置:

layout_width

layout_height

可选值:

wrap_content包裹内容,即随着内容增大或减小

fill_parent填满父容器,一旦设定,其他大小属性就不起作用

绝对设置:

宽度:

大小:width,maxWidth,minWidth

字符个数:ems,maxEms,minEms,MaxLenght

singleLine单行,显示不下会显示省略号

高度:

大小:height,maxHeight,minHeight

字符行数:lines,maxLines,minLines

行间距:lineSpacingExtra

组件字体

颜色:textColor

文字大小:textSize单位sp

文本位置:gravity如center

常用组件:

ImageView:图片

srcdrawable中的资源

按钮:

Button

ImageButtonsrc

ToggleButtontextOn,textOff

Radio:

RadioGrouponCheckedChangeListener

RadioButtontext,tag常用来展示,数据的存储

Checkbox:

CheckBoxonCheckedChangeListener

Spiner:下拉列表

entries下拉数组

spinnerMode模式,dialoge,dropdown

可添加adapter作为数据,extendsBaseAdapter重点实现getCount(),getView()

选中事件:setOnItemSelectedListner()

AlertDialog:弹出框

Builder

title,message,

三按钮:positiveButton,negativeButton,NeturalButton

选项:items

单选:singleChoiceItem

多选:mutiChoiceItem

自定义:view使用viewinflator

布局

线性布局:table布局

LinearLayout

orientation=verticalorhorizontal

gravity=center

weight按比重,在子组件中设置

代码动态生成布局:

1,纯代码,很少用

2,通过LayoutInflator加载可重用xmllayout

Viewv=getLayoutInflator().inflate(R.layout.xxx,null);

this.layout.addView(v);

相对布局:div+css

RelativeLayout

位置:layout_above/below/toLeftOf/toRightOf

偏移:layot_marginTop/Buttom/Left/Right

对齐:layout_alignXXX

帧布局:

FrameLayout

表格布局

TableLayout

滚动条布局

ScrollView

ListView

BaseAdapter灵活

ArrayAdapter  简单

SimpleAdapter  简单

SimpleCursorAdapter  数据库

divider,dividerHeight  分割线颜色和厚度

headView,footView   头部和尾部自定义

GridView:网格

adapter

column列

Gallery:画廊

adapter

onItemSelected 点击

GalleryParam宽高

DatePicker:日期选择

init默认值,选择后的回调函数

calanderViewShow默认会显示日期选择框

TimePicker:时间选择

setIs24HoursView24小时制

XXXDialog:弹出框式日期时间选择

ProgressBar:进度条

默认是圆圈,长条形需要设置style="@android:style/Widget.ProgressBar.horizontal"

ProgressDialog

异步处理方式

Handler要在主线程中声明,耗时任务在新线程中执行,执行后,调用Handler的sendMessage可以发消息,通知CallBack;

CallBack中实现handleMessage可以处理消息,完成控件更新;

Activity

->Windows

->XXXLayout

->Component

name,label

推荐使用wizard生成

跳转

Intentintent=newintent();

intent.setClass(this,SecondActivity.class);

startActivity(intent)

Android的返回按钮,会回退Activity

传值:

intent.putExtra();

拿值:

Intentintent=this.getIntent()

intent.getStringExtra();

setContentView(R.layout.myactivity)只是重绘,不会进activity栈

相互传递数据

原Activity调用startActivityForResult()跳转

后Activity调用setResult()返回数据

原Activity重写onActivityResult()接收数据

疯狂Android笔记:

第一章

发展和历史

历史讲解很有趣,多点图片,增加熟悉感

//框架特性对于初学者不友好

搭建开发环境

//常用开发工具的用法对于初学者不友好

第一个程序的简单讲解还可以

Activity,layout

结构分析没有必要手动创建

R与res

AndroidManifest.xml

基本组件的介绍还可以

//签名对初学者不友好

第二章

要点太多了吧

属性完全没有分类讲解,看完就忘

容器

ViewGroup

控制子组件:ViewGroup.LayoutParams,ViewGroup.MarginLayoutParams

layout_height,layout_width:fill_parent/match_parent,wrap_content

组件的大小由自己的大小和上面的布局大小控制,推荐使用布局大小控制,这样就会使界面有平台无关性

完全代码控制UI界面:烦琐

完全XML控制UI界面:不灵活

结论:混合控制

//例子并不高明

自定义组件界面:

//方法太多,例子不是很贴切

线性布局:不会换行

//属性讲解没有分类

表格布局:

一个TableRow就是一行,TableRow里面的每个组件就是一列

帧布局:

//霓虹灯例子倒是有创意,但是却忘记先讲线程了

组件

View

相关推荐