android学习笔记NO.5

Intent 可以理解为信使

由Intent来协助完成android各个组件之间的通讯。

感觉基础薄弱就又复习了一遍基础知识,整理了一遍!

gen 保存自动生成的R资源文件夹

gen->com.android.helloworld.activity 包名称

R.java 项目自动生成的资源索引类

Android 2.3.3->android.jar Android SDK Jar 文件

assets 保存原始资源的文件夹

res 资源文件夹

drawable 保存图片等资源文件夹

drawable-icon.png 图标文件

layout 界面布局文件

layout->main.xml 界面布局文件

values 简单值配置文件夹

values->strings.xml 字符串配置文件

AndroidMainfest.xml Android配置清单文件

default.xml 属性文件

pt:是屏幕的物理尺寸,大小为1英寸的1/72.

android:textScaleX 设置文字之间间隔,默认为1.0f

android:textColorLink 文字连接的颜色

android:textColorHint 设置提示信息文字的颜色,默认为灰色。与hint一起使用。

android:textColorHighlight: 被选中文字的底色,默认为蓝色。

android:textAppearance: 设置文字外观。eg:?android:attr/textAppearanceLargeInverse 这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。

android:shadowDx: 设置阴影横坐标的起始位置。

android:shadowDy:设置阴影纵坐标的起始位置。

android:shadowRadius 设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。

android:shadowColor: 指定文本阴影的颜色,需要与shadowRadius一起使用。

android:phoneNumber: 设置为电话号码的输入方式。

android:password 以密码的形式,一小数点的形式显示。

android:ems 设置textview的宽度为N个字符的宽度。当与minEms和maxEms同时使用时覆盖ems选项。

android:marqueeRepeatLimit 在ellipsize属性为marquee的时候,设置跑马灯重复滚动的次数,当设置为marquee_forever时,表示一直重复。

android:bufferType 指定getText() 方式取得的文本类别。

一个android应用程序由四部分组成:

1.activity

2.Intent Receiver

3.Service

4.Content Provider

1.一个activity通常在应用程序中是一个单独的屏幕。每一个activity是被实现作为一个继承于Activity基类的单独的类。class 将要 显示一个由view和响应事件组成的用户界面。多数应用程序由多个屏幕组成。例如:一个文本消息发送程序可能有一个显示要发送信息的联系人列表的屏幕,有一个给选中的联系人编辑短信的屏幕,并且另外的屏幕显示以前信息或是更改设置。每一个这些屏幕应该作为一个Activity被实现。移动到另外的屏幕上是通过启动一个新的Activity来完成的。由于一些原因,一个Activity可能会向先前的Activity返回一个值–例如:一个让用户选择一个Photo的Activity将会返回选中的photo到caller应用程序上。当一个新的屏幕开启,先前的屏幕被暂停并且压入历史堆栈。用户可以向后导航返回到在历史记录中先前打开的屏幕。当它们遗留不恰当时,屏幕也可以选择从历史堆栈中删除。android为每一个从Home屏幕上运行的每一个应用程序保留历史堆栈。

2.Intent 和 Intent Filter

android使用一个名叫Intent的特殊类来让应用程序从一个屏幕移动到另一个屏幕。Intent描述一个应用程序的意图。Intent数据结构的两个重要的部分是:要相应的action和data。典型的action值是MAIN(应用程序的入口),VIEW,PICK,EDIT等等。DATA表示成一个统一资源定界符(URI),例如:要在浏览器中看一个网站,你将创建一个带偶VIEw action的Intent 和设置了网站URI的data。

Android应用程序基本功能单元式Activity 一个android.app.Activity类的物件(Object)。

被自己的应用程序编译的资源可以不用包套件名 直接

R.resource_type.resource_name就可以引用。Android包含了一些标准资源,例如,屏幕风格和按钮背景。为了将这些资源引用到代码中,必须用android来表述它们。android.R.drawable.button_background

UI – java 方式跳过了~~~

在Android中调试不能用System.out.println(…)来做,

Android提供了许多强劲的调试特性—LogCat

