(一) 相关的文件
1、res 目录存在Android项目的各种资源:layout存放布局文件,values存放各种xml资源文件(字符串资源文件:strings.xml,颜色资源文件:colors.xml,尺寸资源文件:dimens.xml。 drawable-ldpi, drawable-mdpi, drawable-hdpi, drawable-xdpi 这4个子目录分别存放低分辨率,中分辨率,高分辨率,超高分辨率四种图片文件)。
2、src 一个普通的,保存java源文件的目录。
3、AndroidMainifest.xml是安卓项目的系统清单文件,用于控制安卓应用的名称、图标、访问权限等整体属性。安卓应用的Acitivity, Service, ContentProvider, BroadcastReceiver 四大组件都需要在该文件中配置。
4、build AS自动生成的各种源文件,包括R.java文件也放在该目录的子目录下面。
5、libs 存储安卓项目所需要的第三方JAR包。
6、src 存储安卓项目开发的各种源文件,包括各种java源文件、各种资源文件、和AndroidMainifest.xml文件。AndroidTest目录下存放安卓测试项目。
7、重点关注src res。
8、clean 清除项目生成的内容,也就是恢复原来的样子。
9、debug 打包一个调试用的安卓应用的APK包,使用debug key进行签名。
10、release 打包一个发布用的安卓应用的APK包。
11、install uninstall 将APK包安装到模拟器上,或者卸载。
12、bin 存放生成的目标文件,比如Java的二进制文件,资源打包文件(.ap后缀)。
13、gen 保存自动生成的,位于安卓项目包下的R.java 文件。
14、R.java 石油AAPT工具根据应用中的资源文件自动生成的,因此可以把R.java理解成安卓应用的资源文件。每类资源都对应于R类中的一个内部类,比如所有界面布局资源对应于layout内部类。每一个具体的资源项都对应于内部类的一个public static final int 类型的field。
(二)res 资源文件
① strings.xml中的string类型资源:
<resources>
<string name="app_name">HelloWorld</string>
</resources>
② 在Java代码中使用资源:
上面的内容对于与R.java中如下的内容:
public static final class string{ // 对应一个资源
public static final int app_name=0x7f040000; //对应一个资源项
}
借助AAPT自动生成R类的帮助,在java代码中国可以通过R。string.app_name应用到“HelloWorld”字符串常量。
③ 在XML中使用资源
使用如下的格式访问资源: @<资源对应的内部类的类名> / <资源项的名称>
eg: @string/app_name
在XML文件中使用标识符的时候,这些标识符无须使用专门的资源进行定义,直接在XML文档长按照如下的格式分配标识符即可:@+id/<标识符代号>
eg: android:id="@+id/ok" 该代码为该组件分配了一个标识符,接下来在程序中直接引用该组件就可以了。
在java中获取该组件,调用Activity的findViewById();
在xml中获取该组件,可以通过资源引用的方式来引用它:@id/<标识符代号>
(三) 清单文件 AndroidManifest.xml
通常包含以下的信息:
1 应用程序的包名,为该应用的唯一标识
2 应用程序所包含的组件,如Activity Service BroadcastReceiver ContentProvider 等
3 应用程序兼容的最低版本
4 应用程序使用系统所需的权限声明
5 其他应用程序访问该程序所需要的权限声明
android:icon="@drawable/ic_launcher",这说明该应用的图标为/res/drawable-l/m/hdpi目录下主文件名为icon的图片
声明权限:通过为<manifest.../>元素添加<uses-permission.../>子元素可以为程序本身声明权限。
eg: 添加 <uses-permission android:name="android.permission.CALL_PHONE"/>,声明该应用本身需要打电话的权限。
(四)基本组件
1、Activity 是安卓应用中负责和用户交互的组件,但是activity只能通过setContenyView(View)来显示指定的组件。
View组件是所有UI控件、容器控件的基类,View组件就是安卓应用中用户实实在在看到的部分。但是View组件需要放在容器组件或者使用activity来显示。
如果使用某个activity来显示指定的view,调用setContentView():
LinearLayout layout=new LinearLayout(this); // 创建一个线性布局管理器
setContentView(layout); //设置该activity显示layout
也可以接受一个布局管理器资源的ID作为参数:setContentView(R.layout.main);
activity为安卓应用提供了可视化的用户界面,如果安卓应用需要多个用户界面,那么这个安卓应用将会包含多个activity,多个activity构成activity栈,当前活动的activity位于栈顶。
activity包含了一个setTheme(int resid)方法来设置窗口的风格,比如希望窗口不显示ActionBar,以对话框形式显示窗口都可以通过这种方法来实现。
2、Service 拥有自己独立的生命周期。常用于为其他组件提供后台服务或者监控其他组件的运行状态。
3、BroadcastReceiver 代表广播消息接收器,监听事件源是安卓中其他的组件。
使用broadcastReceiver接受广播信息,只需要实现自己的BroadcastReceiver子类,并且重写onReceive(Context context, Intent intent)。当其他的组件通过sendBroadcast(), sendStickyBroadcast()或sendOrderedBroadcast()方法发送广播消息时,如果该broadcastReceiver对该消息有兴趣,onReceiver将会被触发。
注册:java: Context.registReceiver(); AndroidManifest.xml:<receiver.../>
4、contentProvider 跨应用的数据交换标准,用户实现自己的contentProvider时候,需要实现以下的抽象方法:
insert(Uri, ContentValues)
delete(Uri, ContentValues)
update(Uri, ContentValues, String, String[])
query(Uri, String[], String, String[], String)
ContentProvider提供自己的数据,ContentResolver访问数据。
(五)Intent && IntentFilter
安卓内不同组件之间通信的载体。
当需要启动一个activity时候,可以调用Context的startActivity(Intent intent) or startActivityForResult(Intent intent, int requestCode)。
当需要启动一个Service时候,调用Context的startService(Intent intent) or bindService(Intent service, ServiceConnection conn, int flags)。
当需要启动一个BroadcastReceiver时候,调用sendBroadcast(Intent intent) sendStickyBroadcast(Intent intent) or sendOrderedBroadcast(Intent intent, String receiverPermission)方法来发送广播消息。
显示Intent: 明确地制定需要启动或者触发的组件的类名;
隐式Intent: 只是指定需要启动或者触发的组件应该满足什么样的条件。
来源:https://www.cnblogs.com/conypan/p/6103488.html