• Activity(活动)-初讲


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

      上一次我们的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 班 :

        

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

  • 相关阅读:
    低于时钟频率的任意频率生成(相位累加器)
    verilog实现奇数倍分频
    No.135 Candy
    No.42 Trapping Rain Water
    No.149 Max Point on a Line
    No.147 Insertion Sorted List
    No.21 Merge Two Sorted List
    No.88 Merge Sorted Array
    No.148 Sort List
    No.206 Reverse Linked List
  • 原文地址:https://www.cnblogs.com/hxb2016/p/6073164.html
Copyright © 2020-2023  润新知