一、应用程序资源介绍
2.res资源文件夹
3.常用的资源及其所在文件夹
value资源:
1)string
2)color(argb,a:α通道,即透明度;r:red;g:green;b:blue)3)dimen 比较px(像素),dp(dip:与密度无关的相对像素),sp(与密度和范围都无关的像素)
px(screen pixels)像素
in(physical inches)英寸
pt(pysical points)点距
mm(physical millimeters)毫米
dp(density-independent pixels relative to a 160-dpi screen)密度无关像素
sp(scale-independent pixels)范围无关像素
[长宽高用dp]
[字体相关用sp]
4)array
5)Location a.value-fr
b.value-en
value资源
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">To Do List</string>
<color name="app_background">#FF0000FF</color>
<dimen name="default_border">5px</dimen>
<array name="string_array">
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
</array>
<array name="integer_array">
<item>3</item>
<item>2</item>
<item>1</item>
</array>
</resources>
style & theme
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="BaseText">
<item name="android:textSize">14sp</item>
<item name="android:textColor">#111</item>
</style>
<style name="SmallText" parent="BaseText">
<item name="android:textSize">8sp</item>
</style>
</resources>
drawable
drawable里面通常也会有跟界面元素美化相关的xml,可以参见系统应用程序的例子,
因此看到除了图片之外的xml不要惊慌
layout
anim(animation) 1.tweened animation(anim)
2.frame by frame animation(drawable)
<?xml version="1.0" encoding="utf-8">
<set xmlns:android="http://schemas.android.com/apl/res/android"
android:interpolator="@android:anim/acclerate_interploator">
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="500"
android:duration="1000"/>
<scale
android:fromXScale="1.0"
android:toXScale="0.0"66 CHAPTER 3 CREATING APPLICATIONS AND ACTIVITIES
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="500"
android:duration="500"/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:startOffset="500"
android:duration="500"/>
</set>
frame by frame animation(drawable)
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/rocket1" android:duration="500"/>
<item android:drawable="@drawable/rocket2" android:duration="500"/>
<item android:drawable="@drawable/rocket3" android:duration="500"/>
</animation-list>
menu(menu)
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_refresh"
android:title="Refresh"/>
<item android:id="@+id/menu_settings"
android:title="Setting"/>
</menu>
调用应用程序资源:
1)代码中调用
2)资源文件之间相互调用3)调用系统资源
4)指定当前主题的样式
指定当前主题格式
<EditText
android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/stop_message"
android:textColor="?android:textColor"/>
注:元素都要小写,
Manifest文件及其声明
1)应用程序的全局配置文件
2)应用程序的入口配置
1.Manifest结构预览
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<uses-permission /> -设置应用程序使用的权限
<permission /> - 自定义权限
<permission-tree /> - 自定义权限树 -方便我们有大量权限的时候,动态添加权限到树
<permission-group /> - 自定义权限组
<instrumentation / > - 测试构件(以单位测试为主)
<uses-sdk /> - 使用sdk版本
<uses-configuration />
<uses-feature />
<support-screens />
<compatible-screens />
<supports-gl-texture />
<application>
<activity>
<intent-filter>
<action />
<category />
<data />
</intent-filter>
<meta-data />
</activity>
<activity-alias>
<intent-filter>...<.intent-filter>
<meta-data/>
</activity-alias>
<service>
<intent-filter>...</intent-filter>
<meta-data/>
</service>
<receiver>
<intent-filter>...</intent-filter>
<meta-data />
</receiver>
<provider>
<grant-uri-permission>
<meta-data />
</provider>
<uses-library />
</application>
</manifest>
2.文件约定
1)Elements(元素)
a.元素全部用小写
b.<manifest><application>必须有且仅有一个
c.同一级别的元素顺序无关,除了<activity-alias>必须跟在<activity>之后
2)Attributes(属性)
a.属性都是可选的
b.除了<manifest>的属性,其他元素属性都有android:前缀,但在类里面,这些是去掉的
3)声明类的名称
<manifest...>
<application...>
<service android:name="com.example.project SecretService"...>
...
</service>
...
</application>
</manifest>
比较二者
<manifest package="com.example project"...>
<application...>
<service android:name="SecretService"...>
...
</service>
...
</application>
</manifest>
4)多值
<inten-filter...>
<action android:name="android.intent.action.EDIT|INSERT|DELETE" />
<action android:name="android.intent.action.INSERT" />
<action android:name="android.intent.action.DELETE" />
...
</intent-filter>
5)资源值
资源引用格式:
@[package:]type:name
比如:
<activity android:icon="@drawable/smallPic"...>
主题引用格式:
?[package:]type:name
3.Manifest的作用及使用举例
1)包的唯一指定名
2)Android四大组件的定义:Activity,Service,BroadcastReceiver,Content Provider
3)定义应用程序具备的权限
4)定义Instrumatation做自动化测试
5)定义应用程序所需的最小API版本号
6)列出应用程序所需要的类库
4.Manifest如何解析的?
如果你是设计,如何设计?
1)应用程序安装的时候,manifest信息会放到一张系统索引表里面
2)系统启动的时候,PackagedManageService读取Manifest信息
3)应用程序启动时候,Launcher进行系统级判断,比如zuixiaoSDK等
Lab:设定minSDK > 你当前机器或者模拟器版本,测试启动现象
4)四大组件在需要的时候实例化
Lab:不配置一个Activity(非主Activity),看看不调用的时候系统会是否异常
Android进程生命周期(Process Lifecycle)
Android5个进程等级
----------------------------------------------
1.Active Process | critical priorl↓ |
-----------------------------------------------
2.Visible Process | High Priority
↓ |
3.Started Service Process |
↓ |
-----------------------------------------------
|
4.Background Process | Low Priority
↓ |
5.Empty Process |
----------------------------------------------
1.Active Process
1)正处于Activity Resume()状态
2)正处于与bound服务交互的状态
3)正处于服务在前台运行的状态,(startForeground()被调用)
4)Service生命周期函数正在被执行(onCreate(),onStart(),onDestroy())
5)BroadcastReceiver正在执行onReceive()方法
杀死Foreground Process 需要用户响应,因为这个安全优先级是最高的
2.Visible Process
当前进程不是焦点进程,Activity不在前端显示,但也没有完全隐藏,能够看得见,比如弹出一个对话框。(Input Method)
一个bound到visible或者foreground的activity的Service
3.Service Process
正在运行的,不再上述两种状态的Service
4.Background Process
不可见状态的Activity进程,又没有任何相关的Service运行的(onStop()被调用),系统有个后台进程列表,一般情况采取后进先出的原则来释放后台进程资源
Android进程如何启动和消亡的?
AndroidApplication Class App Lifecycle event method
退出进程的两种方式
finish();//不会关闭进程,只是关掉当前Activity
system.exit(0);//0代表关闭所有进程
Process.killProcess(Process.myPid())
----------------------------------------------------------------------------------------------------------------
后续