在上篇博文讲解了Android的Activity这个组件的启动流程后,接下来我们就来看看我们的Activity与我们的布局文件的关系吧

我们先来看看一个最简单的布局文件的内容:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textSize="50sp"
android:background="#00DD00"
android:text="@string/hello_world" /> </RelativeLayout>

在这个布局文件里面,我们在里面定义了一个TextView控件,这个控件就是文本内容的显示,我们可以给其指定各种属性,例如高度、宽度、背景色等。在布局文件配置好以后,我们来看看Activity对象里面的onCreate()方法中的内容:

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

我们看到 setContentView(R.layout.activity_main);这里我们就是加载了我们指定的那个布局文件,当执行完这句话以后,布局文件里定义的所有的控件都会被加载进来,并且生成对应的View对象,说到View对象,我们要知道,我们定义的所有的控件,例如TextView、Button等等,这些都是View对象的子类

我们知道,在布局文件被加载后,就会生成对应的控件对象,我们要如何在代码中得到该对象呢?可以通过 findViewById 这个方法,就可以根据ID找到我们需要的那个View对象了,例如我们要找到刚才的那个TextView对象:

    private TextView textView;

    @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView);
textView.setBackgroundColor(Color.GREEN);
   }

通过上面的 textView = (TextView) findViewById(R.id.textView);代码就可以得到我们布局文件中的TextView对象,因为所有的控件对象都是View的子类,而findViewById方法返回的是View类型的对象,所以我们这里要对其进行向下类型转换。在得到TextView这个对象后,我们就可以在java代码里来设置其各个属性。记住:在布局文件中能配置的内容,在java代码中也能设置,反之亦然

在了解了这些之后,我们再来学一个知识点: 监听器,相信做过java开发的都知道监听器的概念,所以这里也就不阐述了。我们这里要实现的是通过给一个Button控件注册监听器,来处理一些操作。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="50sp"
android:text="0" /> <Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="button" /> </LinearLayout>

这是我们的布局文件,里面定义了一个TextView和一个Button,我们要做的就是当点击一下Button时,让TextView的内容每次加1,当长按Button时,让TextView的内容每次加2

public class MainActivity extends Activity
{
private TextView textView;
private Button button;
private int count = 0; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView);
textView.setBackgroundColor(Color.GREEN); button = (Button) findViewById(R.id.button);
// 给button对象注册一个onClick监听器
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
count++;
textView.setText(count + "");
}
});
// 给button注册一个onLongClick监听器
button.setOnLongClickListener(new OnLongClickListener()
{
/**
* 这个方法返回一个boolean值,如果返回true,则表示是一个长按的操作,会执行下面这个方法
* 如果返回false,则表示是一个点击操作,会首先执行完下面的方法,然后再执行点击的方法
*/
@Override
public boolean onLongClick(View arg0)
{
count += 2;
textView.setText(count+"");
return true;
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

这个就是我们的Activity的代码,我们首先要获得TextView和Button这个对象,通过findViewById就可以获得,然后给button注册两个监听器,一个是OnclickListener,另一个是OnLongClickListener,然后我们这里通过匿名内部类来得到实现了这两个接口的对象,实现了其抽象方法。这样我们就可以在方法里面实现我们需要的操作了。

Android 组件系列-----Activity初步的更多相关文章

  1. Android组件系列----Activity组件详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  2. Android 组件系列-----Activity的传值和回传值

    在这篇随笔里将讲解Activity的传值和回传值. 一.通过startActivity来进行Activity的传值 在Android中,如果我们要通过一个Activity来启动另一个Activity, ...

  3. Android 组件系列-----Activity生命周期

    本篇随笔将会深入学习Activity,包括如何定义多个Activity,并设置为默认的Activity.如何从一个Activity跳转到另一个Activity,还有就是详细分析Activity的生命周 ...

  4. Android 组件系列-----Activity保存状态

    本篇随笔将详细的讲解Activity保存状态的概念,也就是saving activity state. 一.Activity状态保持概念 保存Activity的状态是非常重要的,例如我们在玩一个游戏的 ...

  5. Android组件系列----Activity的生命周期

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  6. 【转】Android 组件系列-----Activity保存状态

    本篇随笔将详细的讲解Activity保存状态的概念,也就是saving activity state. 一.Activity状态保持概念 保存Activity的状态是非常重要的,例如我们在玩一个游戏的 ...

  7. Android组件系列----当前Activity跳转到另一个Activity的详细过程

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  8. Android组件系列----BroadcastReceiver广播接收器

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  9. 第01讲 Android开发系列---Activity

    一.  Android系统版本及详细信息 最新数据  https://developer.android.com/about/dashboards/ 二.  Android项目初探 1.    使用a ...

随机推荐

  1. 连连看 (BFS)

    难点在于判断转弯小于两次  这个还好 主要是   走过的路还能再走 但是去掉标记数组会超时 *******所以用     v.step<=f[v.x][v.y]即可!!!  这个思想非常重用!! ...

  2. PHP 扩展 MongoDB

    打开phpinfo 查看 nts(非线程) 还是 ts (线程),操作位数: 下载对应的版本的php_mongodb.dll 文件 下载链接: pecl mangodb下载 把文件解压出来 php_m ...

  3. 实现分布式服务注册及简易的netty聊天

    现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式.用到的场景就是服务注册,比如一个集群服务器,需要知道哪些服务器在线,哪些服务器不在线. ZK有一个功能,就是创建临时节点,当机 ...

  4. Mac电脑 阿里云ECS(ContentOS) Apache+vsftpd+nodejs+mongodb建站过程总结

    简介:我这里采用的阿里云免费提供的6个月ECS服务器:制作了一个简单的爬虫程序:里面很多功能还么做:搜索里面功能回去的数据未做处理会崩溃(大家不要点搜索功能):地址:http://loldragon. ...

  5. VMware虚拟机安装CentOS6.4、部署web项目全过程(设置固定IP、安装JDK、Tomcat、Redis、部署项目)

    概述:该篇随笔介绍了在VMware上安装centOS.在centOS上安装JDK.安装Tomcat.安装Redis并部署项目的全过程,虽然参考了很多优秀的文章,但实践.整理.补充都很用心,若要复制粘贴 ...

  6. unity3d 给游戏添加音源 Unity3d adds a sound source to the game

    unity3d 给游戏添加音源 Unity3d adds a sound source to the game   作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:3131345 ...

  7. python面向对象编程练习

    练习题 1.面向对象三大特性,各有什么用处,说说你的理解. 面向对象的三大特性: 1.继承:解决代码的复用性问题 2.封装:对数据属性严格控制,隔离复杂度 3.多态性:增加程序的灵活性与可扩展性 2. ...

  8. ParallaxNode视差节点实现远景近景的不同层次移动

    Cocos2d-x有ParallaxNode视差节点,视察顾名思义,就是造成不同的移动速率的效果. 我想大家都玩过刀塔传奇,他的背景有远景和近景之分,而且你滑动屏幕的时候远景和近景是按照不同的速率移动 ...

  9. socket的相关知识理解

    http://blog.csdn.net/feiniu55662/article/details/16948639 https://www.baidu.com/baidu?tn=monline_3_d ...

  10. python 字符串的一些方法

    总结:# split 分割 ********# strip 脱 默认脱头尾的空格 ********# replace 替换 ********# join 插入 拼接 ********# format ...