LogCat 是DDMS(Dalvik 调试监视器服务)的一部分。它提供了一个收集和查看系统调试输出的机制。来自不用应用程序的Log和系统部分被收集到可以查看和过滤的LogCat中。

V 详细信息

D 调试

I 信息

W 警告

E 错误

通过Intent可以进行Activity的跳转。下边是Activity跳转的代码,这里加红色有两个Activity,一个是Activity A,另一个是Activity B,代码如下:

Intent in = new Intent(A.this,B.class);

startActivity(in);

通过执行这两句代码,就可以实现从Activity A跳转到

Activity B。

与Intent有关系的一个类叫Intent Filters 如果Intent是一个有效请求,Intent Filters则用于描述一个Activity(或者Intent Receiver)能够操作哪些Intent。一个 Activity如果要显示一个人的联系方式时,需要声明一个Intent Filters ,这个Intent Filters 要知道怎么去处理VIEW动作和表示一个人的URI,Intent Filters 一般在AndroidManifest.xml中定义。

可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。BroadcastReceiver 不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。BroadcastReceiver 通过NotificationManager 来通知用户这些事情发生了!BroadcastReceiver 既可以在AndroidManifest.xml中注册,也可以在运行的代码中使用Context.registerReceivers()进行注册。只要注册了,当事件来临时,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用 Contest.sendBroadcast()将他们自己的intent broadcasts广播给其他应用程序。

Service 是一种程序,他可以运行很长的时间,但是他却没有用户界面。后台歌曲持续播放,这个播放就是播放音乐的Service进行控制的。通过startService(Intent service)可以来启动一个Service,通过Content.bindService() 可以绑定一个Service。

Content Provider

一个程序可以通过一个ContentProvider 的抽象接口将自己的数据暴露出去。外界通过这一套标准儿童椅的接口和里面的程序进行交互信息。达到读取,删除等操作!(当然有相应的权限的限制)

query(Uri,String[],String,String[],String):

通过查询关键字查询数据

insert(Uri,ContentValues):

将一组数据插入到指定的地方

update(Uri,ContentValues,String,String[]):

更新数据

delete(Uri,String,String[]):

删除数据

setContentView(R.layout.main)负责当前的Activity与main.xml相关联。

LinearLayout layoutMain = new LinearLayout(this);

//为了方便,自己构建一个Layout

layoutMain.setOrientation (LinearLayout.HORIONZONTAL);

//设置加入到这个LinearLayout中元素的布局方向为竖直方向

setContentView(layoutMain);

//将我们构建的layoutMain和此Activity进行关联。

LayoutInflater inflate = (LayoutInflater)getSystem.Service(Context.LAYOUT_INFLATER_SERVICE)

//得到一个LayoutInflater 对象。这个对象可以对XML的布局文件进行解析,并且生成一个View。

RelativeLayout layoutLeft = (RelativeLayout)inflate.inflate(R.layout.left,null);

//调用inflate方法将left.xml进行解析,并生成一个RelativeLayout布局。

RelativeLayout.LayoutParams relParam = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,

RelativeLayout.LayoutParams.WRAP_CONTENT);

//生成一个RelativeLayout适用的LayoutParams。

layoutMain.addView(layoutLeft,100,100)

//将layout添加到layoutMain当中,其中第一个参数是添加进去的View,第二个参数是这个View的高度,第三个是宽度。

layoutMain.addView(layoutRight,relParam)

//将layoutRight 添加到layoutMain当中,第二个参数就是RelativeLayout.LayoutParams

LayoutInflater

这个类用来将xml的布局文件变成一个View的类。出于性能上的考虑,从xml的布局文件生成一个View类这个过程是在应用的构建阶段完成的,而不是在应用运行阶段进行的。典型的使用过程是在Activity的oncreate方法里变,代码如下:

LayoutINflater inflate = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

LinearLayout layout = (LinearLayout)inflate.inflate(R.layout.ex01_05,null);

LayoutInflater 类通过getSystemService 方法来获得,而不能直接实例化。这个类负责将一个xml的布局文件实例化,从而在代码中可以应用到xml定义的组件。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 15:34:57

android学习笔记NO.5的相关文章

Android学习笔记——关于onConfigurationChanged

