Android学习笔记(一)

★布局。

相对布局

*停靠父控件边界(boolean) layout_alignParentTop(停靠父控件上边界); layout_alignParentRight ;layout_alignParentBottom;layout_alignParentLeft

*) 相对父控件居中(boolean) layout_centerHorizontal;layout_centerVertical ; layout_centerInParent

*) 对齐周围控件(指定ID) layout_alignTop ;layout_alignRight ;layout_alignBottom ;layout_alignLeft ;layout_alignBaseLine

*) 停靠周围控件(指定id) layout_above;layout_below;layout_toLeftOf; layout_toRightOf

线性布局:属性:◆orientation(方向,水平horiaental(默认)、vertical(纵向))

◆高度layout_height(或宽度layout_width)和比重layout_weight(控件按比例分配剩余空间)二者选一,设置weight(3),高度或宽度设为0dp);

◆layout_gravity(重力引力):水平布局中只能设置上(top)、中(center_vertial)、下(bottom);垂直布局:只能设置左(left)、中(center_horizental)、右(right);

表格布局:继承自线性布局,纵向排列;stretchColumns(拉伸到合适的列下标,传入1,2或列下标数)

帧布局:控件叠加显示(属性:layout_gravity:top、right、bottom、left、center、center_horizental、center_vertical)可两两组合使用属性(共9种),用|连接(如:中下:bottom|center_horizental)[主要用于滑入的菜单框]


★layout_marginBottom:xxdp;上下偏移偏移量,在程序中通过修改偏移量即可实现动画的效果;(包括marginTop、marginLeft、marginRight等)

网格布局:

◆columnCount:最大的列数;

layput_column:指定控件在第几列;

◆:留白(用于某个控件不显示,用空白进行填充);

layout_columnSpan:跨n列,但不拉伸,需用layout_gravity=fill_horizontal拉伸;

◆rowSpan:跨n行,用gravity=fill_vertical拉伸;

★[通用属性]

◆外边距:margin(四边一起设置)、marginTop、marginRight、marginBottom、marginLeft;

◆内边距:padding(四边一起设置)、paddingTop、paddingRight、paddingBottom、paddingLeft;

◆设置控件内部重力引力(控制控件内的内容):gravity(区别于layout_geavity:设置当前控件相对于父控件的重力引力(控制控件本身));

◆match_parent:匹配父容器大小;wrap_content:自适应内容;

◆背景:background;

◆是否为单行:boolean singLine


Android res目录

是一个资源目,包括:

◆图片; 布局资源;  文本、数组、颜色资源;  未编译的资源;

◆values 用于文本国际化(I18N):不同国家地区的用户。可使用本地文字;

values-zh-rCN:中国大陆;valures-zh-rHK:中国香港;values-en-rUS:美国;

◆资源访问工具:Resource;获得Resource实例:

getRessources();

getString(id);

getInteger(资源id);


★raw文件:原始格式的文件,不会被压缩(编译);默认没有,须在res文件夹下创建。只能读;对同一个资源若需国际化则放置在此文件夹中,并设定不同国家的文件夹。

手机中默认编码为UTF-8;

打开Raw文件输入流,用Resource的getResource. openRawResource(id);返回一个InputStream;可用一个BufferedReader接收,但必须指定编码,new BufferedReader(new InputStreamReader(in,”GBK”));

assets目录。资产

允许存放任意的文件、文件夹;但不会生成资源访问id;提供了专门的方法来获得文件输入流划列出文件列表;只能读出,不能写入;也不会被编译;

获得资产访问工具:String[]getAsset().list(path):获得子目录中的文件名称列表;getAsset().open(文件路径)、.open(文件、mode):获得文件输入流;[mode为固定参数:MODE_PRIVATE(默认):私有,只允许当前应用使用;……]

(此处assets即为相对根目录,注意添加“/”问题)

先把Asset文件复制到SD卡,才可进行更改和访问


Appliaction

在应用启动时,系统自动创建Application实例,并调用它的onCreat()方法。但系统默认的Application的onCreat()方法没有代码;

可继承Application,重写onCreat()方法,在应用启动时,执行自定义的一段代码。(多用于连网,初始化界面,拷贝数据等)

使用步骤:

继承并重写Application的onCreat方法

在清单中配置:在application中添加 name=”创建的类名”;在应用一启动就执行。

进程。在操作系统中,并行执行的任务。

线程。在进程内部并行的任务。


java中创建线程的两种方式:

●继承Thread;启动后直接执行内部代码;不可共享数据;

●实现Runnable接口;可放到其他线程中去执,new Thread(new runable).start()。可共享数据;

