样例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事件 ...
随机推荐
- UVa 11401 Triangle Counting (计数DP)
题意:给定一个数 n,从1-n这些数中任意挑出3个数,能组成三角形的数目. 析:dp[i] 表示从1-i 个中任意挑出3个数,能组成三角形的数目. 代码如下: #pragma comment(link ...
- bzoj 1625: [Usaco2007 Dec]宝石手镯【背包】
裸的01背包 #include<iostream> #include<cstdio> using namespace std; int c,n,w,v,f[20001]; in ...
- Ubuntu 18.04 LTS 系统设置打不开了
在更换软件源后,安装了vim 和chrome,chrome很顺利,但是安装vim的时候后就显示有问题了,有的依赖版本不对,嫌版本太高,卸载后再装可以. 安装了python和python2 依旧是有些依 ...
- 【原创】《从0开始学Elasticsearch》—集群健康和索引管理
内容目录 1.搭建Kibana2.集群健康3.索引操作 1.搭建Kibana 正如<Kibana 用户手册>中所介绍,Kibana 是一款开源的数据分析和可视化平台,因此我们可以借助 Ki ...
- [POI2011]Temperature
Description The Byteotian Institute of Meteorology (BIM) measures the air temperature daily. The mea ...
- 51nod 1119 机器人走方格 V2
1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少 ...
- 加密解密(4)SSL协议及HTTPS握手过程
SSL协议 简介 SSL (Secure Sockets Layer 安全套接层)是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性.因特网的 超文本传输协议 (HTTP)使用 ...
- Android应用开发细节点
1.如果handler是在主线程声明,就属于主线程,handleMessage属于引用handler的那个线程:2.ByteArrayOutputStream/ByteArrayInputStream ...
- jsp 访问文件夹中的图片,tomcat配置虚拟目录
1.配置hosts文件 找到C:\Windows\System32\drivers\etc\hosts.txt 文件 添加127.0.0.1 www.image.com 在dos 命令中执行 pi ...
- WebAPI中Area的使用
很简单,创建area后,添加一下代码到AreaRegistration中即可 context.Routes.MapHttpRoute( name: "api_default", r ...