自学Android 02 活动

*活动:

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

一个程序可以包含零个或多个活动

*注意在新建项目后,要把其他项目关闭,避免发生错误

右键->close project

*手动创建活动:

在src里,创建包,包名就用创建项目时候的默认包名

然后,包右键->新建FirstActivity类(继承自Activity类)

注意:项目中的任何活动都应该重写Activity类里的onCreate()方法

快捷方法:右键->source->override/implement method

*创建和加载布局:

安卓是逻辑和视图分离的,最好每个活动对应一个布局。布局就是用来显示界面内容的。

手动创建布局:res->layout->new->Android xml flie

这个是adt提供的可视化布局编辑器

最下面有两个选卡:

graphical layout是可视化编辑方式,可以通过拖拽啊之类的很方便

.xml是通过代码了

选择first_layout.xml选项卡

因为创建的时候选择的是linearlayout作为根元素,所以布局文件里已经有它了

添加一个按钮:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6
 7     <Button
 8         android:id="@+id/button_1"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:text="Button 1"
12         />
13 </LinearLayout>

android:id 是给当前元素定义的唯一标识。@+id/button_1(xml中定义语法) 和之前学的引用方法有点像:  @string /hello_world(xml中引用语法)

在XML中引用id使用:@id/id的名字

在XML中定义id使用:@+id/id的名字

android:layout_width="match_parent"  指定当前元素宽度,和父元素一样宽

android:layout_height="wrap_content"  指定当前元素高度,高度刚好可以包含内容即可

android:text 指定元素中显示的文字内容

回到graphical layout选项卡发现有按钮啦~

然后我们需要 到活动里去加载这个布局 

先复习下之前的一个内容

我们可以看出如何引用res下的资源:
1. 在代码中 R.string.hello_world 来引用
2. 在XML中 @string /hello_world 来引用
当我们想引用图片就把string部分换成drawable,布局文件是layout......

package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
public class FirstActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
    }
}

setContentView(R.layout.first_layout); 使用这一句来加载布局。

调用R.layout.first_layout获得布局文件的id,然后通过setContentView()方法给当前活动加载布局。

此处的R是,如下图:

项目中添加的任何资源都会在R文件里生成对应的id。我们一般不去手动修改这个文件。

*在AndroidMainfest文件中注册:

所有活动都要在AndroidMainfest文件中注册才能生效

<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="15"
        android:targetSdkVersion="21" />
    <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"  来具体指定注册哪一个活动。.FirstActivity是com.example.activitytest.FirstActivity缩写(因为在mainfest标签中写明了是这个包所以可以缩写)

android:label="This is FirstActivity"  来指定活动中标题栏的内容,而且该内容会变成启动器中应用程序显示的名称

<intent-filter>标签中的两句:
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
两句话说明本活动被定义为程序的主活动;即点击图标后首先打开的活动。
(一个活动没声明任何一个活动作为主活动,这个程序任然可以正常安装,一般作为第三方服务供其它的应用在内部进行调用,如支付宝快捷支付)

复习下前面的知识:

*隐藏标题栏:

package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
public class FirstActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);  //这句一定要在setContentView前执行!!!否则会报错的
        setContentView(R.layout.first_layout);
    }
}

安卓4.0加入了Action Bar,能对标题栏这个位置进行很多的操作。

 

*在活动里使用Toast:

toast是一种提醒方式,将短小的信息提示给用户,这些信息会在一段时间后消失。

按下Button 1,然后弹出一个toast(注意需要导入多个包):

package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;
public class FirstActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.first_layout);
        Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(FirstActivity.this, "u clicked button 1", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

Button button1 = (Button) findViewById(R.id.button_1);   //获得按钮实例

通过 findViewById()方法获取布局文件中定义的元素,这里传入R.id.button_1,来获得按钮的实例。

findViewById()返回的是一个View对象,需要向下转型,强制转型。

button1.setOnClickListener(... ...); //为按钮注册了一个监听器,点击Button 1按钮,就会执行监听器里的onClick()方法。

setOnClickListener(OnClickListener I)方法 是android.view.View中的方法,android.widget.Button继承了它

OnClickListener()是接口,里面有抽象方法onClick()

抽象方法onClick()需要被执行,所以重写了

Toast.makeText(FirstActivity.this, "u clicked button 1", Toast.LENGTH_SHORT).show();

通过静态方法makeText()创建出一个Toast对象,然后再调用show()方法就可以显示了。(静态方法调用:类名.方法,实例方法调用:对象名.方法)

makeText(...)方法详解:

以上是使用Toast的方法1,还有方法2:

package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Toast;
public class FirstActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.first_layout);
    }
    public void selfDestruct(View view) {
        Toast.makeText(FirstActivity.this, "u clicked button 1", Toast.LENGTH_SHORT).show();
    }
}

//FirstActivity.java
<?xml version="1.0" encoding="utf-8"?>
<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"
        android:onClick="selfDestruct"
        />
</LinearLayout>

<!-- first_layout.xml -->

相关详细说明:

时间: 2024-10-13 00:39:05

自学Android 02 活动的相关文章

如何自学Android

如何自学Android 欢迎转载,转载请注明原地址:http://blog.csdn.net/lavor_zl/article/details/51217319,谢谢. 1. Java知识储备 本知识点不做重点讲解: 对于有基础的同学推荐看<Java编程思想>,巩固基础,查漏补全,了解并熟悉更多细节知识点. 对于没有基础的同学推荐看一本Java基础的书籍,看完后可以继续看<Java编程思想>提升自己. 对于自认为时间很充裕,只要基础学扎实就好的推荐看<疯狂Java讲义>

