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方法