样例GeoQuiz应用开发 第1章
1. Activity是Android SDK的Activity类的一个具体实例,负责管理用户和信息屏的交互。应用的功能是通过编写一个Activity子类来实现的。简单的可能只有一个子类,复杂的应用则会有多个。
2. 布局定义了一系列用户界面对象以及它们显示在显示屏上的位置。组成布局的定义保存在XML文件当中。每个定义用来创建屏幕当中的一个对象如按钮或者文本对象。
首先实现一个简单的页面,效果图如图:
代码实现:
activity_main.xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="24dp"
android:text="@string/question_text"/> <LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/true_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/true_button"/>
<Button
android:id="@+id/false_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/false_button"/>
</LinearLayout>
</LinearLayout>
MainActivity.java代码 :
package com.example.a83856.myapplication1; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button mTrueButton;
private Button mFalseButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mTrueButton=(Button)findViewById(R.id.true_button);
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,R.string.incorrect_toast,Toast.LENGTH_SHORT).show();
}
}); mFalseButton=(Button)findViewById(R.id.false_button);
mFalseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,R.string.correct_toast,Toast.LENGTH_SHORT).show();
}
});
}
}
strings.xml代码:
<resources>
<string name="app_name">My Application1</string>
<string name="question_text">Constantinople is the largest city in Turkey</string>
<string name="true_button">TRUE</string>
<string name="false_button">FALSE</string>
<string name="correct_toast">Correct!</string>
<string name="incorrect_toast">Incorrect!</string>
</resources>
思考以及一些概念的解释:
1. 有哪些布局,什么时候用什么布局?
这里面使用的是LinearLayout组件,其他的还包括FrameLayout,TableLayout,RelativeLayout。
2. 配置组件的一些常用属性:
1. android:layout_width和android:layout_height属性。它们有常见的两个属性match_parent(视图和父视图大小相同)和wrap_content(视图根据其展示的内容自动调整大小)。
其中LinearLayout组件的高度和宽度都是match_parent,是因为虽然它为根元素,但是它也有父视图View。其他的可以根据你的实际需要去使用。
2. android:padding="24dp" 该属性告诉组件在决定大小的时候除了要根据内容本身之外还要增加额定的指定量的空间,使整体变得更加美观。
3. android:orientation属性,它决定子组件是水平放置还是垂直放置。
4. TextView和Button组件有android:text属性,它指定组件要显示的文字内容。(注意:它的属性值不是字符串值,而是对字符串资源的使用)
3. 从布局XMl到视图对象
Java类文件包括一个Activity方法:OnCreate(Bundle)。也就是我们看到的super.OnCreate(savedInstanceState)。activity子类的实例创建之后,该方法会被调用。并且activity创建之后,它需要获取并管理自己的用户界面。获取之后调用setsetContentView(R.layout.activity_main)方法,根据传入的布局资源ID参数,该方法生成指定布局的视图并将其放置到屏幕上。
4. 理解资源(包含字符串资源)和资源ID
布局是一种资源,资源是一种应用非代码形式的内容,比方说图像文件,音频文件,以及XML文件等。Android应用在编译时,自动生成一个R资源类,R资源类包含了所有资源文件的引用。资源ID就是方便我们去引用这个资源。Android为整个布局文件以及各个字符串生成资源ID,但是activity_main布局文件中的组件除外,因为不是所有的组件都需要资源ID,所以你在需要的时候就需要自己去创建一个资源ID。也就是我们看到的android:id=“@+id/***”。有了资源ID,我们在java写代码的时候就能很方便的使用了。
5. 引用组件
在activity中,可以通过findViewBy(int id)方法引用该组件,该方法,以组件的资源ID作为从参数,返回一个视图对象。
6. 设置监听器。
Java里面有,就不多说了。
7. toast:Android系统中一种消息框类型。
当视图显示给用户,在应用程序中显示为浮动。和Dialog不一样的是,它永远不会获得焦点,无法被点击。Toast类的思想就是尽可能不引人注意,同时还向用户显示信息,希望他们看到。而且Toast显示的时间有限,Toast会根据用户设置的显示时间后自动消失。
调用方法:Toast.makeText(Context context,int resId,int duration)。Context参数通常是一个Activity的一个实例,第二个参数时toast要显示的字符串消息的资源ID,第三个用来指定toast消息显示的持续时间。
样例GeoQuiz应用开发 第1章的更多相关文章
- 样例GeoQuiz应用开发 第2章
先介绍一下MVC,Model View Controller,是软件架构中最常见的一种框架. 简单来说就是通过 controller 的控制去操作 model 层的数据,并且返回给 view 层展示, ...
- nginx https 配置样例
站点nginx https 配置模板 第一章 nginx 支持https 配置样例 其他 相关链接地址 第一章 nginx 支持https 配置样例 说明:https 段配置参数说明 Server 段 ...
- C#开发Unity游戏教程循环遍历做出推断及Unity游戏演示样例
C#开发Unity游戏教程循环遍历做出推断及Unity游戏演示样例 Unity中循环遍历每一个数据,并做出推断 非常多时候.游戏在玩家做出推断以后.游戏程序会遍历玩家身上大量的所需数据,然后做出推断. ...
- 2单表CRUD综合样例开发教程
东软集团股份有限公司 基础软件事业部 单表CRUD综合样例开发教程 东软机密 tui 更改履历 版本号 更改时间 更改的 图表和章节号 状态 更改简要描述 更改申 请编号 更改人 批准人 V1.0 2 ...
- 构造Scala开发环境并创建ApiDemos演示样例项目
从2011年開始写Android ApiDemos 以来.Android的版本号也更新了非常多,眼下的版本号已经是4.04. ApiDemos中的样例也添加了不少,有必要更新Android ApiDe ...
- 让你提前认识软件开发(19):C语言中的协议及单元測试演示样例
第1部分 又一次认识C语言 C语言中的协议及单元測试演示样例 [文章摘要] 在实际的软件开发项目中.常常要实现多个模块之间的通信.这就须要大家约定好相互之间的通信协议,各自依照协议来收发和解析消息. ...
- 【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图
本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi) 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos2d- ...
- SNF快速开发平台MVC-各种级联绑定方式,演示样例程序(包含表单和表格控件)
做了这么多项目,经常会使用到级联.联动的情况. 如:省.市.县.区.一级分类.二级分类.三级分类.仓库.货位. 方式:有表单需要做级联的,还是表格行上需要做级联操作的. 实现:实现方法也有很多种方式. ...
- SNF开发平台WinForm-审核流使用方法样例
一.效果如下: 二.如何实现 1.程序的数据表设计规范,参考<09.SNF-C#编程规范V1.5.docx>文件. 2.程序操作程序 2.1.在程序页面拖拽控件 2.2.程序的Load事件 ...
随机推荐
- 04_显示意图打开activity
实际上用显式意图打开一个activity就很简单了.只需要指定你要打开的这个activity的class就可以了. 需要注意一点的是创建了一个ThirdActivity必须要在清单文件里面声明.如果没 ...
- [笔记]如何将已存在的JAVA添加到当前ECLIPSE JAVA工程中
找到路径.ctrl C .ctrl V F5就行了
- HDU5996:dingyeye loves stone
题目链接:dingyeye loves stone 题意:给出一棵树,树上的每个节点都有石子若干, 两人博弈,每次操作都可以把任意节点的任意石子数转移到它的父亲节点, 若无法操作则输,给出树上的节点及 ...
- JAVA值传递和引用传递 以及 实参是否改变
八大数据类型和String 在进行传递的时候 不会改变. 八大数据类型 public class parameterValue { //值传递 public static void main(Str ...
- Hdu 4465 Candy (快速排列组合+概率)
题目链接: Hdu 4465 Candy 题目描述: 有两个箱子,每个箱子有n颗糖果,抽中第一个箱子的概率为p,抽中另一个箱子的概率为1-p.每次选择一个箱子,有糖果就拿走一颗,没有就换另外一个箱子. ...
- 随机L系统分形树 分类: 计算机图形学 2014-06-01 23:27 376人阅读 评论(0) 收藏
下面代码需要插入到MFC项目中运行,实现了计算机图形学中的L系统分形树. class Node { public: int x,y; double direction; Node(){} }; CSt ...
- PHP autoload实践
本文目的 本文简要的描述了PHP提供的autoload机制,以及在scake中使用实践.用于减少不必要的文件包含,提高php系统性能. 什么是__autoload php是脚本语言,不同于c++只需要 ...
- 配置Oracle网络服务
Oracle网络服务是什么呢? Oracle网络服务是客户端访问数据库服务器端才需要配置的,也就是说,你的Oracle数据库没有装在你自己的电脑上,你需要去访问别人电脑上的Oracle数据库,那么你就 ...
- form表单ajaxSubmit提交并验证
html: <form class="register-form" action="{:U('')}" method="post"&g ...
- Partial(部分方法,局部方法),virtual(虚方法),abstract(抽象方法)
Partial 部分方法顾明思议是方法的一部分,不完整的,在ide编译时候,会将所有部分方法加载到一起统一编译,如果分部方法没有被实现,编译器就不会.对他们进行编译. 局部类型的限制 (1) 局部类型 ...