[Android]Activity的创建
来源:互联网 发布:浏览器打开淘宝app 编辑:程序博客网 时间:2024/06/05 07:06
1. 创建Activitty
首先,我们用Android Studio创建一个空的Android项目,然后创建一个Activity,命名为FirstActivity,继承自Activity,代码如下:
public class FirstActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }}
2. 添加布局文件
然后创建和加载布局文件,命名为:first_layout.xml,代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" ></LinearLayout>
3. 增加一个按钮:
<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 是给当前的元素定义一个唯一标识符,之后可以在代码中对这个元素进行操作。你可能会对@+id/button_1 这种语法感到陌生,但如果把加号去掉,变成@id/button_1,这你就会觉得有些熟悉了吧,这不就是在 XML 中引用资源的语法吗,只不过是把 string 替换成了 id。是的,如果你需要在 XML 中引用一个 id,就使用@id/id_name 这种语法,而如果你需要在 XML 中定义一个 id,则要使用@+id/id_name 这种语法。
android:layout_width 指定了当前元素的宽度,这里使用 match_parent 表示让当前元素和父元素一样宽。
android:layout_height 指定了当前元素的高度,这里使用 wrap_content,表示当前元素的高度只要能刚好包含里面的内容就行。
android:text 指定了元素中显示的文字内容。
4. 应用布局文件
将这个布局文件应用到创建的第一个Activity:
public class FirstActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_layout); }}
可以看到,这里调用了 setContentView()方法来给当前的活动加载一个布局,而在setContentView()方法中,我们一般都会传入一个布局文件的 id。在第一章介绍 gen 目录的时候我有提到过,项目中添加的任何资源都会在 R 文件中生成一个相应的资源 id,因此我们刚才创建的first_layout.xml 布局的 id 现在应该是已经添加到 R 文件中了。在代码中去引用布局文件的方法你也已经学过了,只需要调用 .layout.first_layout 就可以得到 first_layout.xml布局的 id,然后将这个值传入setContentView()方法即可。注意这里我们使用的 R,是com.example.activitytest 包下的 R 文件,Android SDK 还会自动提供一个 android 包下的 R 文件,千万别使用错了。
5. 在 AndroidManifest 文件中注册
所有的活动都要在 AndroidManifest.xml 中进行注册才能生效,那么我们现在就打开 AndroidManifest.xml 来给 FirstActivity 注册吧,代码如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.activitytest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <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> </application></manifest>
可以看到,活动的注册声明要放在标签内,这里是通过标签来对活动进行注册的。首先我们要使用 android:name 来指定具体注册哪一个活动,那么这里填入的.FirstActivity 是什么意思呢?
其实这不过就是 com.example.activitytest.FirstActivity 的缩写而已 。由于最 外层的 标签 中已经通 过 package 属性 指定了程 序的包 名是com.example.activitytest,因此在注册活动时这一部分就可以省略了,直接使用.FirstActivity就足够了。然后我们使用了android:label 指定活动中标题栏的内容,标题栏是显示在活动最顶部的,待会儿运行的时候你就会看到。需要注意的是,给主活动指定的 label 不仅会成为标题栏中的内容,还会成为启动器(Launcher)中应用程序显示的名称。之后在标签的内部我们加入了标签,并在这个标签里添加了“android.intent.action.MAIN” />和这两句声明。这个我在前面也已经解释过了,如果你想让 FirstActivity 作为我们这个程序的主活动, 即点击桌面应用程序图标时首先打开的就是这个活动, 那就一定要加入这两句声明。
另外需要注意,如果你的应用程序中没有声明任何一个活动作为主活动,这个程序仍然是可以正常安装的,只是你无法在启动器中看到或者打开这个程序。这种程序一般都是作为第三方服务供其他的应用在内部进行调用的,如支付宝快捷支付服务。
6. 效果
- android activity的创建
- [Android]Activity的创建
- Android | 创建新的Activity
- [android]Activity中系统菜单的创建
- 创建没有activity 的service---android
- Android应用开发之activity的创建
- 创建兼容android activity的OSGI bundle
- Android Activity的创建与回收
- Android基础 | 创建新的Activity
- Android源码:Activity的创建和显示
- Android Activity的启动与创建
- Android Activity的启动和创建
- Android 创建一个新的Activity
- Android Activity之Window的创建过程
- Android 创建 透明Activity
- Android 创建Activity
- Android 创建Activity
- 创建一个Android Activity
- HashMap实现原理分析
- 【Android】A星算法演示代码(自定义view方便查看效果)
- 中科院计算所培训中心二季度公开课安排
- __FILE__和$_SERVER["PHP_SELF"]的区别
- iOS开发有关二维码的介绍
- [Android]Activity的创建
- 让「快速添加」更快、更简单
- Android Xutils 框架
- oracle 的安装和完全卸载
- 干货:结合Scikit-learn介绍几种常用的特征选择方法
- 4招电脑防盗术,让小偷“全都没饭吃”
- path,arcTo,cubicTo,quadTo,moveTo,lineTo,close
- Android Preference的学习
- POJ 2115-C Looooops-扩展欧几里德算法