Android四大组件之活动
来源:互联网 发布:怎么启动mysql 编辑:程序博客网 时间:2024/05/21 01:44
1.1 活动是什么
活动(Activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序中可以或多或少包含零个或多个活动,但不包含任何活动的程序很少见,谁也不想自己的应用永远无法被用户看到吧?
Activity作为android四大组件之首,是使用最频繁的一种组件,中文直译为“活动”,但是笔者认为将其翻译成界面会更容易理解。正常情况下,除了window · Dialog · Toast,我们能见到的界面的确只有Activity。
1.2 活动的基本用法
首先先创建一个android项目,打开androidStudio,点击start a new Android Studio project:
然后选择Add No Activity
点击Finish, 等待Gradle构建完成后, 项目创建成功了。
1.2.1 手动创建活动
右击com.example.administrator.activitytest包->New->Activity->Empty Activity,弹出一个创建活动的对话框我们将活动命名为FirstActivity,并且不要勾选Generate Layout File(表示自动创建布局文件)和Launcher Activity(表示自动将FirstActivity设置为当前项目的的主活动)勾选Backwards Compatibility(表示为项目启动向下兼容模式),点击Finish完成创建。
你需要知道,项目中的任何活动都要重写Activity的onCreat()方法,目前我们的FirstActivity已经重写了这个方法,这是由androidstudio帮我们完成的,代码如下:
public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }}
1.2.2 创建和加载布局
点击app/src/main/res目录->New->Directory,会弹出一个新建目录的窗口,这里创建一个名为Layout的目录。然后对着这个目录右键->New->Layout resource file,将布局文件命名为first_layout.点击ok完成布局的创建。Android Studio为我们提供可视化的布局编辑器,在窗口最下方有两个切换卡,左边是Design(通过拖动控件的方式编辑布局),右边是Text(通过XML文件的方式编辑布局)。
点击Text切换卡,可以看到如下代码:
<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/button1"
android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
可以看到我们在视图上放了一个按钮
可以看到,按钮已经显示出来,接下来要做的就是在活动中加载这个布局
public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_layout); }}红色部分为我们添加的代码,可以看到这里调用了setContentView()的方法来给我们当前活动加载一个布局,传入的参数为一个布局文件的id,项目中添加的任何资源都会在R文件中生成一个相应的资源id,因此我们刚才创建的first_layout.xml布局的id,然后将这个值传入setContent方法即可。
1.2.3 在AndroidManifest文件中注册
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.activitytest"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".FirstActivity"></activity> </application></manifest>
可以看到,活动的注册声明要放在<application>标签内,这里通过<activity>标签来对活动进行注册的。当然啦,androidstudio会自动帮我们完成对FirstActivity的注册,由于在<manifest>标签中已经通过package属性指定了程序的包名,因此在android:name指定活动名就可以省略包名。
不过,仅仅是注册了活动,我们程序任然是不能运行的,因为还没为程序配置主活动,也就是说,当程序运行起来的时候,不知道首先启动哪个活动。接下来我们开始配置主活动
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".FirstActivity" android:lable="This is FirstActivity "> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity></application>绿色部分为我们添加的代码,android:lable用于指定标题栏的内容。
1.2.4 在活动中使用Toast
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_layout); Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(FirstActivity.this, "You clicked Button 1", Toast.LENGTH_SHORT).show(); } });}
通过findViewById()获取布局文件中定义的元素,这里我们传入R.id.button1,这个值是刚在first_layout布局文件中通过android:id属性指定的.findViewById()方法返回的是一个View对象,我们需要向下转型将它转成Button对象
得到按钮的实例之后,我们通过调用setOnClickListener()方法为按钮注册一个监听器,点击按钮时就会执行监听器中的onClick()方法。因此弹出的Toast功能当然是要在onClick()方法中编写了。makeText()方法第一个参数为一个context对象,第二个参数为Toast显示的文本内容,第三个参数是Toast显示的时长。
1.2.5 在活动中使用菜单(menu)
首先在res目录下新建一个menu文件夹,右击res目录->New->Directory,输入文件夹名,点击OK。接着在这个文件夹下再新建一个名叫main的菜单文件,右击menu文件夹->New->Menu resource file,文件名输入main,点击OK完成创建。然后在main.xml中添加如下代码
<?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>标签就是用来创建具体的某一个菜单项,然后通过android:id给这个菜单项指定一个唯一的标识符,通过android:title给这个菜单栏指定一个名称。
接着重新返回到FirstActivity中来重写onCreatOptionMenu()方法,代码如下:
public boolean onCreatOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main,menu); return true;}
通过getMenuInflater()方法能够得到MenuInflater对象,再调用它的inflate()方法就可以给当前活动创建菜单了。inflate()方法接收两个参数,第一个参数用于指定我们通过哪个资源文件来创建菜单,这里当然是传入R.menu.main。第二个参数用于指定我们的菜单项将添加到哪一个Menu对象当中,这里直接用onCreateOptionMenu()方法中传入的menu参数。然后给这个方法返回true,表示允许创建的菜单显示出来,如果返回false,创建的菜单将无法显示。
当然菜单不仅是为了好看和节省空间,关键是要菜单真正可用才行,因此还要再定义响应事件。在FirstActivity中重写onOptionItemSelected()方法:
public boolean onOptionItemSelected(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_SHORT).show();; break; default: } return true;}在onOptionItemSelected()方法中,通过调用item.getItemId()的方法来判断我们点击的是哪一个菜单项,然后给每一个菜单项加入自己的逻辑处理,这里我们就活学活用,弹出一个刚刚学会的Toast。
1.2.6 如何销毁一个活动
其实答案很简单,只要按一下Back键就可以销毁当前的活动,不过如果你不想通过按键的方式,而是希望在程序中通过代码来销毁活动,当然也可以,Activity类提供了一个finish()方法,我们在活动中调用一下这个方法就可以销毁当前的活动了。
修改按钮监听器中的代码,如下所示:
button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
finish();
}
});
- Android四大组件之活动
- android四大组件之活动(Activity)
- 四大组件之活动
- 四大组件之Activity(活动)
- android四大金刚(组件)之-:Activity(活动窗口)
- Android笔记---四大组件之Activity活动详解
- Android四大组件之活动分析(笔记)
- 四大组件之activity活动周期
- 四大组件之活动(初步接触)
- 四大组件之Activity(活动)小结
- Android四大组件之一活动(一)
- android之四大组件
- Android之四大组件
- Android之四大组件
- Android之四大组件
- android之四大组件
- Android之android四大组件
- android四大组件之intent
- React.js内容的两种写法
- 编译Android下可用的全平台FFmpeg(包含libx264与libfdk-aac)
- Python中函数的使用
- 23day NSURLConnection
- 2017-7-6 14:40(在家)
- Android四大组件之活动
- 详解Android动画之Tween Animation
- poj-1837
- spring配置文件xml文件开头总是有个红叉,是找不到schema文件
- 51nod2006 飞行员配对(二分图最大匹配)匈牙利算法
- NAT技术与代理服务器调研
- sort-list
- 短信验证码
- java创建文件夹不存在的文件