小应用 Magic8

Similar documents
res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

第一章 Android 简介与开发环境搭建

RecyclerView and CardVew

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

Dynamic Layout in Android

Android Service

Lecture01_Android介绍

Android Fragment

Microsoft Word - 第1章 Android基本概念.docx

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

03 开发入门.key

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

Lecture01_Android介绍

人民邮电

单击以编辑母片 Content 标题样式 LinearLayout 排版模式 TableLayout 排版模式 RelativeLayout 排版模式 AbsoluteLayout 排版模式 FrameLayout 排版模式 GridLayout 排版模式 TabWidget 切換卡 Lab 5 2

Microsoft PowerPoint - 03 开发入门.ppt [兼容模式]

untitled

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

_banneradview.settest(true); _banneradview.setuserkeywords("swimming"); _banneradview.setusercategories("1,3,4"); _banneradview.setusergender(jdbanner

01_Service

Microsoft Word - 第4章 3D相册.doc

<4D F736F F D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

第6讲

1

Android 开发教程

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

Microsoft PowerPoint - 05.Android 介面元件-RelativeLayout、Button、TextVeiw、EditText

PowerPoint 簡報

DU Ad Platform_SDK 安卓接入指南 DU Ad Platform_SDK for Android 接入手册 ( 触发式广告 ) DUAd_SDK_Trigger v1.0 百度在线网络技术 ( 北京 ) 有限公司 百度在线网络技术 ( 北京 ) 有限公司 - 1 -

Microsoft Word - 第3章.doc

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="

内文-2.indd

任务实施 (1) 创建项目 图 3-1 欢迎界面 首先创建一个工程, 将其命名为 BoXueGu, 指定包名为 com.boxuegu (2) 导入界面图片将欢迎界面所需要的背景图片 launch_bg.png 导入到 drawable 文件夹中, 项目的 icon 图标 app_icon.png

掌盟 SoEasy SDK 开发者帮助文档 1. 接入前项目检查 根据游戏接入后出现的问题, 对游戏项目做以下几点要求 : a) AndroidManifest.xml 中 android:targetsdkversion="19" b) 如果 AndroidManifest.xml 有 insta

Microsoft Word - Android 7.x.doc

Android 编程基础 Android 开发教程 & 笔记 1

教案模板4-2

建立Android新專案

Microsoft Word - weather12 刷新按钮动画+搜索框+bug处理.docx

Microsoft Word - 第3章 Activity.doc

Android Android Android SDK iv

0511-Android程式之GPS應用_專題週記4

Android 开发教程

Microsoft Word - 第3章.doc

Android + NFC

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Android线程和进程

Microsoft Word 杨超-spinner实现省市县的三级联动.docx

上海市教育委员会文件

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

Chapter 4

幻灯片 1


建模与图形思考

可 Web 编程的NativeUI 设计与实现

_banneradview.setuserkeywords("swimming"); _banneradview.setusercategories("1,3,4"); _banneradview.setusergender(jdbanneradview.gender_male); _bannera

建模与图形思考

试题

基于CDIO一体化理念的课程教学大纲设计

腾讯社交广告转化追踪 Android SDK 接入说明文档 V1.2

Java 1 Java String Date

Microsoft Word - Android App开发从入门到精通.doc

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

Chapter 10

Microsoft PowerPoint - 04 界面编程.ppt [兼容模式]

2 从列表选择在添加黑名单界面中, 点击 从联系人中添加 按钮时, 会跳转到联系人列表界面, 点击其中的任意一个联系人, 此时该联系人的电话号码和姓名会显示在添加黑名单界面的编辑框中, 点击下方的 添加 按钮, 此时会将该号码添加到黑名单中, 并在主界面中展示, 如图 3-2 所示 图 3-2 从联

基于Cortex-A8 Android&Linux系统与应用开发

新・解きながら学ぶJava

1. 2. Flex Adobe 3.

Microsoft PowerPoint - chapter05.ppt

Microsoft Word - 1 扉页

“百企入校——广西青年企业家协会高校

教学〔2016〕120号

Microsoft Word - A _ doc

Microsoft Word - AEL CH05.doc

Android 基礎教學

Microsoft Word - 01.DOC

课程代码:?

概述

ArcGIS API for Android 进阶

Microsoft Word - 扉页.doc

XXX说明书

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

Guava学习之Resources

(京)新登字063号

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

题目

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

Android 教學

软件工程文档编制

111

Android应用开发教程

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

版权声明

Transcription:

胡家威 计研135班 http://hujiaweibujidao.github.io/

小应用 Magic8

Android 系统简介 Android 应用结构 Android 四大组件 Activity 生命周期 Android 资源管理 UI 组件和容器组件 内容概要 ( 上 )

Android 系统简介

Android 市场份额

