6-?????C???{???]?p



Similar documents
用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

中 国 中 西 医 结 合 杂 志 年 月 第 卷 第 期!" 通 透 性 增 加 产 生 蛋 白 水 解 酶 促 进 血 管 内 皮 细 胞 有 丝 分 裂 内 皮 细 胞 从 基 底 膜 上 迁 移 到 血 管 周 围 间 隙 粘 附 聚 集 重 构 为 三 维 管 腔 并 与 周 围 血 管

朝陽科技大學專題報告授權同意書 本同意書所授權之報告為本組在朝陽科技大學資訊與通訊系 101 學年度第 1 學 期修習之 畢業專題 / 實務專題 / 專題設計 / 專題報告 / 其他 報告名稱 : 本組就具有著作財產權之報告全文資料, 基於資源共享 合作互惠 回饋社會及促進學術研究之理念, 同意無償

4 中 南 大 学 学 报 医 学 版 摘 要 目 的 探 讨 早 发 性 精 神 分 裂 症 患 者 在 静 息 状 态 下 是 否 存 在 脑 功 能 连 接 异 常 以 及 异 常 区 域 的 定 位 方 法 采 用 第 版 美 国 精 神 障 碍 诊 断 与 统 计 手 册 ( * ) (

新・解きながら学ぶJava

## $%& %& ## () #) (( * (+++ () #) #) (+ (+ #) #) ( #, - #)). #))- # ( / / / / $ # ( * *..# 4 #$ 3 ( 5 ) ### 4 $ # 5, $ ## # 4 $# 5 ( %

! # % % & # # % #!& % &# % &# % % % # %& ( (!& (! & & % % #!! ) %&! *& % %! % %!! # % %!! %*!& % &# % &# ) ) ( % # # ) % ( (!& (! (!! # % % #!! # ( &!

(\244j\257d\276\307\274\351_ C.indd_70%.pdf)

第 期 熊 安 萍 等 *1$ 文 件 系 统 中 范 围 锁 机 制 的 应 用 研 究! 锁 命 名 空 间 '+'($($ 描 述 了 资 源 和 锁 的 集 合 它 同 时 在 客 户 节 点 和 服 务 节 点 存 在 不 同 之 处 只 是 利 用 一 个 数 据 标 识 来 有 效 区

.' 6! "! 6 "'' 6 7% $! 7%/'& 人 类 非 洲 锥 虫 病 又 称 昏 睡 病 是 布 氏 锥 虫 冈 比 亚 亚 种!! 或 布 氏 锥 虫 罗 得 西 亚 种 "#$$ %! &'!!! 感 染 引 起 的 一 种 寄 生 虫 病 以 采 采 蝇! 为 传 播 ' 媒

/0/ "!!!!! " "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " # $ % && $ $ $ $ ( $ $ ( $ ) % * ( * $ $ $ $ $ $ $ ( $ $ $ $ $ # ( $ $ ( $ $ $ ( $ $ $ $


(2) 廠 商 具 有 維 修 維 護 或 售 後 服 務 能 力 之 證 明 ;(3) 廠 商 具 有 製 造 供 應 或 承 做 能 力 之 證 明 ;(4) 具 有 相 當 人 力 之 證 明 屬 特 定 資 格 之 ㄧ 8.(3) 機 關 辦 理 預 算 金 額 為 新 台 幣 四 億 元

# # # # # # # # # % # & # & # # # () # (( # * * (( # (+ # ( (# # (# # (# # ( # ( +) (


, 2., 3., , 3.,,

Microsoft Word - 01.DOC

毛主席的猪

Microsoft Word - HERBRECIPES《中國藥膳》.doc

循经指压疗法

从 因 人 设 事 谈 起 一 部 文 学 作 品 ( 尤 其 是 长 篇 小 说 ) 的 结 构 至 关 重 要, 因 为 它 是 文 本 整 体 的 组 织 方 式 和 内 部 构 造, 既 是 形 式 又 是 内 容 ; 乃 是 表 达 主 题 最 有 效 的 艺 术 手 段 元 代 戏 曲

附件1.FIT)



北魏山东佛教文化个案研究


论 文 :?,,,,,,,,,, (, ),, ( ),,,,,,,, (, ) : (, ),,, :,, ;,,,,

年 第 期 许 德 刚 基 于 遗 忘 因 子 -./ 算 法 的 自 适 应 直 达 波 对 消 技 术 * 达 站 周 围 的 环 境 可 能 比 较 复 杂 来 自 近 距 离 不 同 固 定 物 体 所 反 射 的 多 径 信 号 也 强 于 回 波 信 号 大 大 影 响 了 雷 达 的

动 物 中 能 促 进 但 会 在 表 达 的 物 种 中 产 生 不 良 反 应 如 引 起 脂 肪 肝 或 升 高 74-4 水 平 2 # ) 9 等 建 立 血 脂 异 常 和 肝 硬 化 仓 鼠 模 型 进 行 研 究 结 果 表 明 7'&$ 不 能 改 善 血 脂 异 常 和 肝 硬

幻灯片 1


平 肝 潜 阳 方 对 偏 头 痛 肝 阳 上 亢 证 大 鼠 血 淋 巴 细 胞 蛋 白 质 表 达 的 影 响 钟 广 伟 等 3 ( +( *+* ** *66 )+* + 8#,5%< (, %95( ( /+ '( *( 6(6++*#!+ 5 6*+' 6*+) ;+( '+ 8:7)*

建模与图形思考


Java

! "#$ %$ $ 资 料 与 方 法 $ 调 查 对 象 全 国 东 北 华 北 华 东 西 北 西 南 和 中 南 六 个 大 区 个 省 自 治 区 直 辖 市 * 个 城 市 中 的 & 所 医 院 参 加 了 本 次 调 查 各 省 省 会 城 市 的 医 学 院 校 附 属 医 院 省

区 结 果 和 试 验 细 节 应 放 在 正 文 中 描 述 表 中 最 左 侧 一 列 包 括 横 标 目 一 个 或 多 个 变 量 常 是 自 变 量 右 面 的 其 余 所 有 各 列 逐 项 行 对 齐 如 果 各 项 横 标 目 的 意 思 非 常 明 确 第 一 栏 可 以 不 写

第 期 邸 志 欣 等! 复 杂 山 前 带 地 震 勘 探 采 集 技 术 的 实 践 与 认 识 " 剧 烈 以 上 条 件 给 山 前 带 地 震 采 集 观 测 系 统 设 计 及 炮 检 点 布 设 地 震 波 激 发 接 收 噪 声 压 制 静 校 正 处 理 等 带 来 了 诸 多 问

中 国 中 西 医 结 合 杂 志 年 月 第 卷 第 期!"# $! 症 状 在 诊 断 时 推 荐 应 用 $3 的 症 状 指 数 $!0 " 0 %!2 3% ". )./!0 ) 1/! 5 1! 0 %7$3 6 进 行 基 础 评 估 和 治 疗 监 测 心 理 状 况 的 评 估 可

葛 夕 良 论 我 国 居 民 企 业 境 外 所 得 重 复 征 税 消 除 制 度 的 优 化 上 大 部 分 国 家 和 地 区 都 实 行 所 得 税 制 度 以 及 居 民 税 收 管 辖 权 所 以 就 不 可 避 免 地 对 其 居 民 的 海 外 纯 收 益 实 施 了 国 际 重

1 中 华 物 理 医 学 与 康 复 杂 志, - 年 月 第.0 卷 第 期 & + &# * & " (, - ".0 $ 代 康 复 理 念 更 强 调 患 者 主 动 参 与 因 此 笔 者 倾 向 于 采 用 球 囊 主 动 扩 张 术 即 治 疗 时 以 患 者 主 动 参 与 为 主

期 李 海 利 等 猪 接 触 传 染 性 胸 膜 肺 炎 放 线 杆 菌 血 清 型 分 子 鉴 定 及 药 敏 试 验 / 只 产 生 两 种,9: 毒 素 血 清 型 毒 力 的 强 弱 与,9: 毒 素 种 类 有 关 产,9: 和,9: 的 血 清 型 毒 力 最 强 本 研 究 对 临

Database_001

气 候 与 环 境 研 究 卷 &!' 张 书 余 许 多 学 者 对 人 体 舒 适 度 进 行 了 研 究!!0!! " 对 欧 洲 不 同 国 家 的 城 市 热 舒 适 性 进 行 了 研 究 周 后 福 探 讨 了 气 候 变 化 对 人 体 健 康 的 影 响 吴 兑 ) 进 行 了 多

《饲料和饲料添加剂管理条例》

"# $# %# &# # $ % & % " ( ) (# $# %# &# # & $ % &

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

關懷生命、永續經營

一 耀 州 青 瓷 的 裝 飾 手 法 與 紋 飾 種 類 耀 州 窯 的 裝 飾 紋 樣, 豐 富 多 變, 而 且 題 材 內 容 廣 泛, 組 合 形 式 多 樣, 圖 案 形 象 優 美, 令 人 賞 心 悅 目, 並 且 反 映 了 當 時 社 會 的 審 美 趣 味 和 理 想 裝 飾

農村社區土地重劃四年示範計畫執行要點

2016年5月11日泉鲤政文【2016】46号(关于调整区政府行政权力和公共服务事项的通知).doc

!

细 胞 生 物 学 荧 光 技 术 原 理 和 应 用 的 平 面 内 呈 波 形 振 动 两 个 波 峰 之 间 的 距 离 为 波 长 波 峰 的 大 小 即 为 该 光 波 的 振 幅 不 同 波 长 的 光 具 有 不 同 的 颜 色 即 光 的 波 长 不 同 光 的 颜 色 也 不 同

《安徒生童话》(四)

untitled

得 到 了 補 償. 對 於 武 姜 而 言, 莊 公 與 自 己 的 關 係 並 不 親 密, 而 共 叔 段 又 是 自 己 向 來 疼 愛 有 加 的 兒 子, 所 以, 對 莊 公 提 出 再 怎 麼 無 理 的 要 求, 武 姜 也 不 會 覺 得 有 什 麼 不 妥 之 處, 而 對 共

国 际 政 治 研 究 年 第 期 一 中 国 国 名 渊 源 暨 中 外 交 流 中 中 国 的 称 谓 一 不 在 乎 国 名 的 王 朝 国 家 世 界 上 绝 大 多 数 国 家 的 国 名 是 在 历 史 上 逐 渐 形 成 的 国 名 具 有 排 他 性 宣 示 一 国 之 主 权 国

#. #. # #. /0* # # # # # /0* / : # # )*+,- *:87712 # # # # */0* # # # # # ) # * /0* # )*+,- # )*+,- * ) ) * ) )*+,- # # # /0* # # # /0

FY.DOC


! # % % % % % % % % %

zt

一 总 体 要 求 一 ) 严 格 把 握 定 义 地 方 政 府 融 资 平 台 是 指 出 地 方 政 府 自 资 设 立 并 承 担 连 带 还 款 责 任 的 机 关 事 业 企.l 三 类 法 人 ( 二 ) 完 善 " 名 单 制 " 管 理 各 银 行 要 继 旗 完 善 融 资 平


文 每 由 充 羊 * 亚 就 N 有 达 品 周 成 虽 驰 水 拟 希 公 下 它 当 上 希 仿 上 潘 注 可 当 缪 歇 传 湖 也 也 对 多 生 古 反 或 只 牛 分 可 妙 西 4 期 杨 宏 芹 发 展 之 源 与 流 7 e < x ; > u 0 V 转 义 可 表 示 短

期 李 环 等 邻 苯 二 甲 酸 二 丁 酯 暴 露 对 雄 性 大 鼠 生 精 细 胞 功 能 影 响 1 )!# $ + $#'!!) #!%,$' $ 6. $#! +!! '!!' # $! 引 言 - # # 近 年 来 生 殖 健 康 问 题 日 益 突 出 % 不 孕 不 育 等 各

$ $ $ %&!! ( )!"" " * ) " +! + ("$ + ) * "! ",! + " +! $, ( * " -. / !!""! %! * " 2 & * 345! + " %! + )! %! + )!!! (!"" ( ) ( + ) * + * 2!( *!)

6寸PDF生成工具


第 期 周 超 英 等 甜 瓜 黑 斑 病 菌 的 生 物 学 特 性 及 室 内 药 剂 筛 选 * /3 / /5%.5 %: ' ' &-20 - &% /%&% /.&.. 5 /05/ 07 /0/%&% /.&.38 /% -/.&.. 5 /05/ 07 05/ /8 00

1911 年 武 汉 起 义, 广 东 独 立 胡 汉 民 任 总 督, 陈 任 广 东 军 政 府 外 交 部 副 部 长 陈 不 愿 做 官, 几 个 月 后 即 辞 职 1915 年 与 李 煜 堂 设 立 上 海 保 险 公 司, 陈 任 主 席 1921 年 孙 中 山 就 任 非 常 大

第 期 侯 建 波 等 液 相 色 谱 ) 串 联 质 谱 法 同 时 测 定 牛 奶 和 奶 粉 中 * 种 非 蛋 白 含 氮 化 合 物 $$0#")"$$$:$"$ 0"$$$0#"'9-27#0).$%"$8##:$0$$# %$$0 2!)&'&' 1 #$$# ##. &4&0$0$%

毕业生就业政策读本

一、银行结售汇业务

田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田

Microsoft Word - 台東縣文學.doc

喜 临 门 家 具 股 份 有 限 公 司 2016 年 第 二 次 临 时 股 东 大 会 会 议 议 程 会 议 召 集 人 : 公 司 董 事 会 现 场 会 议 时 间 :2016 年 6 月 16 日 ( 星 期 五 ) 下 午 14 时 现 场 会 议 地 点 : 浙 江 省 绍 兴 市

第 1 頁 C97131 第 一 部 分 : 選 擇 題 ( 佔 54 分 ) 一 單 選 題 ( 佔 36 分 ) 說 明 : 第 1 題 至 第 18 題, 每 題 選 出 一 個 最 適 當 的 選 項, 標 示 在 答 案 卡 之 選 擇 題 答 案 區 每 題 答 對 得 2 分, 答 錯

关于调整可充抵保证金证券的通知( )

<4D F736F F D BEC7A67E2DB5A7B8D52DBB79A4E5AFE0A44FB4FAC5E7BEE3A658A5FE2E646F63>

Microsoft Word - Book 2 月下行.doc

<4D F736F F D F F355FCCECB5D8BFC6BCBCB5DACEE5BDECB6ADCAC2BBE1B5DAB6FEB4CEBBE1D2E9BEF6D2E9B9ABB8E62E646F6378>

江 苏 科 技 大 学 809 机 械 设 计 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 江 苏 科 技 大 学 810 机 械 原 理 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 江 苏 科 技 大 学 机 械 原

浙 江 财 经 大 学 891 统 计 学 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 浙 江 财 经 大 学 统 计 学 891 全 套 考 研 资 料...22 浙 江 财 经 大 学 高 等 数 学 601 全 套 考 研 资 料

第 1 頁 C97232 第 一 部 分 : 選 擇 題 ( 佔 55 分 ) 一 單 選 題 ( 佔 34 分 ) 說 明 : 第 1 至 第 17 題, 每 題 選 出 一 個 最 適 當 的 選 項, 劃 記 在 答 案 卡 之 選 擇 題 答 案 區 每 題 答 對 得 2 分, 答 錯 或

Microsoft Word - Book 11 人道行.doc

<4D F736F F D EA16DBB50B3AFA742A4A7AED1A16EBD67A6AEA4CEA8E4C3C0B34EAF53A6E2B1B4AA522D2DB3B9A5BFA9BE5F702E34332D35345F2E646F63>

Microsoft Word - 【預官_士_考選歷屆試題86~100】.doc

蘇轍〈黃州快哉亭記〉析論

Microsoft Word - _二_-1-2D研習講義-孫藝玨.doc

盐 田 区 2015 年 社 会 建 设 行 动 计 划 2015 年 是 全 面 深 化 改 革 的 关 键 之 年 全 面 推 进 依 法 治 区 的 开 局 之 年, 也 是 十 二 五 规 划 的 收 官 之 年 十 三 五 规 划 的 谋 划 之 年 结 合 省 市 年 度 社 会 工 作

<4D F736F F D20BBA6CBC9BDCCC8CBA1B A1B BAC5B8BDBCFE2E646F63>

025-

准 尧 角 色 定 位 尧 存 在 周 期 形 态 和 方 式 等 角 度 与 传 统 媒 介 环 境 进 行 比 较 袁 分 析 了 网 络 传 播 中 野 意 见 领 袖 冶 在 分 散 而 微 尧 重 局 部 事 实 细 节 真 实 尧 非 层 级 去 权 力 化 等 方 面 的 形 态 特

第 一 部 分 目 录 销 售 管 理 规 范 汇 编... 5 Ⅰ 销 售 资 格 管 理 篇 关 于 保 险 公 司 销 售 人 员 资 格 管 理 的 规 定 关 于 银 邮 代 理 机 构 代 理 资 格 管 理 的 规 定 关 于 银 邮

Microsoft Word 司仲敖.doc

一 緒 論 ( 一 ) 研 究 動 機 及 目 的 中 國 唐 代 為 佛 教 發 展 輝 煌 時 期, 其 中 禪 宗 也 是 當 時 鼎 盛 流 行 的 宗 派 之 一 本 文 主 要 在 探 討 馬 祖 道 一 (709~788, 以 下 簡 稱 馬 祖 ) 所 傳 承 的 洪 州 禪 ( 又

山 东 财 经 大 学 431 金 融 学 综 合 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 2-2 金 融 学 笔 记, 由 考 取 本 校 本 专 业 高 分 研 究 生 总 结 而 来, 重 点 突 出, 借 助 此 笔 记 可 以 大 大 提 高 复 习 2-3 金

由 于 企 业 的 经 营 活 动 具 有 内 在 不 确 定 性, 某 些 财 务 报 表 项 目 不 能 精 确 计 量, 只 能 进 行 估 计 正 是 由 于 这 种 不 确 定 性, 在 会 计 实 务 中, 很 多 财 务 报 表 舞 弊 都 与 会 计 估 计 相 关 对 于 注 册

019-

Microsoft Word - Book 3 巫山行.doc

Transcription:

( ) 101.06

遊 戲 名 稱 圖 片 縮 放 相 關 類 別 與 元 件 程 式 與 執 行 結 果 遊 戲 名 稱 記 憶 遊 戲 相 關 類 別 與 元 件 程 式 與 執 行 結 果 參 考 文 件 - 元 件 宣 告 類 別 2

控 制 桌 面 上 的 圖 片 可 任 意 的 移 動 不 破 壞 方 位 可 縮 放 的 功 能 3 遊 戲 原 始 碼 來 源 :http://mate.idc.scu.edu.tw/android/

- 開 始 初 始 化 的 圖 片 經 過 縮 小 及 移 動 後 的 圖 示 4

-1 android.app.activity; //Eclipse 自 動 import 導 入 的 類 別 android.os.bundle; //Eclipse 自 動 import 導 入 的 類 別 android.content.context;// 使 用 監 聽 器 android.graphics.bitmap;// 點 陣 圖 基 本 操 作 類 別, 以 實 現 對 點 陣 圖 的 操 作 android.graphics.bitmapfactory;// 可 說 是 做 I/O 類 別 android.graphics.canvas;// 在 螢 幕 上 做 繪 圖 圖 案 動 作 等 android.graphics.matrix;// 控 制 圖 片, 例 如 做 縮 放 和 旋 轉 處 理 5

-2 android.util.attributeset;// 與 XML 檔 案 中 的 連 結 標 記 android.util.displaymetrics;// 來 描 述 畫 面 顯 示, 如 它 的 大 小, 密 度, 字 體 縮 放, 顯 示 一 般 資 訊 android.view.motionevent;// 用 於 觸 碰 螢 幕 的 軌 跡 時 的 感 應 類 別 android.view.scalegesturedetector; // 當 觸 碰 感 應 有 動 作 時, 即 回 傳 android.view.view; // 用 於 創 建 通 用 佈 局 中 的 組 件 之 間 的 差 距 android.view.window; // 使 用 螢 幕 android.view.windowmanager; // 視 窗 管 理 6

-1 /* 宣 告 函 數 */ private BitmapmIcon; // 圖 案 private floatmposx; // 在 這 設 成 圖 案 座 標 X private floatmposy; // 在 這 設 成 圖 案 座 標 Y private floatmlasttouchx; // 當 觸 碰 螢 幕 時 的 座 標 X private floatmlasttouchy; // 當 觸 碰 螢 幕 時 的 座 標 X private ScaleGestureDetector mscaledetector; // 當 觸 碰 螢 幕 時 回 傳, 回 傳 的 值 放 入 mscaledetector private float mscalefactor = 1.f; // 比 例 係 數 private static final int INVALID_POINTER_ID = -1; private intmactivepointerid = INVALID_POINTER_ID; // 重 新 啟 動 指 標 private int screenwidth, screenheight; // 螢 幕 長 寬 private float mdegrees= 0.f; private Matrix matrix; 7

-2 /* 控 制 桌 面 */ public class ScalePicture extends Activity { @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); /* 變 成 全 螢 幕 */ requestwindowfeature(window.feature_no_title); getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, WindowManager.LayoutParams.FLAG_FULLSCREEN); setcontentview(new ScalePictureView(this, null, 0)); //ScalePictureView 設 定 圖 片 初 始 8

-3 /* 圖 片 像 素, 又 稱 大 小 */ public ScalePictureView(Context context, AttributeSet attrs, int defstyle) { super(context, attrs, defstyle); micon = BitmapFactory.decodeResource(context.getResources(), R.drawable.android); mscaledetector = new ScaleGestureDetector(context, new ScaleListener()); DisplayMetrics dm = new DisplayMetrics(); getwindowmanager().getdefaultdisplay().getmetrics(dm); screenwidth = dm.widthpixels; screenheight = dm.heightpixels; } 9

/* 圖 片 位 置 大 小 縮 放 功 能 */ public ScalePictureView(Context context, AttributeSet attrs, int defstyle) { super(context, attrs, defstyle); // 使 用 監 聽 器 XML 連 結 宣 告 整 數 變 數 defstyle micon = BitmapFactory.decodeResource(context.getResources(), R.drawable.android); // 取 得 放 在 圖 庫 裡 的 圖 案 mscaledetector = new ScaleGestureDetector(context, new ScaleListener()); // 開 始 監 聽 DisplayMetrics dm = new DisplayMetrics(); // 將 畫 面 的 資 訊 放 置 到 dm 裡 getwindowmanager().getdefaultdisplay().getmet rics(dm); screenwidth = dm.widthpixels; // 圖 片 的 寬 度 screenheight = dm.heightpixels; // 圖 片 的 高 度 } 10 執 行 結 果 畫 面 設 定 圖 片 高 寬

-4 @Override public boolean ontouchevent(motionevent ev) { //ontouchevent() 的 動 作 主 要 分 為 :Down, Up, Move.. 等 mscaledetector.ontouchevent(ev); // 另 外 也 可 以 直 接 設 定 某 個 觸 碰 點 的 動 作, 而 ACTION_DOWN 通 常 是 指 第 一 個 觸 碰 點 final int action = ev.getaction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { // 手 指 接 觸 螢 幕 final float x = ev.getx(); // 取 得 座 標 final float y = ev.gety(); mlasttouchx = x; mlasttouchy = y; mactivepointerid = ev.getpointerid(0); break; } 11

/* 變 更 圖 片 位 置 */ case MotionEvent.ACTION_MOVE: { // 手 指 移 動 final int pointerindex = ev.findpointerindex(mactivepointerid); final float x = ev.getx(pointerindex); final float y = ev.gety(pointerindex); // 記 錄 觸 碰 點 移 動 時 的 座 標, 與 先 前 記 錄 的 觸 碰 點 做 比 較, 算 出 移 動 距 離 執 行 結 果 畫 面 移 動 後 更 改 X Y if (!mscaledetector.isinprogress()) { // 因 為 在 做 雙 指 縮 放 動 作 的 時 候 也 會 觸 發 ACTION_MOVE, 所 以 使 用 一 個 if 條 件 與 縮 放 動 作 做 區 隔 final float dx = x - mlasttouchx; final float dy = y - mlasttouchy; mposx += dx; mposy += dy; 12

/* 防 止 移 動 出 界 */ if (mposx < 0 mposx > screenwidth - micon.getwidth() * mscalefactor mposy < 0 mposy > screenheight - micon.getheight() * mscalefactor) { mposx -= dx; mposy -= dy; } invalidate(); // 刷 新 頁 面 } mlasttouchx = x; // 將 碰 觸 的 新 X 值, 放 入 mlasttouchx mlasttouchy = y; // 將 碰 觸 的 新 X 值, 放 入 mlasttouchy break; } 執 行 結 果 畫 面 將 圖 片 牢 牢 地 鎖 在 畫 面 裡! 13

-5 /* 計 算 移 動 向 量 */ case MotionEvent.ACTION_POINTER_UP: { final int pointerindex = (ev.getaction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; final int pointerid = ev.getpointerid(pointerindex); if (pointerid == mactivepointerid) { final int newpointerindex = pointerindex == 0? 1 : 0; mlasttouchx = ev.getx(newpointerindex); mlasttouchy = ev.gety(newpointerindex); mactivepointerid = ev.getpointerid(newpointerindex); } break; } 14

-6 @Override public void ondraw(canvas canvas) { // 在 畫 面 上 做 動 作 時 super.ondraw(canvas); canvas.save();//scale(): 延 展 canvas canvas.translate(mposx, mposy);//translate(): 移 動 canvas canvas.scale(mscalefactor, mscalefactor); canvas.drawbitmap(micon, 0, 0, null); // 如 果 位 置 與 圖 案 不 同 解 析 度, 此 功 能 自 動 同 步 解 析 度 canvas.restore(); } private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { // 用 來 偵 測 雙 指 縮 放 動 作, 限 制 縮 放 大 小 ScaleGestureDetector 15

This image cannot currently be displayed. @Override public boolean onscale(scalegesturedetector detector) { 執 行 結 果 畫 面 限 制 圖 片 縮 放 大 小 mscalefactor *= detector.getscalefactor(); // 將 變 數 mscalefactor 同 時 代 入 canvas.scale(x, y) 的 x 跟 y, 即 可 得 到 長 寬 皆 等 比 例 縮 放 的 效 果 // 防 止 縮 放 過 大 使 圖 片 出 界 if (mposx + micon.getwidth() * mscalefactor > screenwidth mposy + micon.getheight() * mscalefactor > screenheight) { mscalefactor /= detector.getscalefactor(); } mscalefactor = Math.max(0.1f, Math.min(mScaleFactor, 3.0f)); // 限 制 縮 放 大 小 invalidate(); return true; 16

自 動 翻 牌 判 斷 確 認 性 遊 戲 初 始 化 17

- 記 住 翻 開 的 每 張 牌 位 置! 18

-1 import java.util.arraylist; // 陣 列 表 單, 作 為 目 錄 使 用 import java.util.list; // 表 單 import java.util.random; // 隨 機 函 數 import java.util.timer; // 時 間 import java.util.timertask; // 設 定 定 時 器 import android.app.activity; //Eclipse 自 動 import 導 入 的 類 別 import android.app.dialog; // 對 話 框, 用 於 顯 示 文 字, 或 輸 入 import android.content.context; // 使 用 監 聽 器, 監 聽 畫 面 import android.graphics.drawable.drawable; // 用 於 繪 製 圖 形 水 平 翻 轉 import android.os.bundle; //Eclipse 自 動 import 導 入 的 類 別 import android.os.handler; // 用 於 處 理 程 序, 排 隊 import android.os.message; 19

-2 import android.os.systemclock; // 系 統 時 間 import android.view.gravity; // 陀 螺 儀 import android.view.menu; // 清 單 選 單 import android.view.menuitem; import android.view.view; // 用 於 創 建 通 用 佈 局 中 的 組 件 之 間 的 差 距 import android.view.view.onclicklistener; // 監 聽 器 import android.widget.button; // 使 用 按 鈕 函 數 import android.widget.chronometer; // 計 時 器 import android.widget.tablelayout; // 用 於 控 制 佈 局 import android.widget.tablerow; //TableLayout 的 子 類 別, 也 是 用 於 佈 局 import android.widget.toast; 20

-1 /* 宣 告 變 數 */ private Chronometer chronometer; private static int rowcount= 4; // 宣 告 牌 數 private static int columecount= 4; // 宣 告 牌 數 private static int items; // 用 於 紀 錄 可 配 對 數 private Context context; private Drawable backimage; private int cards; // 宣 告 卡 片 陣 列 private List<Drawable> images; private Card firstcard; private Card seconedcard; private ButtonListener buttonlistener; private static Object lock = new Object(); Int paircount; private TableLayout maintable; private UpdateCardsHandler handler; 21

-2 /* 設 定 遊 戲 開 始 畫 面 */ private void initilizegame() { cards = new int[columecount][rowcount];// 使 用 陣 列 將 數 字 卡 片 放 入 items = (rowcount * columecount) / 2; // 記 錄 可 配 對 個 數 maintable.removeallviews(); // 遊 戲 4*4 宮 格 for (int y = 0; y < rowcount; y++) { maintable.addview(createrow(y)); } firstcard = null; loadcards(); // 產 生 卡 片 paircount = 0; chronometer.setbase(systemclock.elapsedrealtime()); chronometer.start(); } 22

/* */ @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); handler = new UpdateCardsHandler(); // 將 更 新 卡 片 後 的 處 理 loadimages(); // 載 入 圖 像 setcontentview(r.layout.main); backimage = getresources().getdrawable(r.drawable.empty); // 起 始 時 讀 取 問 號 的 圖 片 buttonlistener = new ButtonListener(); // 按 鈕 監 聽 maintable = (TableLayout) findviewbyid(r.id.mytablelayout); context = maintable.getcontext(); chronometer = (Chronometer) findviewbyid(r.id.mychronometer); // 使 用 時 間 計 時 chronometer.setformat(" 遊 戲 時 間 : %s"); initilizegame(); // 初 始 化 遊 戲 } 執 行 結 果 畫 面 遊 戲 開 始 畫 面 23

/* 載 入 數 字 畫 面 */ 24 private void loadimages() { images = new ArrayList<Drawable>(); images.add(getresources().getdrawable(r.drawab le.item01)); images.add(getresources().getdrawable(r.drawab le.item02)); images.add(getresources().getdrawable(r.drawab le.item03)); images.add(getresources().getdrawable(r.drawab le.item04)); images.add(getresources().getdrawable(r.drawab le.item05)); images.add(getresources().getdrawable(r.drawab le.item06)); images.add(getresources().getdrawable(r.drawab le.item07)); images.add(getresources().getdrawable(r.drawab le.item08)); } 執 行 結 果 畫 面 產 生 1~8 的 數 字 畫 面

-3 /* 產 生 數 字 並 隨 機 亂 數 */ private void loadcards() { try { int size = rowcount * columecount; ArrayList<Integer> list = new ArrayList<Integer>(); for (int i = 0; i < size; i++) { list.add(new Integer(i)); // 加 入 所 有 卡 片 編 號 } Random r = new Random(); for (int i = size - 1; i >= 0; i--) { int t = 0; if (i > 0) { t = r.nextint(i); // 隨 機 取 得 編 號 } t = list.remove(t).intvalue(); // 從 list 中 取 出 編 號 cards[i % columecount][i / columecount] = t % (size / 2); // 將 編 號 放 入 指 定 位 置 } 25

-4 /* 再 次 洗 牌 */ for (int i = 0; i < rowcount; i++) for (int j = 0; j < columecount; j++) { int rc = r.nextint(rowcount); int cc = r.nextint(columecount); int temp; temp = cards[i][j]; cards[i][j] = cards[rc][cc]; cards[rc][cc] = temp; } /* 計 時 器 */ Timer t = new Timer(false); // 按 下 按 鈕 後, 延 遲 t.schedule(tt, 500); // 停 頓 0.5 秒 26

-5 27 private TableRow createrow(int y) { TableRow row = new TableRow(context); row.sethorizontalgravity(gravity.center); for (int x = 0; x < columecount; x++) { row.addview(createimagebutton(x, y)); } return row; } private View createimagebutton(int x, int y) { // 按 下 卡 片 按 鈕 動 作 Button button = new Button(context); button.setbackgrounddrawable(backimage); button.setid(100 * x + y); button.setonclicklistener(buttonlistener); return button; }

-6 private void turncard(button button, int x, int y) { // 當 卡 片 配 對 成 功 或 失 敗 時 的 動 作 button.setbackgrounddrawable(images.get( cards[x][y])); if (firstcard == null) { firstcard = new Card(button, x, y); } else { if (firstcard.x == x && firstcard.y == y) { return; // 選 到 相 同 的 卡 片 則 不 動 作 } seconedcard = new Card(button, x, y); TimerTask tt = new TimerTask() { @Override public void run() { try { synchronized (lock) { handler.sendemptymessage(0); 28

/* 按 下 按 鈕 後 做 結 果 判 斷 */ public void checkcards() { if (cards[seconedcard.x][seconedcard.y] == cards[firstcard.x][firstcard.y]) { 執 行 結 果 畫 面 配 對 成 功 畫 面 firstcard.button.setenabled(false); seconedcard.button.setenabled(false); Toast.makeText(getApplicationContext(), " 配 對 成 功!", Toast.LENGTH_SHORT).show(); paircount++; // 配 對 數 再 加 一 if (paircount >= items) { // 如 果 配 對 數 大 於 原 本 未 配 對 數 時 執 行 chronometer.stop(); 配 對 成 功 29

This image cannot currently be displayed. /* 按 下 按 鈕 後 做 結 果 判 斷 */ seconedcard.button.setbackgrounddrawable (backimage); firstcard.button.setbackgrounddrawable(ba ckimage); Toast.makeText(getApplicationContext(), " 配 對 錯 誤...", Toast.LENGTH_SHORT).show(); } firstcard = null; seconedcard = null; // 清 除 空 白 執 行 結 果 畫 面 配 對 錯 誤 畫 面 配 對 錯 誤 30

-7 Button button = new Button(MemoryGame.this); button.settext(" 確 定 "); final Dialog dialog = new Dialog(MemoryGame.this); dialog.settitle(" 恭 喜 你 完 成 所 有 配 對!"); dialog.setcontentview(button); dialog.show(); button.setonclicklistener(new OnClickListener() { public void onclick(view v) { dialog.dismiss(); 31

32

( 取 自 維 基 百 科 ) 33