活动的基本用法
1、新建Android项目,项目名叫做ActivityTest,选择Add No Activity,点击Finish,等待Gradle构建完成,项目就创建成功。
2、手动创建活动
项目结构转换成Project模式,此时app/src/main/java/com.example.administrator.activitytest目录应该是空的,现在右击com.example.administrator.activitytest包->New->Activity->Empty Activity,弹出一个创建活动的对话框,将活动命名为MainActivity,不勾选Generate Layout File和 Launcher Activity这两个选项,然后点击Finish。此时MainActivity中已经重写了onCreate()方法,这是由Android Studio自动完成的。
3、创建和加载布局(Android程序的设计讲究逻辑和视图的分离)
首先手动创建一个布局文件,右击app/src/main/res目录->New->Directory,会弹出一个新建目录的窗口,先创建一个名为layout的目录。然后对着layout目录右键->Layout resource file,又会弹出一个新建布局资源文件的窗口,将这个布局文件命名为first_layout,根元素就默认选择LinearLayout,点击OK完成布局的创建,这时会看到布局编辑器。窗口的最下方有两个切换卡,左边是Design,右边是Text。Design状态时拖动一个Button至手机屏幕,切换到Text,添加一个按钮。
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent">
6
7 <Button
8 android:text="Button"
9 android:layout_width="match_parent"
10 android:layout_height="wrap_content"
11 android:id="@+id/button" /> //对当前元素定义一个唯一标识符
12 </LinearLayout>
在活动中加载这个布局,重新回到MainActivity,在onCreate()方法中加入如下代码:
1 public class MainActivity extends AppCompatActivity {
2 @Override
3 protected void onCreate(Bundle savedInstanceState){
4 super.onCreate(savedInstanceState);
5 setContentView(R.layout.first_layout); //传入一个布局文件的id
6 }
7 }
4、在AndroidManifest文件中注册
所有活动都要在AndroidManifest.xml中进行注册才能生效,实际上MainActivity已经注册过了,打开app/src/main/Androidmanifest.xml文件瞧一瞧,除了原有的代码,
还需加上入口Activity(13至16行),用来指定首先启用哪个活动。
1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.example.administrator.activitytest">
4
5 <application
6 android:allowBackup="true"
7 android:icon="@mipmap/ic_launcher"
8 android:label="@string/app_name"
9 android:supportsRtl="true"
10 android:theme="@style/AppTheme">
11 <activity android:name=".MainActivity"> //android:name用来指定具体注册哪一个活动
12
13 <intent-filter>
14 <action android:name="android.intent.action.MAIN" />
15 <category android:name="android.intent.category.LAUNCHER" />
16 </intent-filter>
17
18 </activity>
19 </application>
20 </manifest>
5、在活动中使用Toast(一种提醒方式,在程序中可以使用它将一些短小的消息通知给用户,这些信息会在一段时间后自动消失)
首先需要定义一个弹出Toast的触发点,正好界面上有个按钮,我们就让点击这个按钮的时候弹出一个Toast。
1 protected void onCreate(Bundle savedInstanceState){
2 super.onCreate(savedInstanceState);
3 setContentView(R.layout.first_layout);
4
5 Button button1=(Button)findViewById(R.id.button); //findViewById()方法获取到在布局文件中定义的元素
6 button1.setOnClickListener(new View.OnClickListener(){ //调用setOnClickListener()为按钮注册一个监听器
7 @Override
8 public void onClick(View v){
9 Toast.makeText(MainActivity.this,"You clicked Button",
10 Toast.LENGTH_SHORT).show();
11 }
12 });
13 }
Toast用法:通过静态makeText()创建一个Toast对象,然后调用show()将Toast显示出来。makeText()方法需要传入3个参数。第一个参数是Context,也就是Toast要求的上下文。
第二个参数是Toast显示的文本内容。第三个参数是Toast显示的时长。
5、在活动中使用Menu(展示菜单的同时不占用任何屏幕空间)
首先在res目录下新建一个Menu文件夹,右击res目录->New->Directory,输入文件夹名menu,点击OK。然后在这个文件夹下再新建一个名叫main的菜单文件,右击menu文件夹
->New->Menu resource file。文件名输入main,点击OK。然后在main.xml中添加如下代码:
1 <?xml version="1.0" encoding="utf-8"?>
2 <menu xmlns:android="http://schemas.android.com/apk/res/android">
3
4 <item //<item>标签用来创建具体的某一个菜单项
5 android:id="@+id/add_item" //菜单标识符
6 android:title="Add"/> //菜单名称
7 <item
8 android:id="@+id/remove_item"
9 android:title="Remove"/>
10 </menu>
接着重回MainActivity中重写OnCreateOptionMenu()方法(重写方法可以使用Ctrl+O快捷键)
然后在OnCreateOptionMenu()方法中编写如下代码:
1 public boolean onCreateOptionsMenu(Menu menu) {
2 getMenuInflater().inflate(R.menu.main,menu); //给当前活动创建菜单
3 return true;
4 }
inflate()方法接收两个参数,第一个参数用于指定通过哪个资源文件来创建菜单。第二个参数用于指定菜单项将添加到哪一个Menu对象中。
定义菜单响应事件,在MainActivity中重写onOptionItemSelected()方法:
1 public boolean onOptionsItemSelected(MenuItem item) {
2 switch (item.getItemId()) { //通过调用item.getItemId()判断点击的哪个菜单项
3 case R.id.add_item:
4 Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
5 break;
6 case R.id.remove_item:
7 Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show();
8 break;
9 default:
10 }
11 return true;
12 }
带菜单按钮的活动 弹出菜单项的界面