Android 是如何诞生的? Android 之父 :Andy Rubin 现就职于 Google, 曾一直主管 Android 项目, 现在正在进行一项秘密的机器人项目

那些年的 Android 系统

Android 系统架构

Android 运行时 JRE(Java Runtime Environment) 包括 JVM(Java Virtual Machine) 和其他功能函数库 Android Runtime Environment 包括 Dalvik 虚拟机和核心库集 Dalvik 虚拟机和 JVM 不同, 它并没有遵守 JVM 规范, JVM 运行的是 Java 字节码 (.class) 文件, 而 Dalvik 虚拟机运行的是其专有的 Dalvik Executable (.dex) 文件 每个 Android 应用程序都运行在单独的 Dalvik 虚拟机中, 以便实现对应用程序的隔离 Dalvik 虚拟机针对移动平台进行了很多优化, 所以性能很好

Android 应用结构

Android 应用标准目录结构 AndroidManifest.xml 文件是应用程序的清单文件 src: 存放 Java 源代码 res: 存放应用程序的资源文件, 包括图片 音效 界面布局文件等, 它们都能通过 R 资源清单类进行访问 assets: 存放原生资源文件, 其中的资源不能通过 R 资源清单类进行访问 libs: 存放第三方或者应用内 NDK 开发得到的库文件 gen: 存放 aapt 工具自动生成的 Java 代码 bin: 存放编译结果和打包得到的文件, 例如 class 文件 dex 文件和 apk 文件等

AndroidManifest.xml 文件 整个 Android 应用的全局描述文件 (1) 应用兼容的最低版本 <uses- sdk android:minsdkversion="8" android:targetsdkversion="18" /> (2) 应用所需的权限声明 <uses- permission android:name="android.permission.internet" /> <uses- permission android:name="android.permission.vibrate" />

AndroidManifest.xml 文件 (3) 应用的基本信息 ( 名称 图标 主题等 ) <application android:icon="@drawable/magic8" android:label="@string/app_name" android:screenorientation="portrait" android:theme="@style/android:theme.notitlebar" > (4) 应用的组件声明 (activity service contentprovider 等 ) <activity android:name="edu.thu.magic.magicactivity" /> <activity android:name="edu.thu.magic.aboutactivity" />

应用资源字典类, 为各种资源生成索引文件 :gen/edu/thu/magic/r.java [ 代码片段 ] public static final class layout { } public static final int activity_about=0x7f030000; public static final int activity_logo=0x7f030001; public static final int activity_magic=0x7f030002; public static final class raw { } public static final int shake_match=0x7f040000; public static final int shake_nomatch=0x7f040001; public static final int shake_sound=0x7f040002; public static final class string { } R.java 文件 public static final int app_name=0x7f070000;

Android 四大组件

Activity 是应用程序的交互界面, 类似 Swing 编程中的 JFrame 控件 所有 Activity 组件都是继承自 Activity 基类, 它们拥有自己的生命周期 Activity 组件

Service组件 Service和Activity地位并 列 只是它通常位于后台 运行 一般不需要和用户 交互 所有Service组件 都要继承自Service基类 它拥有自己的生命周期

BroadcastReceiver 组件 BroadcastReceiver 组件是一个广播接收器, 类似于事件编程中的事件监听器, 它监听的事件源是 Android 应用中的其他组件

ContentProvider 组件 ContentProvider 为系统中为跨应用的数据交换提供了标准 应用可以通过 ContentProvider 提供数据, 其他应用可以通过 ContentResolver 来访问数据

Activity 生命周期

Activity 生命周期 结合 Servlet 程序, 浅谈对 生命周期 的理解 : 生命周期是指某个对象具有几个基本状态 ( 生命周期中的不同阶段 ), 对象实例在不同的状态下运行对应状态下的方法 ( 生命周期方法 ); 开发者不需要创建 Servlet 或者 Activity 的实例, 它们的实例都由 外部容器 创建, 对于 Servlet 来说是指 Web 容器, 对于 Activity 来说是指 Dalvik 虚拟机 ; 开发者不需要调用它们的方法, 它们的生命周期方法都是由 外部容器 通过回调的方式调用, 开发者只需要实现生命周期方法即可 ;

public class Activity extends ApplicationContext { protected void oncreate( ); protected void onstart(); protected void onrestart(); protected void onresume(); protected void onpause(); protected void onstop(); protected void ondestroy(); }

Activity 简单实例 关于作者 界面文件 :src/edu/thu/magic/aboutactivity.java public class AboutActivity extends Activity { protected void oncreate(bundle savedinstancestate){ super.oncreate(savedinstancestate); setcontentview(r.layout.activity_about); } } // 返回主界面 public void btn_about_back(view view) { AboutActivity.this.finish(); }

