安卓项目的目录结构:
1. src .java源文件
2. gen 文件都是自动生成的(不要修改,不要删除)
该文件夹下面有个R.java文件,R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。R.java文件中定义了一个类——R,R类中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引。
3. assets 项目开发中用到的资源 源生文件
4. bin 生成安装文件 .apk
5. libs 第三方的类库 .jar
6. res -resource项目中的资源 资源文件夹
所有资源 都会生成一个唯一的编号
通过编号 来使用这个资源
使用方式:
1.资源之间相互使用:@类别/编号
2.在类文件中使用:R.类别.编号
要求:同一文件夹下,不要有同名文件
文件名必须使用小写字母,数字不能开头,可以使用下划线
drawable:图片资源
Layout:布局
7. AndroidManifest.xml
清单文件:
1. sdk的版本号
2. 包名
3. 项目版本号
4. 组件清单,权限
项目的总配置文件,记录应用中所使用的各种组件。这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。
四大组件:1.活动:界面 可以看见的 Activity类
2.服务:后台执行 看不见
3.广播接收器:
4.内容提供者:应用程序之间共享数据、
创建一个Activity
1>新建一个类 继承 Activity
public class MainActivity extends Activity {}
2>新建layout资源
通过R.layout.xxx调用
3>在Activity类中重写onCreat()方法
4>在方法中写入代码:setContentView(R.layout.xxx)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
5>在清单文件中注册
android:name="包名.类名">
触摸事件:
重写Activity中的方法
onTouchEvent(MotionEven event)
*判断event的action
Activity跳转
Intent intent=new Intent();
intent.setClass(从哪,到哪)
intent.setClass(this.XXActivity.class)
startActivity(intent);
@Override
public boolean onTouchEvent(MotionEvent event) {
//判断用户操作是否是抬起,界面的跳转
if(event.getAction()==MotionEvent.ACTION_UP){
//界面的跳转
//Intent intent=new Intent(this,SecondActivity.class);
//Intent intent=new Intent();
// intent.setClass(this, SecondActivity.class);
//startActivity(intent);
openActivity(SecondActivity.class);
}
return super.onTouchEvent(event);
}
*所有Activity的父类都是Context
Activity生命周期七大方法:(On方法 回掉方法 满足条件的时候自动调用)
1. onCreat 创建 :当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。 onCreate 方法有一个参数,该参数可以为空( null ),也可以是之前调用 onSaveInstanceState()方法保存的状态信息
2.onStart 启动:该方法的触发表示所属活动将被展现给用户
3.onRestar重启:当处于停止状态的活动需要再次展现给用户的时候,触发该方法
4.onResure获取焦点:当一个活动和用户发生交互的时候,触发该方法。
5.onPause暂停,失去焦点:当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法
6.onStop停止:当一个活动不再需要展示给用户的时候,触发该方法
7.onDestroy销毁
finish(); -->back
LogUtil
private final static String tag="Log标签";
private static boolean isDebug=true;
private static boolean isInfo=true;
private static boolean isWarning=true;
private static boolean isError=true;
public static void d(String tag,String msg){
if(isDebug){
Log.d(tag, msg);
}
}
public static void d(String msg){
if(isDebug){
Log.d(tag, msg);
}
}
public static void d(Context context,String msg){
if(isDebug){
Log.d(context.getClass().getSimpleName(), msg);
}
}
LogUtil.i(tag,msg);
LogUtil.i(msg);
LogUtil.i(this.getClass().getSimpleName(),msg);
封装BaseActivity -->继承Activity 共有的代码
//所有Activity共有特点
生命周期 方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LogUtil.i(this.getClass().getSimpleName()+":onCreate");
}
@Override
protected void onStart() {
super.onStart();
LogUtil.i(this.getClass().getSimpleName()+":onStart");
}
@Override
protected void onRestart() {
super.onRestart();
LogUtil.i(this.getClass().getSimpleName()+":onRestart");
}
@Override
protected void onResume() {
super.onResume();
LogUtil.i(this.getClass().getSimpleName()+":onResume");
}
@Override
protected void onPause() {
super.onPause();
LogUtil.i(this.getClass().getSimpleName()+":onPause");
}
@Override
protected void onStop() {
super.onStop();
LogUtil.i(this.getClass().getSimpleName()+":onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
LogUtil.i(this.getClass().getSimpleName()+":onDestroy");
}
界面跳转
protected void openActivity(Class