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

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

  

 import android.app.Activity;
import android.os.Bundle; public class FirstActivity extends Activity{ @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }
}

创建和加载布局  

  上一个项目我们 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()方法中加入如下代码:  

 public class FirstActivity extends Activity{

     @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout); }
}

  项目中添加的任何资源都会在 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 作为我们这个程序的主活动,即点击桌面应用程序图标时首先打开的就是这个活动,那就一定要加入这两句声明。另外需要注意,如果你的应用程序中没有声明任何一个活动作为主活动,这个程序仍然是可以正常安装的,只是你无法在启动器中看到或者打开这个程序。这种程序一般都是作为第三方服务供其他的应用在内部进行调用的,如支付宝快捷支付服务。

  再在后面加上一下代码:

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

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

    

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

Activity(活动)-初讲的更多相关文章

  1. Android学习之基础知识四-Activity活动5讲(Activity的生命周期)

    一.返回栈 1.Android是通过任务(Task)来管理活动,一个任务就是一个返回栈内所有活动的集合. 2.返回栈是一个后进先出的数据结构,每启动一个新的活动,该活动就会覆盖原来的活动,位于栈顶位置 ...

  2. Android学习之基础知识四-Activity活动3讲(Intent的使用)

    主活动名称FirstActivity.java改为了MenuTest.java 一.什么是Intent: 1.Intent是Android程序中各组件之间进行交互的重要方式,不仅可以指明当前组件想要进 ...

  3. Android学习之基础知识四-Activity活动8讲(活动的灵活运用)

    一.判断当前是在哪个活动 1.我们还是接着上一讲的代码,首先创建一个Java类:BaseActivity.java.这个类我们不作为一个活动,也不在AndroidManifest.xml中注册,它只是 ...

  4. Android学习之基础知识四-Activity活动7讲(活动的启动模式)

    在实际的项目开发中,我们需要根据特定的需求为每个活动指定恰当的启动模式.Activity的启动模式一共有4种:standard.singleTop.singleTask.singleInstance. ...

  5. Android学习之基础知识四-Activity活动6讲(体验Activity的生命周期)

    一.体验活动的生命周期的执行 代码组成: 1.三个Java类:MainActivity.java.NormalActivity.java.DialogActivity.java 2.三个布局文件:ac ...

  6. Android学习之基础知识四-Activity活动4讲(Intent传递数据)

    Intent除了可以开启一个活动,还能在启动活动的时候传递数据,此时Intent相当于一个保存数据的库,我们先把数据保存在Intent中,然后再根据各个activity的需要从其中取出数据.  一.使 ...

  7. Android学习之基础知识四-Activity活动2讲

    一.在活动(activity)中添加Toast显示: 1.Toast作用:Android系统提供的一种非常好的提醒方式,将一些短小的信息提供给用户,这些信息会在一段时间后自动消失,不会占用任何屏幕空间 ...

  8. Android学习之基础知识四-Activity活动1讲

    一.活动(Activity)的基本用法: 1.手动创建活动FirstActivity(java源码): A.Android Studio在一个工作区间只允许打开一个项目,点击:File--->C ...

  9. Activity(活动)-再讲

    通过多天的学习,大家也了解了adb.exe 是用来进行 客户端(pc)-服务器端(android) 数据交互的. 用户可以使用工具Eclipse 中DDMS 隐示使用  adb.exe 进行连接,也可 ...

随机推荐

  1. phalcon: 缓存片段,文件缓存,memcache缓存

    几种缓存,需要用到前端配置,加后端实例配合着用 片段缓存: public function indexAction() { //渲染页面 $this->view->setTemplateA ...

  2. DHV 平常语言对话 一次聚会离场

    一次聚会离场 一次聚会离场,如果顺路要计划好A女生 和B女生 或者C女闺密一起回去,然后再自己回去 如果别人说:好男人, 自己一定要谦虚说: 哪里,好男人一般都是备胎. 到家了要说: 不是说: 我:我 ...

  3. MySQL和OneSQL并行插入性能对比

    按照我的作风,没图说个啥 环境 下面是受叶金荣老师的启发把相关环境交代清楚 MySQL和OneSQL的关键参数配置如下 数据库 sync_binlog innodb_flush_log_at_trx_ ...

  4. 【bzoj3771】【xsy1728】Triple

    [bzoj3771][xsy1728] 题意 求\(\sum_{i}[a_i=S]+\sum_{i<j}[a_i+a_j=S]+\sum_{i<j<k}[a_i+a_j+a_k=S] ...

  5. 【BZOJ 3295】动态逆序对 - 分块+树状数组

    题目描述 给定一个1~n的序列,然后m次删除元素,每次删除之前询问逆序对的个数. 分析:分块+树状数组 (PS:本题的CDQ分治解法见下一篇) 首先将序列分成T块,每一块开一个树状数组,并且先把最初的 ...

  6. js一些题目

    假期在家,看到的,昨天看了下: 原文链接:http://wwwcqamin.duapp.com/?p=102#comment-7 请说出下面程序的输出结果 第一题: 1 2 3 4 5 6 7 8 9 ...

  7. 简述 Ruby 与 DSL 在 iOS 开发中的运用

    阅读本文不需要预先掌握 Ruby 与 DSL 相关的知识 何为 DSL DSL(Domain Specific Language) 翻译成中文就是:"领域特定语言".首先,从定义就 ...

  8. 让ie678支持css一些属性及html标签

    昨天写的一个页面,用的css3及html5的一些样式与标签,在ie8下看是没有效果的,然后就在晚上查找了一下如何能让ie8也能实现这些效果. 1.添加respond.js文件,Respond.js让I ...

  9. java代码抓取网页邮箱

    实现思路:1.使用java.net.URL对象,绑定网络上某一个网页的地址2.通过java.net.URL对象的openConnection()方法获得一个HttpConnection对象3.通过Ht ...

  10. Java集合涉及的类(代码)

    Customer: public class Customer implements Comparable{        private Integer customerId;        pri ...