Android 基础知识点

这里整理我自己学习的一些Android基础知识点,便于日后巩固用(大家可以忽略)。



Android工程目录结构

Android 基础知识点_第1张图片

 

 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() 。根据首字母对应VERBOSEDEBUG,INFOWARNERROR

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节点里加入
    android:name="youractivityname"
  />
4.编译,运行,就可以了啊。


显式Intent
在onClick()响应函数中添加:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);

隐式Intent
1、在AndroidManifest.xml中的新Activity中添加代码:

/>

/>

/>

注:android.intent.category.DEFAULT,是一种默认的category,在调用startActivity方法时会自动添加到Intent中。

每个Intent中只能指定一个action,但却能指定多个category。

2、对应函数调用方法:

Intent intent = new Intent(“com.example.[类名].ACTION_START");
intent.addCategory("android.intent.category.MY_CATEGORY");
startActivity(intent);
更多隐式Intent用法

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
注: Uri.parse()方法将一个网址字符串解析成一个Uri对象。再调用Intent的setData()方法将Uri对象传递进去。


Android的五大布局对象

它们分别是FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局).


android开发中经常看到@Override是什么意思呢?

@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 
1、可以当注释用,方便阅读 
2、编译器可以给你验证@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_width="wrap_content"
      android:layout_height="wrap_content"/>
还有另外一种方法查看系统中定义的id,进入\platforms\android-1.5\data\res\values目录,找到ids.xml文件,打开后,内容如下:


false
false

若在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文件中加入权限说明:

dxrf

WebView类

实现网页加载


HttpURLConnection


线程

Android的UI是线程不安全的。即,如果想要更新应用程序的UI元素,则必须在主线程中进行,否则会出现异常。

异步消息处理:

Android提供了一套异步消息处理机制,解决了子线程中进行UI操作的问题。Android的异步消息处理主要有四个部分组成:Message,Handler,MessageQueue和Looper。简单的,在子线程中用Message(android.os.Message)对象来传递数据,在主线程中用Handler的handleMessage()方法处理。



Android工程目录结构

Android 基础知识点_第2张图片

 

 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() 。根据首字母对应VERBOSEDEBUG,INFOWARNERROR

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节点里加入
    android:name="youractivityname"
  />
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");


显式Intent
在onClick()响应函数中添加:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);

隐式Intent
1、在AndroidManifest.xml中的新Activity中添加代码:

/>

/>

/>

注:android.intent.category.DEFAULT,是一种默认的category,在调用startActivity方法时会自动添加到Intent中。

每个Intent中只能指定一个action,但却能指定多个category。

2、对应函数调用方法:

Intent intent = new Intent(“com.example.[类名].ACTION_START");
intent.addCategory("android.intent.category.MY_CATEGORY");
startActivity(intent);
更多隐式Intent用法

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
注: Uri.parse()方法将一个网址字符串解析成一个Uri对象。再调用Intent的setData()方法将Uri对象传递进去。


Android的五大布局对象

它们分别是FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局).


android开发中经常看到@Override是什么意思呢?

@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 
1、可以当注释用,方便阅读 
2、编译器可以给你验证@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_width="wrap_content"
      android:layout_height="wrap_content"/>
还有另外一种方法查看系统中定义的id,进入\platforms\android-1.5\data\res\values目录,找到ids.xml文件,打开后,内容如下:


false
false

若在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文件中加入权限说明:

dxrf

WebView类

实现网页加载


HttpURLConnection


线程

Android的UI是线程不安全的。即,如果想要更新应用程序的UI元素,则必须在主线程中进行,否则会出现异常。

异步消息处理:

Android提供了一套异步消息处理机制,解决了子线程中进行UI操作的问题。Android的异步消息处理主要有四个部分组成:Message,Handler,MessageQueue和Looper。简单的,在子线程中用Message(android.os.Message)对象来传递数据,在主线程中用Handler的handleMessage()方法处理。


碎片(Fragment)

碎片的状态有4种:运行状态、暂停状态、停止状态和销毁状态。
在Fragment中使用getActivity()来获取当前Activity对象


super.onCreate(savedInstanceState)
super.onCreate(savedInstanceState)是调用父类的onCreate构造函数,一般父类函数放在开头调用(否则有可能会报错),再在后面扩展我们的方法。


android缓存数据到本地放在哪儿最好?
1、通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项
2、Context.getFilesDir()可以获取到"/data/data//files" 这个方法获取的目录不是在sdcard上,而是在应用安装的目录
Context.getCacheDir可以获取到"/data/data//cache" 这个方法获取的目录不是在sdcard上,而是在应用安装的目录,这个文件里面的数据在设备内存不足的时候,会被系统删除数据。注意:你不能依赖系统帮你删除这些文件,当这个文件夹里面的数据超过1MB的时候,系统会删除这个文件夹里面的数据。
我个人理解可以将应用的当前登录用户的信息等 保存在cache目录中。


你可能感兴趣的:(Android 基础知识点)