Activity(活动)-初讲

隐身守侯 提交于 2020-03-08 17:01:35

  是一种可以包含用户界面的组件,主要用于和用户进行交互。

  上一次我们的MainActivity.java 是ADT帮我们自动创建的。手动创建Activity可以加深我们的理解和记忆,于是我们先自己手动创建一个Android项目, 项目名 : ActivityTest , 包名 : 使用默认值 com.example.activetest 。既然要手动创建的话,那么就不要勾选Create Activity 这个选项。

  

 这时,Eclipse中就有多个项目了。现在可以把其它项目 关闭: 右击 项目 -->Close project . 启用 : 双击 项目

    

  现在我们开始写 Activity 

    目前 ActivityTest项目的 src目录应该是空的,你应该在 src目录下先添加一个包。点击 Eclipse 导航栏中的 File→New→Package,在弹出窗口中填入我们新建项目时使用的默认包名com.example.activitytest,点击 Finish.  右击 com.example.activitytest 包→New→Class,会弹出新建类的对话框,我们新建一个名为 FirstActivity 的类,并让它继承自 Activity,点击 Finish 完成创建。或者可以自己手写继承Activity :

  

 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 
 4 public class FirstActivity extends Activity{
 5     
 6     @Override
 7     protected void onCreate(Bundle savedInstanceState) {
 8 
 9         super.onCreate(savedInstanceState);    
10         
11     }
12 }

创建和加载布局  

  上一个项目我们 onCreate() 中 写到 setContentView(R.layout.activity_main.xml) ; 就是添加窗口页面布局。现在我们手动创建一个布局。

  右击 res/layout 目录→New→Android XML File,会弹出创建布局文件的窗口。我们命名为 :first_layout.xml ,根元素就默认选择为 LinearLayout

  在命名的时候会有一些限制 小写开头,只能是0-9、a-z

  

   点击 Finish 完成布局的创建,看到我们的布局是:

  

  这是 ADT 为我们提供的可视化布局编辑器,你可以在屏幕的中央区域预览当前的布局。在窗口的最下方有两个切换卡,左边是 Graphical Layout,右边是 first_layout.xml。Graphical Layout 是当前的可视化布局编辑器,在这里你不仅可以预览当前的布局,还可以通过拖拽的方式编辑布局。

  由于我们刚才在创建布局文件时选择了 LinearLayout 作为根元素,因此现在布局文件中已经有一个 LinearLayout 元素了。那我们现在对这个布局稍做编辑,添加一个按钮,如下所示:

   

  现在我们添加一个Button 按钮

  

  

  你可能会对 @+id/button_1 这种语法感到陌生,但如果把加号去掉,变成@id/button_1,这你就会觉得有些熟悉了吧,这不就是在 XML 中引用资源的语法吗,只不过是把 string 替换成了 id。

    • android:layout_width 指定了当前元素的宽度
    • android:layout_height 指定了当前元素的高度  
    • android:text 指定了元素中显示的文字内容
    • wrap_content 表示当前元素的宽、高度只要能刚好包含里面的内容就行 

  我们可以把 layout_width 的值 改为 :match_parent (当前元素和父元素一样宽),看看效果:

    

 

   重新回到 FirstActivity,在 onCreate()方法中加入如下代码:  

 1 public class FirstActivity extends Activity{
 2     
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         
 6         super.onCreate(savedInstanceState);
 7         setContentView(R.layout.first_layout);
 8         
 9     }
10 }
11         

  项目中添加的任何资源都会在 R文件中生成一个相应的资源 id,因此我们刚才创建的 first_layout.xml布局的 id现在应该是已经添加到 R文件中了。在代码中去引用布局文件的方法你也已经学过了,只需要调用 R.layout.first_layout就可以得到 first_layout.xml布局的 id,然后将这个值传入 setContentView()方法即可。注意这里我们使用的 R,是com.example.activitytest 包下的 R 文件,Android SDK 还会自动提供一个 android 包下的 R 文件。

  当然,做了这些还不够。所有的活动都要在 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>

 

  活动的注册声明要放在<application>标签内,这里是通过<activity>标签来对活动进行注册的。首先我们要使用  android:name 来指定具体注册哪一个活动,那么这里填入的.FirstActivity是什么意思呢?其实这不过就是 com.example.activitytest.FirstActivity的缩写而已。由于最外层的<manifest>标签中已经通过 package属性指定了程序的包名是com.example.activitytest,因此在注册活动时这一部分就可以省略了,直接使用.FirstActivity就足够了。然后我们使用了 android:label 指定活动中标题栏的内容,标题栏是显示在活动最顶部的,待会儿运行的时候你就会看到。需要注意的是,给主活动指定的 label不仅会成为标题栏中的内容,还会成为启动器(Launcher)中应用程序显示的名称。之后在<activity>标签的内部我们加入了 <intent-filter> 标签,并在这个标签里添加了<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />。想让 FirstActivity 作为我们这个程序的主活动,即点击桌面应用程序图标时首先打开的就是这个活动,那就一定要加入这两句声明。另外需要注意,如果你的应用程序中没有声明任何一个活动作为主活动,这个程序仍然是可以正常安装的,只是你无法在启动器中看到或者打开这个程序。这种程序一般都是作为第三方服务供其他的应用在内部进行调用的,如支付宝快捷支付服务。

  再在后面加上一下代码:

 1         btn1 = (Button) findViewById(R.id.button1);
 2         btn1.setText("点我看看");
 3         btn1.setOnClickListener(new OnClickListener() {
 4             
 5             @Override
 6             public void onClick(View v) {
 7                 
 8                 //Toast.makeText(context, text, duration)
 9                 //context 上下文 Activity
10                 //text 文本内容 
11                 Toast t = Toast.makeText(MainActivity.this,"你好,Android 1 班" , Toast.LENGTH_LONG);
12                 t.show();
13             }
14         });        

  运行后效果是,点击之后显示 你好,Android 1 班 :

    

 

  最后,谢谢大家的关注。花开堪折直须折,莫待无花空折枝

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!