带有服务器的Android公益活动平台源码

带有服务器的Android公益活动平台源码 在网上找的一个项目,项目是一个基于安卓的公益活动平台源码.压缩包中包含安卓客户端源码spring_hibernate服务端源码和mysql数据库,有简单的信息浏览和信息搜索和用户资料布局,不过很多地方不完善,客户端使用android开发,UI一般,服务端主要用了Spring + Hibernate进行开发,还配有mysql数据库,可以通过局域网访问服务端请自己更改客户端代码里面的局域网ip和端口.项目默认编码GKB有兴趣的朋友可以研究一下. 下载地址:

我是如何自学Android,资料分享(2015 版)

自己学了两三个月的Android,最近花了一周左右的时间写了个App——Diigoer(已开源),又花了一两周时间找工作,收到了两个Offer,也算是对自己学习的一种认可吧:我刚开始学习总结的——<我是如何自学Android,资料分享>,如果是初学Android 的话,不应该错过的,而今天这篇分享好这篇文章,相对于第一次写的会有所提升,所以建议先把上一篇看了,再来看这一篇:那下面就切入正题吧,之前重复的就不再介绍了,相对于第一季,自己对Android 的认识更加深了(算是入门了吧),干货更多了

我是如何自学Android,资料分享

我是如何自学Android,资料分享(2015 版) 已经完成,我的建议是先把这一篇看完,再看2015 版的.关于我在学习中开发的项目代码,已经发布在: 爱开发-源码搜索,集成了上万个App源码供开发者学习和下载 废话不多说,开始正文: 最近知乎上有网友问我怎么自学Android,其实说实在的,我学的也一塌糊涂,当然在学习过程也积累了一些知识,对于以前没接触过Android的朋友,或者刚入门Android 的朋友,这篇文章作为入门,那是再合适不过了,希望对刚入门Android的朋友有帮助,接下来

转自:如何自学Android(强烈推荐)

转自: http://gityuan.com/2016/04/24/how-to-study-android/ 看到很多人提问非科班该如何学习编程,其实科班也基本靠自学.有句话叫“师傅领进门修行靠个人”,再厉害的老师能教你的东西都是很有限的,真正的修行还是要靠自己.我本科是学数学的,虽然研究生是计算机专业,但研究生往往是做研究工作,并不会接触编程这么基本的东西,关于编程相关我都是靠自学.对于Android这一块,是参加工作还开始接触,开始自己学习的. 学习级别,很多人都往往划分成入门.初级.中间

重新开坑:开始自学Android编程

开坑原因 从高考后开始的这轮对于计算机知识的学习,最早的热情就是来自于学习Android Development.我们几百块钱就能买到一个不错的廉价Android设备,WLAN.GPS.NFC.4G.Screen.Camera等硬件一应俱全,利用这些硬件实现一些有趣的功能,让生活更高效,是我学习Android Development的最初动力.当然,事情不是我想象的那么简单,没有Java基础(或者说没有任何Computer Science基础)的我被搞得晕头转向,只得抱起厚厚的Core Java

我是如何从零开始自学Android到一万月薪的

本篇文章致那些从零开始学 Android 的或者正要学习还没有勇气出发的人, 希望通过我的经历能够让你在学习的道路中坚持下来. 我的第一份工作 毕业之际通过学校的校招找到了一家传统软件公司,是做政务软件的.我以java工程师的职位入职, 入职期间大多数却是在做debug调式的工作, 偶尔会做一些小的需求, 每天朝九晚五的日子真的是悠哉, 在校期间就已经知道安卓了, 就一直想学, 可惜在校时候没能坚持下来, 只学了一点点皮毛, 如今悔之晚矣. 我心里一直惦记着, 这一次我一定要坚持下来, 于是开始

自学android半年,已从.net转型成android程序员,分享下这个过程

自学从来都是一件难以坚持的事情,看过太多人三分钟热度之后就颓然放弃,然后告诉下一个要自学的人,自学很难,还是正儿八经去培训机构吧 所以首先你要对安卓开发非常感兴趣,发自内心喜欢安卓系统,日常手机如果是安卓机子最好了,这样你写完了一个app,立刻就可以在手上体验了. 推荐边学边做项目的模式 生活中缺点啥,咱就用技术去实现它,这种创造力,只有程序员才有! 你实现了自己的需求,感到非常振奋,继续下一个需求,继续振奋,这一直是个很好的正反馈循环. 所以,半年来咱陆陆续续一共完成了4个项目,除了第一个太简

Android笔记-活动生命周期&amp;Bundle回收临时数据&amp;活动启动模式&amp;常用技巧

Android使用任务(Task)管理活动,是一组存放在返回栈(Back Stack)里的活动的合集: 系统总是显示栈顶活动给用户: 启动新活动->新活动入栈 按下Back键或调用finish()->栈顶活动出栈 活动生命周期的四种状态: 1. 运行状态:处于栈顶 2. 暂停状态:不处于栈顶,但仍然可见 3. 停止状态:不处于栈顶,完全不可见,系统仍然保存其状态和成员变量,但不可靠 4. 销毁状态:从栈中移除,活动被系统回收 Activity的七个回调方法: 1. onCreate():活动第