线程调度器。负责在多个线程间切换执行,为线程分配时间片;线程间竞争的关系;

线程状态。new  runnable  running  block(阻塞态) dead(消亡态,不能再启动);

线程在.start()后进入了runnable()后不一定就马上执行,只是进行了可运行态。

线程作用:

§将大的任务,切分为多个并行子任务;

§阻塞的代码要与其他代码并行;

§间隔执行的任务;

[sleep()和yield()是主动暂停和让出cpu,而interrupt()是被动打断、join()是被动暂停去执行另外调用此方法的线程。yield是让步给优先级相同的线程,若没有相同或更高优先级的线程则继续执行。]


◆推荐使用Runnable接口,还可继承其他类。

◆线程优先级越高,获得执行的机会就越多,但尽可能使用常量。

多线程共享数据。一个线程正在修改数据,另一个线程同时访问数据;

守护线程:

[守护线程即是将当前线程作为后台线程,一直执行,当其他线程结束时可不关闭这个线程直接退出。]

使用守护线程的时机:定时备份、计时器、GC-垃圾回收器;

.join()

在将一个计算分成若干个线程分别执行时,必须为每个线程争取到资源,故须加.join()方法,否则结果会不正确。可放到线程池中去执行

t1.join():等待调用该方法的线程结束后再继续执行本线程;在多个相同线程同时启动时就对每个线程调用此方法,用于平均每个线程的cpu操作时间,否则易出错。


★synchronized标记。同步标识,可修饰方法、代码块,但不能修饰构造器,属性;

让一个代码块执行完后再去执行另外一个代码块,过程为:加锁-修改-释放锁。其作用是多线程共享数据时的数据安全。有一个synchronized标识就会创建一个监视器。

◆将会产生争夺的资源作为synchronized的锁

◆一个线程执行到synchronized代码块时,必须先获得得到同步锁才能执行;

◆如果得不到同步锁,必须在synchronized代码块前等待;

◆非静态的同步方法(同步方法的同步锁为其本身this):获得当前对象的锁;

◆静态的同步方法:获得“类对象”的锁;

◆同步的代码块:synchronized(对象){.同步代码、集合.};

◆获得指定对象的锁:this、类对象、存在访问的数据对象、专门当作锁的对象;

线程安全:StringBuffer、Vector、HashTable

线程不安全:StringBuilder、ArrayList、HashMap

[线程安全是因为所有的方法加了synchronized关键字;对线程不安全的类、方法可加上synchronized关键字即成线程安全;但线程安全效率低,仅用于多线程时。]


★生产者消费者问题。

一种线程间通信

等待和通知机制。当生产者生产过多,若中间容器放满时就让生产者暂停等待一会儿,在中间容器上添加:wait();否则中间容器还可放了时就通知生产者继续生产,在中间容器上添加:notifyAll();消费者类似。

◆wait()外面总是一个循环判断 ,以对并发下的访问处理;

在等待wait()、通知notify()外面,必须有一个synchronized以创建一个监视器,在监视器中才可等待和通知。在执行wait()等待时会释放锁。

★线程本地共享ThreadLocal(绑定):在当前线程上,可以绑定一个数据,

当执行到后面组件代码时,可从当前线程获得数据

方法:

◆set(数据)   在当前线程绑定数据

◆get()       从当前线程获取数据

◆remove()    从当前线程移除数据

线程工具类

Timer / TimerTask:计时任务,用来执行定时任务,或间隔任务。

timer.schedule(new TimeTask(){..},..)


★线程池。典型使用:

ExecutorService pool = Executors.newCachedThreadPool();//创建一个线程池

for (inti = 0; i < 10000; i++) {

pool.execute(new runnable(i));  //把任务放入线程池,自动执行。

}

ExecutorService pool = Executors.newFixedThreadPool(3);//放入三个线程


●在异步任务中也提供了线程池:

Executor pool = AsyncTask.SERIAL_EXECUTOR;  //不定线程数

Executor pool= AsyncTask.THREAD_POOL_EXECUTOR;  //包含5个线程;足够;

Android都是单线程模型。所有的界面显示、用户操作、组件控制,必须在主线程执行。

◆若在主界面中处理大量运算超时后会出现ANR。

[ANR :Application Not Responding 应用无响应。主线程执行时,程序阻塞在一段代码中。主线程无法更新界面显示,也无法响应用户的其他操作;用户在界面点击后5秒后无响应就也弹出ANR;]

Android线程通信。如须在工作线程中要更新界面显示,要向主线程发送消息。自己定义的工作线程不能更新UI界面,只有在主线程中才能更新。


原文地址:Android学习笔记(一)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容