这里整理我自己学习的一些Android基础知识点,便于日后巩固用(大家可以忽略)。
Android工程目录结构
res:放置应用 程序 用到的资源 文件。其包含(Drawable,layout,values等目录)。当这个目录下的文件发生变化时,src目录下面的R.java就会自动发生变化。
assets:主要放置多媒体等数据 文件 。
res/drawable:放置应用到的图片资源。
res/layout:放置一些与UI相应的布局文件,都是xml文件。
res/values:放置字符串,颜色,数组等常量数据。
AndroidManifest.xml:相当于应用的配置文件。在此文件里必须声明应用的名称,应用所用到的Activity,Service,Reveiver等。
Android四大基本组件
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。
Android Log
android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR。
1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");
2、Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.
3、Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
4、Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
5、Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。
Activity
新建Activity过程
1.新建class:new--》class---》填写name,选择Source folder和Package---》填写superclass为android.app.Activity
2.新建一个XML文件,要和main文件同路径,名字可以自己命名,然后自己布局,测试的话,把main重命名就可以了。
3.在AndroidManifest.xml里注册。
在application节点里加入
/>
4.编译,运行,就可以了啊。
注:android.intent.category.DEFAULT,是一种默认的category,在调用startActivity方法时会自动添加到Intent中。
每个Intent中只能指定一个action,但却能指定多个category。
2、对应函数调用方法:
Android的五大布局对象
它们分别是FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局).
android开发中经常看到@Override是什么意思呢?
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的(它以为这个方法是你的子类中自己增加的方法)
@+id
Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的id属性值。id属性只能接受资源类型的值,也就是必须以@开头的值,例如,@id/abc、@+id/xyz等。
如果在@后面使用“+”,表示当修改完某个布局文件并保存后,系统会自动在R.java文件中生成相应的int类型变量。变量名就是“/”后面的值,例如,@+id/xyz会在R.java文件中生成int xyz = value,其中value是一个十六进制的数。如果xyz在R.java中已经存在同名的变量,就不再生成新的变量,而该组件会使用这个已存在的变量的值。
也就是说,如果使用@+id/name形式,当R.java中存在名为name变量时,则该组件会使用该变量的值作为标识。如果不存在该变量,则添加一个新的变量,并为该变量赋相应的值(不会重复)。
既然组件的id属性是一个资源id就可以,那么自然可以设置任何已经存在的资源id值,例如,@drawable/icon、@string/ok、@+string/you等。当然,也可以设置android系统中已存在的资源id,例如,楼主提出的@id/android:list,那么这个android是什么意思呢,实际上,这个android就是系统的R类(在R.java文件中)所在的package。我们可以在Java代码编辑区输入android.R.id.,就会列出相应的资源id,例如,也可以设置id属性值为@id/android:message。
android:layout_height="wrap_content"/>
还有另外一种方法查看系统中定义的id,进入
若在ids.xml中定义了ID,则在layout中可如下定义@id/price_edit,否则@+id/price_edit
常用函数:
findViewById()通过id返回相应View类
XXX.setOnClickListener()向OnClickListener监听器注册
setContentView(R.layout.XX)显示对应layout
requestWindowFeature(Window.FEATURE_NO_TITLE);隐藏标题栏,注:要在setContentView()之前执行
startActivity(intent); 启动相应的activity
finish(); 销毁一个活动。
getClass().getSimpleNmae(); 获取当前实例的类名。我们可以新建BaseActivity类,让其他类继承BaseActivity而不是Activity,并调用此函数,则可以知晓当前是在哪个活动。
XML
注释:
添加注释:选中你要注释的代码->ctrl+shift+/
去掉注释:选中你要去掉注释的代码->ctrl+shift+\
XML文档常用标志:
android:orientation排列方向,取值:vertical,horizontal
android:visibility可见属性,取值:visible,invisible,gone,默认值为visible
android:textSize字体大小
android:textColor字体颜色
android:layout_width控件宽度
android:layout_height控件高度,取值:match_parent,fill_parent,wrap_content
android:scaleType 取值:fitXY图片填充整个控件大小
android:gravity文字对齐方式,取值:top,bottom,left,right,center等,可以用“|”来同时制定多个值。
EdiitText控件:
android:hint显示提示性文字
android:maxLines限制多少行
常用控件
TextView文本
EditText输入框
ProgressBar进度条
AlertDialog弹出一个对话框
ProgressDialog弹出一个有进度条的对话框
ScrollView
XML文档命名
布局文件名称只能由 1. 小写英文字母 a - z 2. 数字 0 - 9 3. 点号‘.’ 4. 下划线 组成, 并且只能以小写字母开头。
HTTP协议
要使用网络功能则需要在AndroidManifest.xml文件中加入权限说明:
WebView类
实现网页加载
HttpURLConnection
线程
Android的UI是线程不安全的。即,如果想要更新应用程序的UI元素,则必须在主线程中进行,否则会出现异常。
异步消息处理:
Android提供了一套异步消息处理机制,解决了子线程中进行UI操作的问题。Android的异步消息处理主要有四个部分组成:Message,Handler,MessageQueue和Looper。简单的,在子线程中用Message(android.os.Message)对象来传递数据,在主线程中用Handler的handleMessage()方法处理。
Android工程目录结构
res:放置应用 程序 用到的资源 文件。其包含(Drawable,layout,values等目录)。当这个目录下的文件发生变化时,src目录下面的R.java就会自动发生变化。
assets:主要放置多媒体等数据 文件 。
res/drawable:放置应用到的图片资源。
res/layout:放置一些与UI相应的布局文件,都是xml文件。
res/values:放置字符串,颜色,数组等常量数据。
AndroidManifest.xml:相当于应用的配置文件。在此文件里必须声明应用的名称,应用所用到的Activity,Service,Reveiver等。
Android四大基本组件
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。
Android Log
android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR。
1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");
2、Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.
3、Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
4、Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
5、Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。
Activity
android 生命周期的认识
创建:onCreate();---->onStart();---->onResume();;
activity跳转其他 :onPause();---->onStop();;
跳转到activity2 :onCreate();---->onStart();---->onResume();;
activity2返回回来:onRestart()---->onStart();---->onResume();;
锁屏:onPause();;
解锁回来:onResume();;
新建Activity过程
1.新建class:new--》class---》填写name,选择Source folder和Package---》填写superclass为android.app.Activity
2.新建一个XML文件,要和main文件同路径,名字可以自己命名,然后自己布局,测试的话,把main重命名就可以了。
3.在AndroidManifest.xml里注册。
在application节点里加入
/>
4.编译,运行,就可以了啊。
Activity之间的调用通过创建一个actionStart()来传递变量
在SecondActivity类中建立一个static的actionStart()方法:
public static void actionStart(Context context, String str1, String str2){
Intent intent = new Intent(context,SecondActivity.class);
intent.putExtra("str1", str1);
intent.putExtra("str2", str2);
context.startActivity(intent);
}
可用以下代码获取数据:
getIntent().getStringExtra("str1");
注:android.intent.category.DEFAULT,是一种默认的category,在调用startActivity方法时会自动添加到Intent中。
每个Intent中只能指定一个action,但却能指定多个category。
2、对应函数调用方法:
Android的五大布局对象
它们分别是FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局).
android开发中经常看到@Override是什么意思呢?
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的(它以为这个方法是你的子类中自己增加的方法)
@+id
Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的id属性值。id属性只能接受资源类型的值,也就是必须以@开头的值,例如,@id/abc、@+id/xyz等。
如果在@后面使用“+”,表示当修改完某个布局文件并保存后,系统会自动在R.java文件中生成相应的int类型变量。变量名就是“/”后面的值,例如,@+id/xyz会在R.java文件中生成int xyz = value,其中value是一个十六进制的数。如果xyz在R.java中已经存在同名的变量,就不再生成新的变量,而该组件会使用这个已存在的变量的值。
也就是说,如果使用@+id/name形式,当R.java中存在名为name变量时,则该组件会使用该变量的值作为标识。如果不存在该变量,则添加一个新的变量,并为该变量赋相应的值(不会重复)。
既然组件的id属性是一个资源id就可以,那么自然可以设置任何已经存在的资源id值,例如,@drawable/icon、@string/ok、@+string/you等。当然,也可以设置android系统中已存在的资源id,例如,楼主提出的@id/android:list,那么这个android是什么意思呢,实际上,这个android就是系统的R类(在R.java文件中)所在的package。我们可以在Java代码编辑区输入android.R.id.,就会列出相应的资源id,例如,也可以设置id属性值为@id/android:message。
android:layout_height="wrap_content"/>
还有另外一种方法查看系统中定义的id,进入
若在ids.xml中定义了ID,则在layout中可如下定义@id/price_edit,否则@+id/price_edit
常用函数:
findViewById()通过id返回相应View类
XXX.setOnClickListener()向OnClickListener监听器注册
setContentView(R.layout.XX)显示对应layout
requestWindowFeature(Window.FEATURE_NO_TITLE);隐藏标题栏,注:要在setContentView()之前执行
startActivity(intent); 启动相应的activity
finish(); 销毁一个活动。
getClass().getSimpleNmae(); 获取当前实例的类名。我们可以新建BaseActivity类,让其他类继承BaseActivity而不是Activity,并调用此函数,则可以知晓当前是在哪个活动。
XML
注释:
添加注释:选中你要注释的代码->ctrl+shift+/
去掉注释:选中你要去掉注释的代码->ctrl+shift+\
XML文档常用标志:
android:orientation排列方向,取值:vertical,horizontal
android:visibility可见属性,取值:visible,invisible,gone,默认值为visible
android:textSize字体大小
android:textColor字体颜色
android:layout_width控件宽度
android:layout_height控件高度,取值:match_parent,fill_parent,wrap_content
android:gravity文字对齐方式,取值:top,bottom,left,right,center等,可以用“|”来同时制定多个值。
android:padding和android:layout_margin 。padding是站在父view的角度描述问题,它规定它里面的内容必须与这个父view边界的距离。margin则是站在自己的角度描述问题,规定自己和其他(上下左右)的view之间的距离,如果同一级只有一个view,那么它的效果基本上就和padding一样了
EdiitText控件:
android:hint显示提示性文字
android:maxLines限制多少行
常用控件
TextView文本
EditText输入框
ProgressBar进度条
AlertDialog弹出一个对话框
ProgressDialog弹出一个有进度条的对话框
ScrollView
XML文档命名
布局文件名称只能由 1. 小写英文字母 a - z 2. 数字 0 - 9 3. 点号‘.’ 4. 下划线 组成, 并且只能以小写字母开头。
HTTP协议
要使用网络功能则需要在AndroidManifest.xml文件中加入权限说明:
WebView类
实现网页加载
HttpURLConnection
线程
Android的UI是线程不安全的。即,如果想要更新应用程序的UI元素,则必须在主线程中进行,否则会出现异常。
异步消息处理:
Android提供了一套异步消息处理机制,解决了子线程中进行UI操作的问题。Android的异步消息处理主要有四个部分组成:Message,Handler,MessageQueue和Looper。简单的,在子线程中用Message(android.os.Message)对象来传递数据,在主线程中用Handler的handleMessage()方法处理。
碎片(Fragment)