1.目录结构
src即源代码,gen文件夹为ADT插件自动生成的,包含R.java文件,Android4.2.2包含jar文件,assets可以放任何文件,res文件放入任何东西都会在R.java文件生成ID,可以通过引用R.java文件中生成文件ID
res中:
drawable-hdpi,ldpi,mdpi分别为高分辨率,低分辨率,低分辨率
layout放置布局文件,包含xml布局文件,控制MainActivity的布局
values放置应用程序用到的变量值,如strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">test</string>
<string name="hello_world">Hello world!</string>
</resources>
包含了键值对,也会在R.java中生成ID
AndroidMainfest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher" ->应用图标
android:label="@string/app_name" ->应用名字
android:theme="@style/AppTheme" >
<!-- 引用R.java -->
<activity
android:name=".MainActivity" ->注册Activity,记得加点
android:label="@string/app_name" >
<intent-filter> ->默认打开这个Activity
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
2.Activity
即一个可见界面,内置许多空间,比如button textview,是用户和应用程序交互接口,是一个空间容器。
package com.example.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {//继承Activity
@Override
protected void onCreate(Bundle savedInstanceState) { //Activity运行时调用的
super.onCreate(savedInstanceState); //继承父类
setContentView(R.layout.activity_main);
TextView tx =(TextView)this.findViewById(R.id.mytx);
Button bt =(Button)this.findViewById(R.id.mybutton);
}
}
布局文件.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:id="@+id/mytx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/mybutton"
android:layout_width ="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ok"
/>
</RelativeLayout>
会在R.java中生成layout
3.Intent 一个请求
当要启动某个Activity,要指定Component name
传递Action,做哪些动作,比如Action为ACTION_CALL则触发打电话功能
传递Data,传递数据
传递Extras,传递额外信息
第一个Activity中加入监听器,按钮监听
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tx =(TextView)this.findViewById(R.id.mytx);
Button bt =(Button)this.findViewById(R.id.mybutton);
bt.setOnClickListener(new ButtonListener()); //加监听器
}
class ButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent =new Intent();
intent.setClass(MainActivity.this,OtherActivity.class);//跳转class方法
MainActivity.this.startActivity(intent); //调用start方法
}
}
}
记得在文件中注册OtherActivity
传递数据:
MainActivity中监听的方法如下
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent =new Intent();
intent.putExtra("h", "k");
intent.setClass(MainActivity.this,OtherActivity.class);//跳转class方法
MainActivity.this.startActivity(intent); //调用start方法
}
public class OtherActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt = (Button)this.findViewById(R.id.mybutton);
Intent intent =getIntent();
String string = intent.getStringExtra("h");
bt.setText(string);
}
}
4.生命周期
七个生命周期函数
1、onCreate()
Acitivity首次创建时被调用。用于设置Acitivity的布局文件,绑定按钮监听器等一些普通静态操作。
2、onStart()
Acitivity对用户可见时被调用。
3、onResume()
Acitivity获得用户焦点,即用户可操作该Acitivity时被调用。
4、onPause()
应用程序启动了其它Acitivity时被调用。一般用于保存当前Acitivity中的数据。
5、onStop()
Acitivity不可见时被调用。
6、onRestart()
已停止的Acitivity重新启动时被调用。
7、onDestroy()
调用Acitivity的finish()方法或Android系统资源不足时被调用。
启动第二个Activity,会先调用第一个Activity的onPause方法,然后调用第二个Activity的onCreate方法,后调用onStart方法,最后调用onResume方法,再调用第一个Activity的onStop方法
再back之后,调第二个Activity的onPause方法,再调用第一个Activity的onRestart方法,然后再调用onStart,onResume,再调用第二个Activity的onStop方法,再调用第二个的onDestroy方法。
当再启动第二个Activity,会先调用第一个Activity的onPause方法,然后调用第二个Activity的onCreate方法,后调用onStart方法,最后调用onResume方法,再调用第一个Activity的onStop方法
当调用finish方法,会调用onDestroy方法,或者资源不够用时,会调用onDestroy方法。
当在代码中写入finish()方法,栈中的Activity被销毁掉了。
窗口类型的Activity的声明:
<activity
android:name=".OtherActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog"
>
</activity>
出现窗口类型的Activity时不会调用原先Activity的onStop方法