2.1 活动是什么?
活动(Activity),包括用户界面的组件,主要用于跟用户交互。个人理解,就是展示给用户看的东西。一个程序可以有零个或多个活动(正常展示给用户的app至少有一个活动)。
2.2 Android Studio创建活动
-
创建活动在app/scr/main/java下面的包下,->New->Activity->Empty Activity,会弹出创建活动。我们命名为FirstActivity,注意不要勾选Generate Layout File与Launcher Activity。rate...表示会自动给我们FirstActivity创建一个布局文件,Launcher Activity会自动将当前活动(FirstActicity)设置为主活动。因为我们现在要体验文件之间关系,因此这些自动创建的就不要勾选。然后点击finish。这里,需要知道的一点是:项目的任何活动都需要重写OnCreate方法。Studio已经帮我们完成了:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_layout); }
-
创建布局
在app/src/main/res目录->New -> Directory,创建一个目录,取名layout。然后对着layout ->Layout resource file,弹出对话框中,将布局文件命名为first_layout,根元素默认选择LinearLayout,点击OK。
在布局中添加一个Button:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/button_1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button_1" /> </LinearLayout>
其中,Button代表我们添加的是一个Button按钮。android:id是给这个控件指定一个唯一的标识符,之后可以在代码对这个元素进行操作。后面android:layout_width指定了button的宽度,match_parent说与父元素一样宽,android:layout_height指定了button高度,wrap_content则代表刚好能展示里面文字的高度。text则为button按钮显示的文字。 -
活动中加载这个布局
接下来,需要在活动中(FirstActivity)加载这个布局:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_layout); }
可见,只需要setContentView()方法,则可以完成。项目的任何资源文件都会在R文件中生成一个对应资源的id,因此只需要调用R.id.first_layout就可以得到布局的id,然后传入setContentView方法中。 -
在AndroidManifest中注册
fffffff
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".FirstActivity" android:label="This is my first APP"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
其实,studio已经帮我们注册过了,我在里面又按照自己情况添加了一点代码:
首先,设为主活动的代码(即告诉软件,启动这个项目的时候,那个活动是第一个加载的活动),<intent-filter/>中的代码完成这个功能。
l另外,label的功能是,显示这个页面的时候,标题栏的内容,个人认为类似与浏览器的标签栏。
至此,我们已经完成一个最简单的安卓项目了,启动运行看一下吧。
2.3 活动中使用Toast
这个比较简单,当然也比较实用。
首先介绍一下Toast。这是安卓系统中比较好的一种提醒方式,在系统中,以短小的信息通知给用户,而且过段时间就会消失,不占用屏幕资源。个人感觉比较使用,比如我们可以借用这个来判断点击某个按钮是否有效果,是否返回了资源等等。
用法也比较简单,类似与java的System.out.println()一样,我们在需要显示的地方敲入代码,例如:
String resultData = data.getStringExtra("data");
Toast.makeText(FirstActivity.this, resultData, Toast.LENGTH_SHORT).show();
主要是第二行,通过makeText静态方法创建出一个Toast对象,然后调用show方法显示出来就可以了。
makeText需要三个参数:第一个参数是Context,上下文,活动本身就是一个上下文,因此这里我直接传入FirstActivity.this。第二个参数是Toast要显示的内容。第三个参数是显示时长,有几个内置常量可以选择:Toast.LENGTH_SHORT和Toast.LENGTH_LONG。
运行结果就不粘了。
2.4 使用Menu菜单
<?xml version="1.0" encoding="utf-8"?>
<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>
安卓中,菜单项可以用<item>标签创建,然后id中指定一个id,通过text设置这个选项的内容。 @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
getMenuInflate方法可以得到MenuInfalte对象,然后调用inflate就可以创建菜单了。这里需要传入两个参数:第一个参数是告诉系统,需要通过那个资源文件夹来创建菜单;第二个参数是指定我们的菜单项添加到哪一个Menu对象当中,这里我们使用方法中传入的参数menu。然后让方法返回true,表示创建的菜单显示出来,如果返回false则不会显示出来了。 @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_item:
Toast.makeText(this, "Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(FirstActivity.this, "Remove", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
代码比较简单,通过抵用item.getItemId()方法判断我们点击的是哪个菜单,然后做出相应的动作。这里我用了之前的Toast。