View 组件是所有 UI 组件和容器组件的基类, 它们需要放在容器组件中, 然后通过 Activity 调用 setcontentview 方法显示出来 setcontentview() 方法有两种使用方式 : 1. 传递一个布局管理器 (Layout); LinearLayout ll = new LinearLayout(this); setcontentview(ll); setcontentview 2. 传递一个布局管理资源的 ID setcontentview(r.layout.activity_about);

Android 资源管理

Android 应用资源可以分为两大类 : (1) 可以通过 R 清单类访问的原生资源, 保存在 res 中 ; (2) 不可以通过 R 清单类访问的资源, 保存在 assets 中 大部分资源都是放在 res 目录下, 在应用进行编译的时候会在 R 类中为资源生成对应的索引项 文件 :gen/edu/thu/magic/r.java [ 代码片段 ] public static final class layout { } Android 应用资源 public static final int activity_about=0x7f030000; public static final int activity_logo=0x7f030001; public static final int activity_magic=0x7f030002;

资源的类型和保存位置 res/layout res/menu res/anim res/drawable res/values res/raw 布局 XML 文件 菜单 XML 文件 动画 XML 文件 图片文件或者是能够编译成各种 Drawable 对象的 XML 文件多个命名为 drawable-?dpi 的文件夹存放的都是图片资源, 只不过是为了适应不同的屏幕大小存放不同分辨率的图片而已 存放各种简单值的 XML 文件, 这些简单值包括字符串 颜色 尺寸 样式 数组等, 它们分别有对应的 XML 文件名, 例如 strings.xml,colors.xml,dimens.xml,styles.xml,arrays.xml 原生资源, 例如音频或者视频文件 在 Java 代码中可以通过 openrawresource 方法得到该资源的二进制流 但是, 如果应用需要使用原生资源的话, 推荐将原生资源存放在 assets 目录下, 在 Java 代码中可以通过 AssetManager 来访问这些资源

在 Java 代码中使用资源 : R.[ 资源类别 ].[ 资源名称 ] 文件 src/edu/thu/magic/aboutactivity.java [ 代码片段 ] protected void oncreate(bundle savedinstancestate) { } 资源的使用方式 super.oncreate(savedinstancestate); setcontentview(r.layout.activity_about); 在 XML 文件中使用资源 : @[ 资源类别 ]/[ 资源名称 ] android:icon="@drawable/magic8 android:label="@string/app_name" android:textcolor="@color/text_default android:textsize="@dimen/text_titlebar_center android:theme= @style/android:theme.notitlebar [ 系统内资源 ]

字符串资源 定义应用中常用的字符串 文件 res/strings.xml <resources> <string name="app_name">magic8</string> </resources>

颜色资源 定义应用中常用的颜色 文件 res/colors.xml <resources> <color name="text_default">#ffffff</color> <color name="app_default">#711098</color> <color name="text_orange">#ff6600</color> <color name="text_green">#009e0e</color> <color name="text_light">#666</color> <color name="text_blue">#36c</color> <color name="text_preference_key">#000</color> <color name="text_preference_value">#f60</color> </resources>

定义应用中常用的尺寸大小 dp=dip=device independent pixels, sp=scaled pixels 文件 res/dimens.xml <resources> 尺寸资源 <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen> <dimen name="btn_big_textsize">18sp</dimen> <dimen name="text_default_size">15sp</dimen> <dimen name="titlebar_height">45dp</dimen> <dimen name="text_titlebar_size">12sp</dimen> <dimen name="text_titlebar_center">20sp</dimen> <dimen name="btn_titlebar_size">70dp</dimen> </resources>

Drawable 的各种子类都代表了一种 Drawable 资源, 例如 StateListDrawable,ShapeDrawable,AnimationDrawable 等等 StateListDrawable 最常用, 例如 : <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/btn_style_disabled" android:state_enabled="false"/> <item android:drawable="@drawable/btn_style_green_pressed" android:state_focused="true" android:state_pressed="true"/> <item android:drawable="@drawable/btn_style_green_pressed" android:state_focused="false" android:state_pressed="true"/> <item android:drawable="@drawable/btn_style_green_focused" android:state_focused="true"/> <item android:drawable="@drawable/btn_style_green_normal" android:state_focused="false"/> </selector> Drawable 资源

UI 组件和容器组件

View 和 ViewGroup Android 系统中的 UI 组件很多, 它们都是建立在 View 和 ViewGroup 之上的, 两者都是 View 的子类 ViewGroup 通常是作为其他 View 组件的容器来使用, 但是它也是 View 的子类, 所以 ViewGroup 中还可以包含其他的 ViewGroup ViewGroup ViewGroup View View View View

组件的两种控制方式 在 XML 布局文件中通过 XML 属性进行控制 <Button android:id="@+id/btn_logo_magic android:layout_width="fill_parent android:layout_height="wrap_content android:text=" 试试手气 /> 在 Java 代码中通过方法进行控制 Button button = new Button(this); button.settext(" 试试手气 "); button.setlayoutparams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