从事Android开发,免不了会在应用里嵌入一些广告SDK,在嵌入了众多SDK后,发现几乎每个要求在AndroidManifest.xml申明Activity的广告SDK都会要求加上注明这么一句属性: android:configChanges="orientation|keyboard|keyboardHidden" 通过查阅Android API可以得知android:onConfigurationChanged实际对应的是Activity里的onConfigurationChan

Android学习笔记18:自定义Seekbar拖动条式样

Android学习笔记18:自定义Seekbar拖动条式样

Pro Android学习笔记(三三):Menu(4):Alternative菜单

什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供.我们将相关信息存储在一个intent中,例如该文本的Uri.这个intent可以匹配系统的多个应用,替代菜单将这些应用一一列出,菜单项的title就是该可被调用的activity的名字,图标也为该可被调用的activity的图表. 小例子说明 我们通过一个小例子进行学习,简单地打开一个URL:we

Android学习笔记(二二): 多页显示-Tag的使用

在手机屏幕中,Tab也是比较常用的,通常和List结合,例如我们手机的通信录.下面是Tag的结构. TabHost是整个Tab的容器,包括两部分,TabWidget和FrameLayout.TabWidget就是每个tab的标签,FrameLayout则是tab内容. 如果我们使用extends TabAcitivty,如同ListActivity,TabHost必须设置为@android:id/tabhost TabWidget必须设置android:id为@android:id/tabs F

android学习笔记--android启动过程之init.rc文件浅析

1.  init.rc文件结构文件位置:init.c  : /system/core/initinit.rc  : /system/core/rootdir 首先init.rc文件是以模块为单位的,每个模块里的内容都是一起执行的,模块分为3种类型:on.service.import.我们可以看下init.rc文件是怎么写的:1.import import /init.usb.rc import /init.${ro.hardware}.rc import /init.trace.rc 上面的内容

android学习笔记——利用BaseAdapter生成40个列表项

RT: main.xml ? 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"               android:orientation="vertical"        

Android学习笔记_78_ Android开发中使用软引用和弱引用防止内存溢出

在<Effective Java 2nd Edition>中,第6条"消除过期的对象引用"提到,虽然Java有 垃圾回收机制,但是只要是自己管理的内存,就应该警惕内存泄露的问题,例如的对象池.缓存中的过期对象都有可能引发内存泄露的问题.书中还提到可以用 WeakHashMap来作为缓存的容器可以有效解决这一问题.之前也确实遇到过类似问题,但是没有接触过"弱引用"相关的问题,于是查阅了一些资料. <Java 理论与实践: 用弱引用堵住内存泄漏>

Android学习笔记(十四)——在运行时添加碎片(附源码)

在运行时添加碎片 点击获取源码 将UI分割为多个可配置的部分是碎片的优势之一,但其真正强大之处在于可在运行时动态地把它们添加到活动中. 1.使用上一篇创建的Fragments项目,在main.xml文件中注释掉两个<fragment>元素: 2.在FragmentActivity.java中添加下面的代码: FragmentManager fragmentManager = getSupportFragmentManager();//向活动添加碎片 FragmentTransaction fr

Android学习笔记(十五)——碎片的生命周期(附源码)

碎片的生命周期 点击下载源码 与活动类似,碎片具有自己的生命周期.理解了碎片的生命周期后,我们可以在碎片被销毁时正确地保存其实例,在碎片被重建时将其还原到前一个状态. 1.使用上一篇的项目Fragments,在Fragment1.java文件中添加如下代码: package net.zenail.Fragments; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragm

[Android学习笔记]Unable to execute dex Multiple dex files define:xxxx 问题

不同情况可能会出现这个问题,我遇到的问题是: 引入的多个jar包中,其中可能是第三方的SDK,但是其中可能使用了比较流行的开源框架,此时你项目中就有两套包名一样的代码,编译没问题,部署到手机之后就报如上错误 解决办法是: 把第三方jar包包含的开源代码删掉即可 比如: 项目中使用了android-async-http.jar , 同时引入 xxxxx.sdk.jar , 而由于xxxxx.sdk.jar中也引入了android-async-http.jar所以出现以上错误 解决步骤: 1.修改x