样例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事件 ...
随机推荐
- 【180】IDL 读写 HDF 文件
HDF(Hierarchical Data Formats)数据格式由 NCSA 开发.HDF 提供了大量的数据模式,包括多维数组.表格.图像.注解和调色板.在下面的章节中,将描述 HDF 科学数据系 ...
- selenium中同名的class如何区分
例子是使用了selenium3.7.0 , python 3.6.2 , 火狐57版本 以下是例子的源码: <!DOCTYPE html><!-- <html> --& ...
- bzoj 4078: [Wf2014]Metal Processing Plant【二分+2-SAT+枚举+并查集】
枚举从大到小s1,二分s2(越大越有可能符合),2-SAT判断,ans取min 思路倒是挺简单的,就是二分的时候出了比较诡异的问题,只能二分s2的值,不能在数组上二分... 有个优化,就是当不是二分图 ...
- Access operations
Access operations Accessing elements inside tensors Suppose we have the following tensors: > t = ...
- react-native页面之间的相互传值
react-native页面之间的相互传值 之前在自己学习react-native的时候,在页面跳转和传值问题上花了一段时间去网上搜索和查找资料,自己总结了两个方法.可以参考 https://blog ...
- #define及其用法
#define 在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接前后两个参数,把它们变成一个字符 串. #include<stdio.h ...
- 【转】Hive安装及使用攻略
Posted: Jul 16, 2013 Tags: HadoophiveHiveQLsql分区表 Comments: 18 Comments Hive安装及使用攻略 让Hadoop跑在云端系列文章, ...
- Java socket2
通过socket对象可以获取通信对方的socket信息 客户端: import java.net.*; import java.io.*; public class TestServer { publ ...
- c#拖拽文件
在“属性”窗口中,先设置MDI的父窗口的AllowDrop 属性更改为true;2.在父窗口的事件中添加下面两个事件 private void Form1_DragEnter(object sende ...
- Nexus3.0搭建私服上传JAR包 Windows10
背景 近期换了一个项目组,用的是公司自研产品,涉及到很多内部JAR包引用,版本号很多,每次更新都是产品部给出jar包,项目组成员各自复制一套本地替换,来了新人各种安装配置,复杂度太高,这不,我一来,又 ...