组件常用的 XML 属性 android:id android:layout_width android:layout_height android:text android:backgroud 设置组件的唯一标识 Java 代码可以通过 findviewbyid 方法来获取该组件对象 android:id="@+id/btn_logo_magic 设置组件宽度, 值为 fill_parent 或者 match_parent 或者 wrap_content android:layout_width="fill_parent 设置组件高度, 值同上 android:layout_height="wrap_content 设置组件上要显示的文本 android:text=" 试试手气 " 设置组件的背景, 可以是某张图片或者是某种颜色 android:background= #111 android:background="@drawable/btn_green"

组件常用的 XML 属性 android:layout_margin [Top Bottom Left Right] android:layout_padding [Top Bottom Left Right] android:visibility android:onclick 设置组件的外边距值 [ 上下左右 ] android:layout_marginleft="10dp 设置组件的内边距值 [ 上下左右 ] android:layout_paddingleft="10dp 设置组件的可见性, 值为 VISIBLE 或者 INVISIBLE 或者 GONE android:visiblity= GONE 为组件的单击事件绑定监听器 android:onclick="btn_about_back"

盒子模型

常用组件 文本框 TextView 文件 :res/activity_about.xml <TextView android:id="@+id/tv_aboutus_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_centervertical="true" android:text=" 关于作者 " android:textcolor="@color/text_default" android:textsize="@dimen/text_titlebar_center" />

常用组件 按钮 Button 文件 :res/activity_logo.xml <Button android:id="@+id/btn_logo_magic" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginleft="10dp" android:layout_marginright="10dp android:background="@drawable/btn_style_green" android:onclick="btn_logo_magic" android:text=" 试试手气 " android:textcolor="@color/text_default" android:textsize="@dimen/btn_big_textsize" />

常用组件 图片 ImageView 文件 :res/activity_about.xml <ImageView android:id="@+id/iv_about_version" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_centervertical="true android:src="@drawable/settings_version" />

其他常用组件 编辑框 EditText 提示消息 Toast 单选按钮 RadioButton 复选框 CheckBox 列表视图 ListView 网格视图 GridView 进度条 ProgressBar 拖动条 Seekbar 日期选择器 DatePicker 时间选择器 TimePicker 选项卡 TabHost 滚动视图 Scrollview 还有一大波组件没有列出来 更多内容参考 [Android 开发者网站 :User Interface]

Android 中的容器组件 ( 布局管理器 ) 大致有 : LinearLayou: 线性布局 RelativeLayout: 相对布局 AbsoluteLayout: 绝对布局 FrameLayout: 帧布局 容器组件 TableLayout: 表格布局 GridLayout: 网格布局 (Android4.0 新增 )

<LinearLayout android:id="@+id/rl_about_copyright" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:gravity="center_horizontal" android:orientation="vertical" > <TextView android:id="@+id/tv_about_copyright" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="copyright 2013 Tsinghua University." android:textcolor="@color/text_default" android:textsize="12sp" /> <TextView </LinearLayout> android:id="@+id/tv_about_copyrights" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginbottom="8dp" android:text="all Rights Resverved. " android:textcolor="@color/text_default" android:textsize="12sp" /> 线性布局

<RelativeLayout android:id="@+id/rl_shake_result" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_centerhorizontal="true" android:layout_marginbottom="60dp" android:background="@drawable/shake_match_ok" > <ImageView android:id="@+id/iv_shake_magic8" android:layout_width="50dp" android:layout_height="50dp" android:layout_alignparentleft="true" android:layout_marginleft="2dp" android:layout_centervertical="true" android:src="@drawable/magic8" /> <TextView android:id="@+id/tv_shake_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centervertical="true" android:layout_torightof="@+id/iv_shake_magic8" android:padding="10dp" android:text="you are lucky!" android:textcolor="#fff" /> </RelativeLayout> 相对布局

菜单 Menu 菜单和其他组件一样, 也有两种创建方式, 既可以通过 XML 文件声明, 也可以通过 Java 代码来完成 不论使用哪种方式, 都要重写 oncreateoptionsmenu 方法 文件 src/edu/thu/magic/logoactivity.java [ 代码片段 ] public boolean oncreateoptionsmenu(menu menu) { menu.add(0, 0, 0, " 关于作者 ");//groupid,itemid,order menu.add(0, 1, 0, " 关闭音效 "); }

菜单事件处理 重写 onoptionsitemselected 方法对菜单事件进行处理 文件 src/edu/thu/magic/logoactivity.java [ 代码片段 ] public boolean onoptionsitemselected(menuitem item) { if (item.getitemid() == 0) { // 点击了 关于作者 } else { // 点击了 关闭音效 } return true; }

胡家威 计研135班 http://hujiaweibujidao.github.io/