android:layout_width=""(宽度) && android:layout_height=""(高度)
确定活动的大小。
选项有:"match_parent"同父进程一样; "wrap_content"视情况而定。
2、所有的活动都必须要在 AndroidManifest.xml 文件中注册,才能使用。大抵的内容如下:
<manifest xmlns="http://schemas.android.com/apk/res/android
package = "com.example.activitytest"> // package此处指向的是你的Java源包
<application
android:allowBackup = "true"
android:icon = "@mipmap/ic_launcher"
android:label = "@string/app_name" // application的默认名称,可以随意更改的内容。
android:supportsRtl = "true"
android:theme = "@style/AppTheme" // 选择 application 的主题。
<activity android:name = ".FirstActivity" // "."是省略了这个包的路径,和Unix的"."路径很像。
android:theme = "@style/....." // 可以为这一个activity定义一个主题。
android:label = "........"> // 单独定义这个 activity 的名称
<intent-filter>
<action android:name = "android.intent.action.MAIN" // 设置这个界面为主界面,即开启App时,进入的第一个界面。
<category android:name = "android.intent.category.LAUNCHER"/> // 设置category。
</intent-filter>
</activity>
</application>
</manifest>
活动的注册声明必须要放在 <application> 标签内,这里是通过 <activity> 标签来进行活动的注册的。"android:name" 用来确定具体注册那个活动。
<intent-filter> 声明在 <activity> 标签里面,其中"action android:name"只能有一个,"category"可以声明注册多个。
3、Toast的使用,在活动中。
Toast 是 android 系统提供的一个提醒方式,使用一些简短的信息通知用户,这些信息会在一段时间自动消失。
..... // 在 onCreate 方法中。
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override // 防止方法覆盖错误
public void onClick(View v) {
Toast.makeText(activity_name.this, "You", Toast.LENGTH_SHORT).show();
Toast.makeText(activity_name.this, "Y" + "ou", Toast.LENGTH_SHORT).show();
}
});
......
在活动中,可以通过 findViewById() 方法获取到在布局文件中定义的元素,参数为元素的 Id。Toast的makeText的参数,第一个为 Context,第二个为内容显示的,第三个为显示的时长(LENGTH_SHORT && LENGTH_LONG)。
3、menu的创建。
创建 menu 文件夹,在res里面,通过res->New->Directory;在创建一个文件在menu文件夹里。
<menu xmlns:android = "http://schemas.android.com/apk/res/android">
<item
android:id = "@+id/add_time"
android:title = "Add" />
<item
android:id = "@+id/remove
android:title = "Remove" />
</menu>
<item> 标签创建具体的某一个菜单项,android:id 來指定其中的唯一标识符,android:title 为这个菜单项指定一个名称。
回到 Activity 里面,重写 onCreateOptionMenu() 方法:
public boolean onCreateOptionMenu(Menu menu) {
getMenuInflater().inflate(R.menu.mian, menu);
return true;
}
getMenuInflater方法能够得到MenuInflater对象,在调用它的inflate方法。
还要再定义一个菜单的响应事件,重写 onOptionItemSelected() 方法:
public boolean onOptionItemSelected(MenuItem item) {
switch (item.getItemId()) {
case IdName:
....
default:
}
return true;
}
3、销毁一个活动用finish方法。
4、Intent在活动中穿梭。
Intent intent = new Intent(This_activity_name.this, To_activity_name.class);
Intent intent = new Intent(Intent.ACTION_VIEW);
Intent intent = new Intent();
开启活动:
startActivity(intent);
startActivity(intent, returnDataNumber); // 带返回值开启活动。
对Intent 的进一步设置:
intent.addCategory("............................."); // 调用的活动的布局文件中的category定位。
intent.setDate(Uri.parse("http://www.duckduckgo.com")); // 调用浏览器浏览duckduckgo网站。
可以在<intent-filter>标签里在配置一个<data>标签,用于更精确的指定当前活动的类型。
android:scheme 指定数据协议。 android:host 指定数据的主机名。
android:port 指定数据的端口部分,一般紧随在用户名之后。
android:path 用于指定主机名和端口之后的部分,如一个网址后面的内容。
android:mineType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
4、向活动传递数据
intent.putExtra("key_value", “Your Data");
Intent intent = getIntent();
String data = intent.getStringExtra("key_value");
startActivityForResult(intent, 1);
Intent intent = new Intent();
intent.putExtra("key_value", "Your Data");
setResult(RESULT_OK, intent);
protect void onActivityForResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String returnData = data.getStringExtra("key_value");
}
......
}
public void onBackPressed();
5、程序的返回栈
protected void onStart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestory();
protected void onRestart();
6、启动模式:standard、singleTop、singleTask、singleInstance
Intent intent = new Intent(First.this, First.class); 使用相同的布局文件的定义,生成一个新的activity。
<activity ..... android:launchMode="..."> 可以设定启动模式。
standard:自动生成一个,不管栈中是否存在。
singleTop:只检查栈顶,如果有,直接使用。
singleTask:检查全栈,如果有,直接使用此实例,并把之上的所有活动统统出栈。
singleInstance:在这个模式下,会有一个单独的返回栈来管理这个活动,不管是那个应用程序来访问这个活动,都使用同一个返回栈,也解决了共享实例的功能。
getTaskId():获得当前界面的ID。
7、继承BaseActivity类以实现输出当前界面的Java类,别的类继承BaseActivity类。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedImstanceState);
Log.d("BaseActivity :", getClass().getSimpleName());
}
getClass().getSimpleName():获取当前的界面Java源的名字。
8、随时退出程序。
public class ActivityCollector { public static List<Activity> activities = new ArrayList<>(); public static void addActivity(Activity activity) { activities.add(activity); } public static void removeActivity(Activity activity) { activities.remove(activity); } public static void finishAll() { for (Activity activity : activities) { if (!activity.isFinishing()) { activity.finish(); } } } } // BaseActivity里面的添加
ActivityCollector.addActivity(this)
@Override protected void onDestroy() { super.onDestroy(); ActivityCollector.finishAll(); }
9、启动活动的最佳写法
public static void actionStart(Context context, String data1, String data2) {
Intent intent = new Intent(context, SecondeActivity.class);
intent.putExtra("param1", data1);
intent.outExtra("param2", data2);
context.startActivity(intent);
}