活动
创建新的活动
右键选中com.example.activitytest文件夹,新建->Activity->Empty Activity,获得以下对话框: 两个选项,一个勾选会自动创建一个布局文件;另一个勾选会即将当前创建活动设为项目的主活动。
创建和加载布局
- 右键app/src/main/res目录->New->Directory,创建一个layout目录;
- 右键app/src/main/res/layout目录->New->Layout resource file,创建布局资源文件。
选择布局名字、根元素等等。 (坑:new resource file弹窗的诸多选项) - 编辑布局文件。
- 在onCrete()方法中加入
setContentView(R.layout.first_layout); ,即启用此布局。
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 1"
/>
</LinearLayout>
分析一下:
android:id :"@+id/button_1",同上篇所讲,把string换成了id,带有+表示定义一个id;android:layout_width :当前元素宽度,match_parent表示与父元素宽度一致;android:layout_height :当前元素高度,wrap_content表示当前元素刚好被包围就行;android:text :显示的文字内容、。
注册
在application标签中可以看到<activity android:name=".FirstActivity"></activity> 注:.FirstActivity 是com.example.activitytest.FirstActivity 的缩写,因为最外层已经声明了包文件:package="com.example.activitytest"> ,所以可以简写。
配置主活动
在activity标签里加入< intent-filter >标签,并加入两行代码,使本活动变为起始活动。
<activity android:name=".FirstActivity"
android:label="This is FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
在活动中使用Toast
Toast是一种非常好的提醒方式,将一些短小信息通知给用户并一段时间后自行消失。 Toast的用法很简单,调用Toast类中makeText()方法创建一个Toast对象,而后调用show()方法即可。 重写onCreate()方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(FirstActivity.this,"You cicked Button 1",
Toast.LENGTH_SHORT).show();
}
});
}
解释一下:
findViewById() 方法:获取在布局文件中定义的元素,传入R.id.button_1 即获得按钮实例,这个值是在first_layout.xml中通过android:id 定义的。 返回一个View对象,向下转型成Button对象。setOnClickListener() 方法:为按钮注册一个监听器,点击按钮就会执行监听器中onClick()方法。 所以具体点击后的执行需要在onClick()中编写。makeText() 方法:传入三个参数: – Context:Toast要求的上下文。活动本身就是一个Context对象,所以直接传入FirstActivity.this 即可; – Text:显示的文本。 – 显示的时长,两个内置常量供选择Toast.LENGTH_SHORT 和Toast.LENGTH_SHORT 。
在活动中使用Menu
1. 创建:
右键res目录->New->目录,创建新目录menu; 右键menu目录->New->Menu resource file,输出文件名,完成Menu创建。 (挖个坑,创建页面其他内容以后再研究)
2. 编辑main.xml文件, 设计菜单选项
在< menu >标签中添加如下代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="Add"/>
<item
android:id="@+id/remove_item"
android:title="Remove"/>
</menu>
id指定唯一标识符,title指定唯一名称。
3. 重写onCreateOptionsMenu()方法
回到FirstActivity活动中重写onCreateOptionsMenu()方法(Ctrl+o快捷键重写)。实现菜单的显示。 重写如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
分析一下:
getMenuInflater() 方法:得到MenuInflater对象,再调用他的inflate() 方法就可以给当前活动创建菜单了。inflate() 方法:两个参数,一是指定通过哪一个资源文件创建菜单,也是就找到设计惨淡选项的xml文件的引用作为参数;二是指定菜单项添加到哪一个Menu对象中,这里直接使用Menu方法中传入的menu参数。- 方法返回true,表示允许创建的菜单显示;返回false,创建的菜单将无法显示。
4. 重写onOptionsItemSelected()方法
FirstActivity活动中重写onOptionsItemSelected()方法实现菜单响应事件。
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "You clicked Remove", Toast.LENGTH_LONG).show();
break;
default:
}
return super.onOptionsItemSelected(item);
}
- 通过调用
item.getItemId() 来判断点击的是哪一个菜单,分case加入自己的逻辑处理。
销毁一个活动
- Back键就可以销毁当前活动。
- 调用Activity类的finish()方法。
在onCreate()方法中加入如下代码:
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
点击按钮后就会销毁活动。
|