Java 代 码 1. overridependingtransition(android.r.anim.fade_in,android.r.anim.fade_out); 由 左 向 右 滑 入 的 效 果 Java 代 码 1. overridependingtransition(android

Size: px
Start display at page:

Download "Java 代 码 1. overridependingtransition(android.r.anim.fade_in,android.r.anim.fade_out); 由 左 向 右 滑 入 的 效 果 Java 代 码 1. overridependingtransition(android"

Transcription

1 ( 一 )Activity 页 面 切 换 的 效 果 Android 2.0 之 后 有 了 overridependingtransition(), 其 中 里 面 两 个 参 数, 一 个 是 前 一 个 activity 的 退 出 两 一 个 activity 的 进 入, Java 代 码 public void oncreate(bundle savedinstancestate) { 2. super.oncreate(savedinstancestate); setcontentview(r.layout.splashscreen); new Handler().postDelayed(new Runnable() { 8. public void run() { 9. Intent mainintent = new Intent(SplashScreen.this, AndroidNews.class); 10. SplashScreen.this.startActivity(mainIntent); 11. SplashScreen.this.finish(); overridependingtransition(r.anim.mainfadein, 14. R.anim.splashfadeout); 15. } 16.}, 3000); } 上 面 的 代 码 只 是 闪 屏 的 一 部 分 Java 代 码 1. getwindow (). setwindowanimations ( int ); 这 可 没 有 上 个 好 但 是 也 可 以 实 现 淡 入 淡 出 的 效 果

2 Java 代 码 1. overridependingtransition(android.r.anim.fade_in,android.r.anim.fade_out); 由 左 向 右 滑 入 的 效 果 Java 代 码 1. overridependingtransition(android.r.anim.slide_in_left,android. R.anim.slide_out_right); 实 现 zoomin 和 zoomout, 即 类 似 iphone 的 进 入 和 退 出 时 的 效 果 Java 代 码 1. overridependingtransition(r.anim.zoomin, R.anim.zoomout); 新 建 zoomin.xml 文 件 Xml 代 码 1. <?xml version="1.0" encoding="utf-8"?> 2. <set 3. xmlns:android=" 4. <scale Android:fromXScale="2.0" android:toxscale="1.0" 5. Android:fromYScale="2.0" android:toyscale="1.0" 6. Android:pivotX="50%p" android:pivoty="50%p" 7. /> </set> 新 建 zoomout.xml 文 件 Xml 代 码 1. <?xml version="1.0" encoding="utf-8"?>

3 2. <set 3. xmlns:android=" Android:zAdjustment="top"> 6. <scale Android:fromXScale="1.0" android:toxscale=".5" 7. Android:fromYScale="1.0" android:toyscale=".5" 8. Android:pivotX="50%p" android:pivoty="50%p" 9. /> 10.<alpha Android:fromAlpha="1.0" android:toalpha="0" 12.</set> ( 二 )android 菜 单 动 画 先 请 注 意, 这 里 的 菜 单 并 不 是 按 机 器 上 的 MENU 出 现 在 那 种 菜 单, 而 是 基 于 Android SDK 提 供 的 android.view.animation.translateanimation(extends android.view.animation.animation) 类 实 例 后 附 加 到 一 个 Layout 上 使 之 产 生 的 有 动 画 出 现 和 隐 藏 效 果 的 菜 单 原 理 :Layout( 菜 单 ) 从 屏 幕 内 ( 挨 着 屏 幕 边 沿, 其 实 并 非 一 定, 视 需 要 的 初 态 和 末 态 而 定 ) 动 态 的 移 动 到 屏 幕 外 ( 在 外 面 可 以 挨 着 边 沿, 也 可 以 离 远 点, 这 个 无 所 谓 了 ), 这 样 就 可 以 达 到 动 态 菜 单 的 效 果 了 但 是 由 于 Animation 的 一 些 奇 怪 特 性 (setfill**() 函 数 的 作 用 效 果, 这 个 在 我 使 用 的 某 几 个 Animation 当 中 出 现 了 没 有 想 明 白 的 效 果 ), 就 暂 不 理 会 这 个 东 西 了, 所 以 使 得 我 们 还 需 要 用 上 XML 属 性 android:visibility 当 Layout( 菜 单 ) 显 示 的 时 候, 设 置 android:visibility="visible", 当 Layout( 菜 单 ) 隐 藏 的 时 候, 设 置 android:visibility="gone", 这 里 android:visibility 可 以 有 3 个 值,"visible" 为 可 见,"invisible" 为 不 可 见 但 占 空 间,"gone" 为 不 可 见 且 不 占 空 间 ( 所 谓 的 占 不 占 空 间, 这 个 可 以 自 己 写 个 XML 来 试 试 就 明 白 了 ) Class TranslateAnimation 的 使 用 :Animation 有 两 种 定 义 方 法, 一 种 是 用 Java code, 一 种 是 用 XML, 这 里 只 介 绍 用 code 来 定 义 ( 因 为 用 XML 来 定 义 的 那 种 我 没 用 过 嘿 嘿 ) 多 的 不 说, 看 代 码 这 里 是 TranslateAnimationMenu.java( 我 在 里 面 还 另 加 入 了 ScaleAnimation 产 生 的 动 画, 各 位 朋 友 可 以 照 着 SDK 以 及 程 序 效 果 来 理 解 ): package com.translateanimation.menu; import android.app.activity; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener;

4 import android.view.animation.animation; import android.view.animation.translateanimation; import android.widget.button; import android.widget.linearlayout; public class TranslateAnimationMenu extends Activity { /** Called when the activity is first created. */ //TranslateAnimation showaction, hideaction; Animation showaction, hideaction; LinearLayout menu; Button button; boolean public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); menu = (LinearLayout) findviewbyid(r.id.menu); button = (Button) findviewbyid(r.id.button); // 这 里 是 TranslateAnimation 动 画 showaction = new TranslateAnimation( Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f); // 这 里 是 ScaleAnimation 动 画 //showaction = new ScaleAnimation( // 1.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f, // Animation.RELATIVE_TO_SELF, 0.0f); showaction.setduration(500); // 这 里 是 TranslateAnimation 动 画 hideaction = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, -1.0f);

5 } }); } // 这 里 是 ScaleAnimation 动 画 //hideaction = new ScaleAnimation( // 1.0f, 1.0f, 1.0f, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f); hideaction.setduration(500); menushowed = false; menu.setvisibility(view.gone); button.setonclicklistener(new OnClickListener() public void onclick(view v) { // TODO Auto-generated method stub if (menushowed) { menushowed = false; menu.startanimation(hideaction); menu.setvisibility(view.gone); } else { menushowed = true; menu.startanimation(showaction); menu.setvisibility(view.visible); } } 这 里 是 main.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <LinearLayout android:id="@+id/menu" android:layout_height="100px" android:layout_width="fill_parent" android:layout_alignparenttop="true" android:background="#ffffff"> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="i am a menu"

6 android:gravity="center" /> </LinearLayout> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:text="click to show/hide menu" /> </RelativeLayout>Android 基 于 TranslateAnimation 的 动 画 动 态 菜 单 android 布 局 属 性 文 章 分 类 : 移 动 开 发 第 一 类 : 属 性 值 为 true 或 false android:layout_centerhrizontal 水 平 居 中 android:layout_centervertical 垂 直 居 中 android:layout_centerinparent 相 对 于 父 元 素 完 全 居 中 android:layout_alignparentbottom 贴 紧 父 元 素 的 下 边 缘 android:layout_alignparentleft 贴 紧 父 元 素 的 左 边 缘 android:layout_alignparentright 贴 紧 父 元 素 的 右 边 缘 android:layout_alignparenttop 贴 紧 父 元 素 的 上 边 缘 android:layout_alignwithparentifmissing 如 果 对 应 的 兄 弟 元 素 找 不 到 的 话 就 以 父 元 素 做 参 照 物 第 二 类 : 属 性 值 必 须 为 id 的 引 用 android:layout_below 在 某 元 素 的 下 方 android:layout_above 在 某 元 素 的 的 上 方 android:layout_toleftof 在 某 元 素 的 左 边 android:layout_torightof 在 某 元 素 的 右 边 齐 android:layout_aligntop 本 元 素 的 上 边 缘 和 某 元 素 的 的 上 边 缘 对 齐 android:layout_alignleft 本 元 素 的 左 边 缘 和 某 元 素 的 的 左 边 缘 对 齐 android:layout_alignbottom 本 元 素 的 下 边 缘 和 某 元 素 的 的 下 边 缘 对 android:layout_alignright 本 元 素 的 右 边 缘 和 某 元 素 的 的 右 边 缘 对 齐 第 三 类 : 属 性 值 为 具 体 的 像 素 值, 如 30dip,40px android:layout_marginbottom 离 某 元 素 底 边 缘 的 距 离 android:layout_marginleft 离 某 元 素 左 边 缘 的 距 离 android:layout_marginright 离 某 元 素 右 边 缘 的 距 离 android:layout_margintop 离 某 元 素 上 边 缘 的 距 离

7 EditText 的 android:hint 设 置 EditText 为 空 时 输 入 框 内 的 提 示 信 息 android:gravity android:gravity 属 性 是 对 该 view 内 容 的 限 定. 比 如 一 个 button 上 面 的 text. 你 可 以 设 置 该 text 在 view 的 靠 左, 靠 右 等 位 置. 以 button 为 例, android:gravity="right" 则 button 上 面 的 文 字 靠 右 android:layout_gravity android:layout_gravity 是 用 来 设 置 该 view 相 对 与 起 父 view 的 位 置. 比 如 一 个 button 在 linearlayout 里, 你 想 把 该 button 放 在 靠 左 靠 右 等 位 置 就 可 以 通 过 该 属 性 设 置. 以 button 为 例,android:layout_gravity="right" 则 button 靠 右 android:layout_alignparentright 使 当 前 控 件 的 右 端 和 父 控 件 的 右 端 对 齐 这 里 属 性 值 只 能 为 true 或 false, 默 认 false android:scaletype: android:scaletype 是 控 制 图 片 如 何 resized/moved 来 匹 对 ImageView 的 size ImageView.ScaleType / android:scaletype 值 的 意 义 区 别 : CENTER /center 按 图 片 的 原 来 size 居 中 显 示, 当 图 片 长 / 宽 超 过 View 的 长 / 宽, 则 截 取 图 片 的 居 中 部 分 显 示 CENTER_CROP / centercrop 按 比 例 扩 大 图 片 的 size 居 中 显 示, 使 得 图 片 长 ( 宽 ) 等 于 或 大 于 View 的 长 ( 宽 ) CENTER_INSIDE / centerinside 将 图 片 的 内 容 完 整 居 中 显 示, 通 过 按 比 例 缩 小 或 原 来 的 size 使 得 图 片 长 / 宽 等 于 或 小 于 View 的 长 / 宽 FIT_CENTER / fitcenter 把 图 片 按 比 例 扩 大 / 缩 小 到 View 的 宽 度, 居 中 显 示 FIT_END / fitend 的 下 部 分 位 置 FIT_START / fitstart 的 上 部 分 位 置 把 图 片 按 比 例 扩 大 / 缩 小 到 View 的 宽 度, 显 示 在 View 把 图 片 按 比 例 扩 大 / 缩 小 到 View 的 宽 度, 显 示 在 View FIT_XY / fitxy 把 图 片 不 按 比 例 扩 大 / 缩 小 到 View 的 大 小 显 示 MATRIX / matrix 用 矩 阵 来 绘 制, 动 态 缩 小 放 大 图 片 来 显 示 ** 要 注 意 一 点,Drawable 文 件 夹 里 面 的 图 片 命 名 是 不 能 大 写 的

8 android 翻 页 : 之 前 看 到 不 少 翻 页, 不 过 人 家 没 有 分 享 出 代 码 来, 我 也 一 直 没 有 搞 出 来. 想 了 好 久, 实 现 原 理 并 不 是 那 么 的 难, 怎 么 实 现 就 比 较 难 了. 当 然 像 3D 现 实 模 拟 分 页 的 难 度 是 比 较 大 的. 平 面 的 分 页, 简 单 点 说 就 是 用 三 张 图 片, 模 拟 分 页 时 可 见 区, 这 里 我 弄 了 一 个 View, 里 面 有 翻 页 的 效 果. OnDraw 中 ; 最 底 一 张 是 将 要 显 示 的, 先 画 出 来, 接 着 画 原 来 那 张, 放 在 中 间, 因 为 这 张 图 片 要 在 翻 页 的 过 程 中 慢 慢 消 失, 一 点 一 点 被 拉 出 去, 最 后 一 张 就 是 最 上 面 的, 为 什 么 要 用 这 张 图 片 呢? 当 页 面 被 翻 起 后, 一 个 角 消 失 了, 就 比 如 第 二 张 不 显 示 的 部 分, 那 这 部 分, 就 是 第 三 张 了, 再 覆 盖 在 第 二 张 上 面, 形 成 一 种 看 似 翻 书 的. 效 果. 然 后 在 第 二 张 ( 假 设 从 左 边 开 始 被 翻 起, 左 边 先 消 失 ), 左 边 缘 再 画 出 一 条 线, 当 然 这 条 线 要 粗 点, 然 后 设 置 颜 色 渐 变, 还 要 透 明 的, 就 有 一 种 阴 影 的 效 果. 我 开 始 一 直 在 想, 像 这 样 的, 不 难 实 现 啊, 当 然 只 限 于 矩 形 的, 因 为 当 时 没 有 想 到 如 何 处 理 第 二 张 消 失 部 分 为 一 个 三 角 形. 可 以 通 过 Rect 来 设 置 一 个 Bitmap, 的 宽 度. Rect rect = new Rect(mWidth, 0, width, height); canvas.drawbitmap(image2, null, rect, paint2); mwidth 就 是 左 边 消 失 部 分 的 宽 度. 通 过 不 断 改 变 这 个 值, 然 后 再 刷 新 View 就 可 以 看 到 一 种 滚 动 的 效 果. 第 二 张 图 片 左 边 慢 慢 消 失, width,height 为 画 面 目 的 宽 高. 然 后 可 以 添 加 一 个 第 三 张 图 片, 也 用 同 样 的 方 法 设 置 了 它 显 示 的 宽, 高, 通 过 上 面 Rect 的 处 理, 看 到 一 般 的 效 果. 比 较 常 见 的 是 从 一 个 角 开 始, 然 后 慢 慢 的 卷 起 来, 而 不 是 像 上 面 平 行 的,( 上 面 只 能 看 到 平 行 的 效 果.) 这 里 就 涉 及 到 了 一 个 角, 就 是 三 角 形 如 何 产 生 的 问 题, 这 个 问 题 困 扰 了 好 久. 今 天 想 到 办 法 了. 就 是 用 Path 去 画 多 边 形. 一 个 矩 形, 减 去 一 个 多 边 形, 就 剩 下 一 个 三 角 形 了. 先 讨 论 上 面 那 种 效 果 的 处 理 方 式 : 首 先 是 View: 的 OnDraw 方 法. Java 代 码

9 1. width = getwidth(); 2. height = getheight(); 3. // 画 最 底 下 一 张 将 要 显 示 的 图 片 4. Rect rect = new Rect(0, 0, width, height); 5. canvas.drawbitmap(image1, null, rect, paint1); 6. // 画 上 面 卷 起 的 那 张. 实 现 平 行 翻 页 效 果. 7. rect = new Rect(mWidth, 0, width, height); 8. canvas.drawbitmap(image2, null, rect, paint2); 9. // 当 然 之 后 再 处 理 卷 起 边 缘 阴 影, 模 糊 等 效 果, 这 里 省 略 了. 还 有 图 片 Image1,image2 自 己 准 备 了 10. 然 后 就 是 手 势, 没 有 手 势, 翻 页 显 得 很 呆 板. 11. 这 个 View 实 现 OnGestureListener, 自 然 有 一 些 方 法 要 覆 盖 的. 12. 其 它 方 法 随 便 了, 有 返 回 值 的 给 它 一 个 True, 主 要 是 13.public boolean onfling(motionevent e1, MotionEvent e2, fl oat velocityx, float velocityy) 这 个 方 法, 比 较 有 用. 14.myHandler.removeMessage(0);/../ 我 觉 得 要 先 移 除 上 一 次 翻 页 的 动 作, 然 后 会 马 上 从 上 一 次 运 行 中 停 止, 而 立 即 向 当 前 需 要 的 方 向 变 化. 15.if(e1.getX() - e2.getx() > 0){ 16. turnleft(5);// 向 左 翻 17.}else if(e2.getx() - e1.getx() > 0){ 18. turnright(5);// 向 右 翻 19.} 20. 两 个 方 法 差 不 多, 也 可 以 合 并, 传 入 正 负 值. 21.delta = speed; 参 数 就 是 上 面 的 5, 作 为 变 化 速 度. 22.myHandler.sendEmptyMessage(0); 23. 普 通 的 View 要 Handler 来 更 新. 之 前 试 过 了, 以 为 在 View 直 接 Invalidate 可 以. 24. 虽 然 没 有 提 示 非 UI 线 程 的 问 题, 但 是 循 环 了 多 次 只 看 到 OnDraw 执 行 一 次 而 以. 25.public void handlemessage(message message){ 26. invalidate(); 27. mwidth += delta;// 变 化 第 二 张 图 片 的 宽. 28. if(delta > 0){// 向 右 滚 动 29. if(mwidth < width){// 当 第 二 张 图 片 的 左 侧 空 白 超 过 了 画 布 的 宽 时 停 止 30. sendemptymessage(0); 31. } 32.}else{// 向 左 滚 动 33.if(mWidth > 0){ 34. sendemptymessage(0); 35.} 36.} 37.} 38.

10 39. 然 后 在 XML 里 用 这 个 View, 最 后 Activity 里 SetContentView 就 OK 了 / 40.<com.me.page.PageView 41.android:id="@+id/pageView1" 42.android:layout_gravity="center" 43.android:layout_marginTop="5px" 44.android:layout_width="fill_parent" 45.android:layout_height="fill_parent"/> 由 于 使 用 XML, 所 以 构 造 方 法 必 须 要 有, 带 两 个 参 数 的. 48.public PageView(Context context, AttributeSet attrs){ 49. super(context, attrs); 50. initview(); 51.} 52.InitView: 53.private void initview(){ 54. image1 = Bitmap.createBitmap(BitmapFactory.decodeResource (getresources(), R.drawable.aac)); 55. image2 = Bitmap.createBitmap(BitmapFactory.decodeResource (getresources(), R.drawable.q1)); 56. image3 = Bitmap.createBitmap(BitmapFactory.decodeResource (getresources(), R.drawable.q2)); myhandler = new MyHandler(); 59. gesturedetector = new GestureDetector(this); 60. mshader = new LinearGradient(10, 250, 250, 250, 61. new int[]{color.red, Color.GREEN, Color.BLUE}, 62. null, Shader.TileMode.MIRROR); 63. paint1 = new Paint(); 64. paint1.setflags(paint.anti_alias_flag); // 去 除 插 刺 65. paint2 = new Paint(paint1); 66. paint3 = new Paint(paint2); 67. paint3.setcolor(0x ); 68. //paint.setshader(mshader);// 其 间 颜 色 会 有 变 化. 69. paint3.setstrokewidth(12); 70. paint4 = new Paint(paint2); 71. paint4.setcolor(0xff111111); 72. paint4.setshader(mshader);// 其 间 颜 色 会 有 变 化. 73. paint4.setstrokewidth(12); 74. } 代 码 就 到 这 里 了. 关 于 三 角 形 卷 动 翻 页, 代 码 没 有 写 完 整,( 第 三 张 图 片 还 没 有 弄, 也 没 有 阴 影 ), 先 不 写 了, 而 且 似 乎 也 不 止 我 这 样 一 种 写 法 的, 网 上 看 到 的 翻 页 还 有 其 它 的, 比 如 我 见 到 一 个,OnDraw 里 得 到 画 布 的 高, 然 后

11 一 行 一 行 描 述, 并 逐 行 递 减 宽 度, 这 样 造 成 一 个 三 角 形, 速 度 也 不 那 么 地 慢. 还 可 接 受 来 些 图 片. 79.page-15.png 到 page-16.png, 宽 度 越 来 越 小 了. 80.page-12.png 到 page-14.png 是 三 角 形 的, 里 面 具 体 操 作 复 杂 一 些, 当 前 差 上 面 那 张 遮 罩. 以 后 再 完 善 了. 81. android 中 颜 色 对 应 的 值 82. 文 章 分 类 : 移 动 开 发 83. <?xml version="1.0" encoding="utf-8"?> < resources> < color name="white">#ffffff< /color><!-- 白 色 --> < color name="ivory">#fffff0< /color><!-- 象 牙 色 --> < color name="lightyellow">#ffffe0< /color><!-- 亮 黄 色 --> < color name="yellow">#ffff00< /color><!-- 黄 色 --> < color name="snow">#fffafa< /color><!-- 雪 白 色 --> < color name="floralwhite">#fffaf0< /color><!-- 花 白 色 --> < color name="lemonchiffon">#fffacd< /color><!-- 柠 檬 绸 色 --> < color name="cornsilk">#fff8dc< /color><!-- 米 绸 色 --> < color name="seashell">#fff5ee< /color><!-- 海 贝 色 --> < color name="lavenderblush">#fff0f5< /color><!-- 淡 紫 红 --> < color name="papayawhip">#ffefd5< /color><!-- 番 木 色 --> < color name="blanchedalmond">#ffebcd< /color><!-- 白 杏 色 --> < color name="mistyrose">#ffe4e1< /color><!-- 浅 玫 瑰 色 --> < color name="bisque">#ffe4c4< /color><!-- 桔 黄 色 --> < color name="moccasin">#ffe4b5< /color><!-- 鹿 皮 色 -->

12 < color name="navajowhite">#ffdead< /color><!-- 纳 瓦 白 --> < color name="peachpuff">#ffdab9< /color><!-- 桃 色 --> < color name="gold">#ffd700< /color><!-- 金 色 --> < color name="pink">#ffc0cb< /color><!-- 粉 红 色 --> < color name="lightpink">#ffb6c1< /color><!-- 亮 粉 红 色 --> < color name="orange">#ffa500< /color><!-- 橙 色 --> < color name="lightsalmon">#ffa07a< /color><!-- 亮 肉 色 --> < color name="darkorange">#ff8c00< /color><!-- 暗 桔 黄 色 --> < color name="coral">#ff7f50< /color><!-- 珊 瑚 色 --> < color name="hotpink">#ff69b4< /color><!-- 热 粉 红 色 --> < color name="tomato">#ff6347< /color><!-- 西 红 柿 色 --> < color name="orangered">#ff4500< /color><!-- 红 橙 色 --> < color name="deeppink">#ff1493< /color><!-- 深 粉 红 色 --> < color name="fuchsia">#ff00ff< /color><!-- 紫 红 色 --> < color name="magenta">#ff00ff< /color><!-- 红 紫 色 --> < color name="red">#ff0000< /color><!-- 红 色 --> < color name="oldlace">#fdf5e6< /color><!-- 老 花 色 --> < color name="lightgoldenrodyellow">#fafad2< /color><!-- 亮 金 黄 色 --> < color name="linen">#faf0e6< /color><!-- 亚 麻 色 --> < color name="antiquewhite">#faebd7< /color><!-- 古 董 白 --> < color name="salmon">#fa8072< /color><!-- 鲜 肉 色 --> < color name="ghostwhite">#f8f8ff< /color><!-- 幽 灵 白 -->

13 < color name="mintcream">#f5fffa< /color><!-- 薄 荷 色 --> < color name="whitesmoke">#f5f5f5< /color><!-- 烟 白 色 --> < color name="beige">#f5f5dc< /color><!-- 米 色 --> < color name="wheat">#f5deb3< /color><!-- 浅 黄 色 --> < color name="sandybrown">#f4a460< /color><!-- 沙 褐 色 --> < color name="azure">#f0ffff< /color><!-- 天 蓝 色 --> < color name="honeydew">#f0fff0< /color><!-- 蜜 色 --> < color name="aliceblue">#f0f8ff< /color><!-- 艾 利 斯 兰 --> < color name="khaki">#f0e68c< /color><!-- 黄 褐 色 --> < color name="lightcoral">#f08080< /color><!-- 亮 珊 瑚 色 --> < color name="palegoldenrod">#eee8aa< /color><!-- 苍 麒 麟 色 --> < color name="violet">#ee82ee< /color><!-- 紫 罗 兰 色 --> < color name="darksalmon">#e9967a< /color><!-- 暗 肉 色 --> < color name="lavender">#e6e6fa< /color><!-- 淡 紫 色 --> < color name="lightcyan">#e0ffff< /color><!-- 亮 青 色 --> < color name="burlywood">#deb887< /color><!-- 实 木 色 --> < color name="plum">#dda0dd< /color><!-- 洋 李 色 --> < color name="gainsboro">#dcdcdc< /color><!-- 淡 灰 色 --> < color name="crimson">#dc143c< /color><!-- 暗 深 红 色 --> --> < color name="palevioletred">#db7093< /color><!-- 苍 紫 罗 兰 色 < color name="goldenrod">#daa520< /color><!-- 金 麒 麟 色 -->

14 < color name="orchid">#da70d6< /color><!-- 淡 紫 色 --> < color name="thistle">#d8bfd8< /color><!-- 蓟 色 --> < color name="lightgray">#d3d3d3< /color><!-- 亮 灰 色 --> < color name="lightgrey">#d3d3d3< /color><!-- 亮 灰 色 --> < color name="tan">#d2b48c< /color><!-- 茶 色 --> < color name="chocolate">#d2691e< /color><!-- 巧 可 力 色 --> < color name="peru">#cd853f< /color><!-- 秘 鲁 色 --> < color name="indianred">#cd5c5c< /color><!-- 印 第 安 红 --> < color name="mediumvioletred">#c71585< /color><!-- 中 紫 罗 兰 色 --> < color name="silver">#c0c0c0< /color><!-- 银 色 --> < color name="darkkhaki">#bdb76b< /color><!-- 暗 黄 褐 色 < color name="rosybrown">#bc8f8f< /color><!-- 褐 玫 瑰 红 --> < color name="mediumorchid">#ba55d3< /color><!-- 中 粉 紫 色 --> < color name="darkgoldenrod">#b8860b< /color><!-- 暗 金 黄 色 --> < color name="firebrick">#b22222< /color><!-- 火 砖 色 --> < color name="powderblue">#b0e0e6< /color><!-- 粉 蓝 色 --> --> < color name="lightsteelblue">#b0c4de< /color><!-- 亮 钢 兰 色 < color name="paleturquoise">#afeeee< /color><!-- 苍 宝 石 绿 --> < color name="greenyellow">#adff2f< /color><!-- 黄 绿 色 --> < color name="lightblue">#add8e6< /color><!-- 亮 蓝 色 --> < color name="darkgray">#a9a9a9< /color><!-- 暗 灰 色 -->

15 < color name="darkgrey">#a9a9a9< /color><!-- 暗 灰 色 --> < color name="brown">#a52a2a< /color><!-- 褐 色 --> < color name="sienna">#a0522d< /color><!-- 赭 色 --> < color name="darkorchid">#9932cc< /color><!-- 暗 紫 色 --> < color name="palegreen">#98fb98< /color><!-- 苍 绿 色 --> < color name="darkviolet">#9400d3< /color><!-- 暗 紫 罗 兰 色 --> < color name="mediumpurple">#9370db< /color><!-- 中 紫 色 --> < color name="lightgreen">#90ee90< /color><!-- 亮 绿 色 --> < color name="darkseagreen">#8fbc8f< /color><!-- 暗 海 兰 色 --> < color name="saddlebrown">#8b4513< /color><!-- 重 褐 色 --> < color name="darkmagenta">#8b008b< /color><!-- 暗 洋 红 --> < color name="darkred">#8b0000< /color><!-- 暗 红 色 --> < color name="blueviolet">#8a2be2< /color><!-- 紫 罗 兰 蓝 色 < color name="lightskyblue">#87cefa< /color><!-- 亮 天 蓝 色 --> < color name="skyblue">#87ceeb< /color><!-- 天 蓝 色 --> < color name="gray">#808080< /color><!-- 灰 色 --> < color name="grey">#808080< /color><!-- 灰 色 --> < color name="olive">#808000< /color><!-- 橄 榄 色 --> < color name="purple">#800080< /color><!-- 紫 色 --> < color name="maroon">#800000< /color><!-- 粟 色 --> < color name="aquamarine">#7fffd4< /color><!-- 碧 绿 色 --> < color name="chartreuse">#7fff00< /color><!-- 黄 绿 色 -->

16 < color name="lawngreen">#7cfc00< /color><!-- 草 绿 色 --> --> < color name="mediumslateblue">#7b68ee< /color><!-- 中 暗 蓝 色 < color name="lightslategray">#778899< /color><!-- 亮 蓝 灰 --> < color name="lightslategrey">#778899< /color><!-- 亮 蓝 灰 --> < color name="slategray">#708090< /color><!-- 灰 石 色 --> < color name="slategrey">#708090< /color><!-- 灰 石 色 --> < color name="olivedrab">#6b8e23< /color><!-- 深 绿 褐 色 --> < color name="slateblue">#6a5acd< /color><!-- 石 蓝 色 --> < color name="dimgray">#696969< /color><!-- 暗 灰 色 --> < color name="dimgrey">#696969< /color><!-- 暗 灰 色 --> --> < color name="mediumaquamarine">#66cdaa< /color><!-- 中 绿 色 < color name="cornflowerblue">#6495ed< /color><!-- 菊 兰 色 --> < color name="cadetblue">#5f9ea0< /color><!-- 军 兰 色 --> < color name="darkolivegreen">#556b2f< /color><!-- 暗 橄 榄 绿 < color name="indigo">#4b0082< /color><!-- 靛 青 色 --> --> < color name="mediumturquoise">#48d1cc< /color><!-- 中 绿 宝 石 < color name="darkslateblue">#483d8b< /color><!-- 暗 灰 蓝 色 --> < color name="steelblue">#4682b4< /color><!-- 钢 兰 色 --> < color name="royalblue">#4169e1< /color><!-- 皇 家 蓝 --> < color name="turquoise">#40e0d0< /color><!-- 青 绿 色 --> < color name="mediumseagreen">#3cb371< /color><!-- 中 海 蓝 -->

17 < color name="limegreen">#32cd32< /color><!-- 橙 绿 色 --> < color name="darkslategray">#2f4f4f< /color><!-- 暗 瓦 灰 色 --> < color name="darkslategrey">#2f4f4f< /color><!-- 暗 瓦 灰 色 --> < color name="seagreen">#2e8b57< /color><!-- 海 绿 色 --> < color name="forestgreen">#228b22< /color><!-- 森 林 绿 --> < color name="lightseagreen">#20b2aa< /color><!-- 亮 海 蓝 色 --> < color name="dodgerblue">#1e90ff< /color><!-- 闪 兰 色 --> < color name="midnightblue">#191970< /color><!-- 中 灰 兰 色 --> < color name="aqua">#00ffff< /color><!-- 浅 绿 色 --> < color name="cyan">#00ffff< /color><!-- 青 色 --> < color name="springgreen">#00ff7f< /color><!-- 春 绿 色 --> < color name="lime">#00ff00< /color><!-- 酸 橙 色 --> < color name="mediumspringgreen">#00fa9a< /color><!-- 中 春 绿 色 --> < color name="darkturquoise">#00ced1< /color><!-- 暗 宝 石 绿 --> < color name="deepskyblue">#00bfff< /color><!-- 深 天 蓝 色 --> < color name="darkcyan">#008b8b< /color><!-- 暗 青 色 --> < color name="teal">#008080< /color><!-- 水 鸭 色 --> < color name="green">#008000< /color><!-- 绿 色 --> < color name="darkgreen">#006400< /color><!-- 暗 绿 色 --> < color name="blue">#0000ff< /color><!-- 蓝 色 --> < color name="mediumblue">#0000cd< /color><!-- 中 兰 色 -->

18 < color name="darkblue">#00008b< /color><!-- 暗 蓝 色 --> < color name="navy">#000080< /color><!-- 海 军 色 --> < color name="black">#000000< /color><!-- 黑 色 --> < /resources> android ListView 详 解 在 android 开 发 中 ListView 是 比 较 常 用 的 组 件, 它 以 列 表 的 形 式 展 示 具 体 内 容, 并 且 能 够 根 据 数 据 的 长 度 自 适 应 显 示 抽 空 把 对 ListView 的 使 用 做 了 整 理, 并 写 了 个 小 例 子, 如 下 图 列 表 的 显 示 需 要 三 个 元 素 : 1.ListVeiw 用 来 展 示 列 表 的 View 2. 适 配 器 用 来 把 数 据 映 射 到 ListView 上 的 中 介 3. 数 据 具 体 的 将 被 映 射 的 字 符 串, 图 片, 或 者 基 本 组 件 根 据 列 表 的 适 配 器 类 型, 列 表 分 为 三 种,ArrayAdapter,SimpleAdapter 和 SimpleCur soradapter 其 中 以 ArrayAdapter 最 为 简 单, 只 能 展 示 一 行 字 SimpleAdapter 有 最 好 的 扩 充 性, 可 以 自 定 义 出 各 种 效 果 SimpleCursorAdapter 可 以 认 为 是 SimpleAdapter 对 数 据 库 的 简 单 结 合, 可 以 方 面 的 把 数 据 库 的 内 容 以 列 表 的 形 式 展 示 出 来

19 我 们 从 最 简 单 的 ListView 开 始 : print? 01 /** 02 allin 03 * 04 */ 05 public class MyListView extends Activity { private ListView listview; 08 //private List<String> data = new ArrayList<String>(); 10 public void oncreate(bundle savedinstancestate){ 11 super.oncreate(savedinstancestate); listview = new ListView(this); listview.setadapter(new ArrayAdapter<String>(this, 14 android.r.layout.simple_expandable_list_item_1,getdata())); 15 setcontentview(listview); 16 } private List<String> getdata(){ List<String> data = new ArrayList<String>(); 23 data.add(" 测 试 数 据 1"); 24 data.add(" 测 试 数 据 2"); 25 data.add(" 测 试 数 据 3"); 26 data.add(" 测 试 数 据 4"); 28 return data; 29 } 30 } 上 面 代 码 使 用 了 ArrayAdapter(Context context, int textviewresourceid, List<T> objects) 来 装 配 数 据, 要 装 配 这 些 数 据 就 需 要 一 个 连 接 ListView 视 图 对 象 和 数 组 数 据 的 适 配 器 来 两 者 的 适 配 工 作,ArrayAdapter 的 构 造 需 要 三 个 参 数, 依 次 为 this, 布 局 文 件 ( 注

20 意 这 里 的 布 局 文 件 描 述 的 是 列 表 的 每 一 行 的 布 局,android.R.layout.simple_list_item_ 1 是 系 统 定 义 好 的 布 局 文 件 只 显 示 一 行 文 字, 数 据 源 ( 一 个 List 集 合 ) 同 时 用 setadapter () 完 成 适 配 的 最 后 工 作 运 行 后 的 现 实 结 构 如 下 图 : SimpleCursorAdapter sdk 的 解 释 是 这 样 的 :An easy adapter to map columns from a cursor to T extviews or ImageViews defined in an XML file. You can specify which colu mns you want, which views you want to display the columns, and the XML file that defines the appearance of these views 简 单 的 说 就 是 方 便 把 从 游 标 得 到 的 数 据 进 行 列 表 显 示, 并 可 以 把 指 定 的 列 映 射 到 对 应 的 TextView 中 下 面 的 程 序 是 从 电 话 簿 中 把 联 系 人 显 示 到 类 表 中 先 在 通 讯 录 中 添 加 一 个 联 系 人 作 为 数 据 库 的 数 据 然 后 获 得 一 个 指 向 数 据 库 的 Cursor 并 且 定 义 一 个 布 局 文 件 ( 当 然 也 可 以 使 用 系 统 自 带 的 ) view source print? 01 /** 02 allin 03 *

21 04 */ 05 public class MyListView2 extends Activity { 07 private ListView listview; 08 //private List<String> data = new ArrayList<String>(); 10 public void oncreate(bundle savedinstancestate){ 11 super.oncreate(savedinstancestate); 13 listview = new ListView(this); Cursor cursor = getcontentresolver().query(people.content_uri, 15 null, null, null, null); 16 startmanagingcursor(cursor); ListAdapter listadapter = new SimpleCursorAdapter(this, 18 android.r.layout.simple_expandable_list_item_1, 19 cursor, 20 new String[]{People.NAME}, 21 new int[]{android.r.id.text1}); 23 listview.setadapter(listadapter); 24 setcontentview(listview); 25 } Cursor cursor = getcontentresolver().query(people.content_uri, null, null, null, null); 先 获 得 一 个 指 向 系 统 通 讯 录 数 据 库 的 Cursor 对 象 获 得 数 据 来 源 startmanagingcursor(cursor); 我 们 将 获 得 的 Cursor 对 象 交 由 Activity 管 理, 这 样 C ursor 的 生 命 周 期 和 Activity 便 能 够 自 动 同 步, 省 去 自 己 手 动 管 理 Cursor SimpleCursorAdapter 构 造 函 数 前 面 3 个 参 数 和 ArrayAdapter 是 一 样 的, 最 后 两 个 参 数 : 一 个 包 含 数 据 库 的 列 的 String 型 数 组, 一 个 包 含 布 局 文 件 中 对 应 组 件 id 的 int 型 数 组 其 作 用 是 自 动 的 将 String 型 数 组 所 表 示 的 每 一 列 数 据 映 射 到 布 局 文 件 对 应 id 的 组 件 上 上 面 的 代 码, 将 NAME 列 的 数 据 一 次 映 射 到 布 局 文 件 的 id 为 text1 的 组 件 上 注 意 : 需 要 在 AndroidManifest.xml 中 如 权 限 :<uses-permission android:name=" android.permission.read_contacts"></uses-permission> 运 行 后 效 果 如 下 图 :

22 SimpleAdapter simpleadapter 的 扩 展 性 最 好, 可 以 定 义 各 种 各 样 的 布 局 出 来, 可 以 放 上 ImageView( 图 片 ), 还 可 以 放 上 Button( 按 钮 ),CheckBox( 复 选 框 ) 等 等 下 面 的 代 码 都 直 接 继 承 了 ListActivity,ListActivity 和 普 通 的 Activity 没 有 太 大 的 差 别, 不 同 就 是 对 显 示 ListView 做 了 许 多 优 化, 方 面 显 示 而 已 下 面 的 程 序 是 实 现 一 个 带 有 图 片 的 类 表 首 先 需 要 定 义 好 一 个 用 来 显 示 每 一 个 列 内 容 的 xml vlist.xml view source print? 01 <?xml version="1.0" encoding="utf-8"?> 02 <LinearLayout xmlns:android=" 03 android:orientation="horizontal" android:layout_width="fill_parent" 04 android:layout_height="fill_parent"> 07 <ImageView android:id="@+id/img" 08 android:layout_width="wrap_content" 09 android:layout_height="wrap_content" 10 android:layout_margin="5px"/> <LinearLayout android:orientation="vertical" 13 android:layout_width="wrap_content"

23 14 android:layout_height="wrap_content"> <TextView 17 android:layout_width="wrap_content" 18 android:layout_height="wrap_content" 19 android:textcolor="#ffffffff" 20 android:textsize="22px" /> 21 <TextView 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:textcolor="#ffffffff" 25 android:textsize="13px" /> </LinearLayout> 30 </LinearLayout> 下 面 是 实 现 代 码 : view source print? 01 /** 02 allin 03 * 04 */ 05 public class MyListView3 extends ListActivity { 08 // private List<String> data = new ArrayList<String>(); 10 public void oncreate(bundle savedinstancestate) { 11 super.oncreate(savedinstancestate); 13 SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.vlist, 14 new String[]{"title","info","img"}, 15 new int[]{r.id.title,r.id.info,r.id.img}); 16 setlistadapter(adapter); 17 } private List<Map<String, Object>> getdata() { 20 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); 22 Map<String, Object> map = new HashMap<String, Object>(); 23 map.put("title", "G1");

24 24 map.put("info", "google 1"); 25 map.put("img", R.drawable.i1); 26 list.add(map); map = new HashMap<String, Object>(); 29 map.put("title", "G2"); 30 map.put("info", "google 2"); 31 map.put("img", R.drawable.i2); 32 list.add(map); map = new HashMap<String, Object>(); 35 map.put("title", "G3"); 36 map.put("info", "google 3"); 37 map.put("img", R.drawable.i3); 38 list.add(map); return list; 41 } 42 } 使 用 simpleadapter 的 数 据 用 一 般 都 是 HashMap 构 成 的 List,list 的 每 一 节 对 应 ListVi ew 的 每 一 行 HashMap 的 每 个 键 值 数 据 映 射 到 布 局 文 件 中 对 应 id 的 组 件 上 因 为 系 统 没 有 对 应 的 布 局 文 件 可 用, 我 们 可 以 自 己 定 义 一 个 布 局 vlist.xml 下 面 做 适 配,new 一 个 S impleadapter 参 数 一 次 是 :this, 布 局 文 件 (vlist.xml), HashMap 的 title 和 info, img 布 局 文 件 的 组 件 id,title,info,img 布 局 文 件 的 各 组 件 分 别 映 射 到 HashMap 的 各 元 素 上, 完 成 适 配 运 行 效 果 如 下 图 :

25 有 按 钮 的 ListView 但 是 有 时 候, 列 表 不 光 会 用 来 做 显 示 用, 我 们 同 样 可 以 在 在 上 面 添 加 按 钮 添 加 按 钮 首 先 要 写 一 个 有 按 钮 的 xml 文 件, 然 后 自 然 会 想 到 用 上 面 的 方 法 定 义 一 个 适 配 器, 然 后 将 数 据 映 射 到 布 局 文 件 上 但 是 事 实 并 非 这 样, 因 为 按 钮 是 无 法 映 射 的, 即 使 你 成 功 的 用 布 局 文 件 显 示 出 了 按 钮 也 无 法 添 加 按 钮 的 响 应, 这 时 就 要 研 究 一 下 ListView 是 如 何 现 实 的 了, 而 且 必 须 要 重 写 一 个 类 继 承 BaseAdapter 下 面 的 示 例 将 显 示 一 个 按 钮 和 一 个 图 片, 两 行 字 如 果 单 击 按 钮 将 删 除 此 按 钮 的 所 在 行 并 告 诉 你 ListView 究 竟 是 如 何 工 作 的 效 果 如 下 : vlist2.xml

26 view source print? 01 <?xml version="1.0" encoding="utf-8"?> 02 <LinearLayout xmlns:android=" 03 android:orientation="horizontal" 04 android:layout_width="fill_parent " 05 android:layout_height="fill_parent"> <ImageView 09 android:layout_width="wrap_content" 10 android:layout_height="wrap_content" 11 android:layout_margin="5px"/> <LinearLayout android:orientation="vertical" 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content"> <TextView 18 android:layout_width="wrap_content" 19 android:layout_height="wrap_content" 20 android:textcolor="#ffffffff" 21 android:textsize="22px" /> 22 <TextView 23 android:layout_width="wrap_content" 24 android:layout_height="wrap_content" 25 android:textcolor="#ffffffff" 26 android:textsize="13px" /> </LinearLayout> <Button 32 android:layout_width="wrap_content" 33 android:layout_height="wrap_content" 34

27 35 android:layout_gravity="bottom right" /> 36 </LinearLayout> 程 序 代 码 : view source print? 001 /** 002 allin 003 * 004 */ 005 public class MyListView4 extends ListActivity { 008 private List<Map<String, Object>> mdata; 011 public void oncreate(bundle savedinstancestate) { 012 super.oncreate(savedinstancestate); 013 mdata = getdata(); 014 MyAdapter adapter = new MyAdapter(this); 015 setlistadapter(adapter); 016 } private List<Map<String, Object>> getdata() { List<Map<String, Object>> list = new ArrayList<Map<String, 019 Object>>(); Map<String, Object> map = new HashMap<String, Object>(); 022 map.put("title", "G1"); 023 map.put("info", "google 1"); 024 map.put("img", R.drawable.i1); 025 list.add(map); map = new HashMap<String, Object>(); 028 map.put("title", "G2"); 029 map.put("info", "google 2"); 030 map.put("img", R.drawable.i2); 031 list.add(map); map = new HashMap<String, Object>(); 034 map.put("title", "G3");

28 035 map.put("info", "google 3"); 036 map.put("img", R.drawable.i3); 037 list.add(map); return list; 040 } // ListView 中 某 项 被 选 中 后 的 逻 辑 protected void onlistitemclick(listview l, View v, int position, 044 long id) { 045 Log.v("MyListView4-click", 046 (String)mData.get(position).get("title")); 047 } /** 050 * listview 中 点 击 按 键 弹 出 对 话 框 051 */ 052 public void showinfo(){ 053 new AlertDialog.Builder(this) 054.setTitle(" 我 的 listview") 055.setMessage(" 介 绍...").setPositiveButton(" 确 定 ", 056 new DialogInterface.OnClickListener() { 058 public void onclick(dialoginterface dialog, int which) { 059 } 060 }) 061.show(); public final class ViewHolder{ 068 public ImageView img; 069 public TextView title; 070 public TextView info; 071 public Button viewbtn; }

29 public class MyAdapter extends BaseAdapter{ private LayoutInflater minflater; 080 public MyAdapter(Context context){ 081 this.minflater = LayoutInflater.from(context); 082 } 084 public int getcount() { 085 // TODO Auto-generated method stub 086 return mdata.size(); 087 } public Object getitem(int arg0) { 091 // TODO Auto-generated method stub 092 return null; 093 } public long getitemid(int arg0) { 097 // TODO Auto-generated method stub 098 return 0; 099 } 100 public View getview(int position, View convertview, ViewGroup 102 parent) { ViewHolder holder = null; 105 if (convertview == null) { 107 holder=new ViewHolder(); 109 convertview = minflater.inflate(r.layout.vlist2, null); 110 holder.img = (ImageView)convertView.findViewById(R.id.img); 111 holder.title = (TextView)convertView.findViewById(R.id.title); 112 holder.info = (TextView)convertView.findViewById(R.id.info); 113 holder.viewbtn = (Button)convertView.findViewById(R.id.view_btn); 114 convertview.settag(holder); }else { 117

30 118 holder = (ViewHolder)convertView.getTag(); 119 } holder.img.setbackgroundresource((integer)mdata.get(position).ge t("img")); 123 holder.title.settext((string)mdata.get(position).get("title")); 124 holder.info.settext((string)mdata.get(position).get("info")); holder.viewbtn.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { 130 showinfo(); 131 } 132 }); return convertview; 136 } 137 下 面 将 对 上 述 代 码, 做 详 细 的 解 释,listView 在 开 始 绘 制 的 时 候, 系 统 首 先 调 用 getc ount() 函 数, 根 据 他 的 返 回 值 得 到 listview 的 长 度 ( 这 也 是 为 什 么 在 开 始 的 第 一 张 图 特 别 的 标 出 列 表 长 度 ), 然 后 根 据 这 个 长 度, 调 用 getview() 逐 一 绘 制 每 一 行 如 果 你 的 g etcount() 返 回 值 是 0 的 话, 列 表 将 不 显 示 同 样 return 1, 就 只 显 示 一 行 系 统 显 示 列 表 时, 首 先 实 例 化 一 个 适 配 器 ( 这 里 将 实 例 化 自 定 义 的 适 配 器 ) 当 手 动 完 成 适 配 时, 必 须 手 动 映 射 数 据, 这 需 要 重 写 getview() 方 法 系 统 在 绘 制 列 表 的 每 一 行 的 时 候 将 调 用 此 方 法 getview() 有 三 个 参 数,position 表 示 将 显 示 的 是 第 几 行,covert View 是 从 布 局 文 件 中 inflate 来 的 布 局 我 们 用 LayoutInflater 的 方 法 将 定 义 好 的 vlist 2.xml 文 件 提 取 成 View 实 例 用 来 显 示 然 后 将 xml 文 件 中 的 各 个 组 件 实 例 化 ( 简 单 的 fi ndviewbyid() 方 法 ) 这 样 便 可 以 将 数 据 对 应 到 各 个 组 件 上 了 但 是 按 钮 为 了 响 应 点 击 事 件, 需 要 为 它 添 加 点 击 监 听 器, 这 样 就 能 捕 获 点 击 事 件 至 此 一 个 自 定 义 的 listview 就 完 成 了, 现 在 让 我 们 回 过 头 从 新 审 视 这 个 过 程 系 统 要 绘 制 ListView 了, 他 首 先 获 得 要 绘 制 的 这 个 列 表 的 长 度, 然 后 开 始 绘 制 第 一 行, 怎 么 绘 制 呢? 调 用 getview() 函 数 在 这 个 函 数 里 面 首 先 获 得 一 个 View( 实 际 上 是 一 个 ViewGroup), 然 后 再 实 例 并 设 置 各 个 组 件, 显

31 示 之 好 了, 绘 制 完 这 一 行 了 那 再 绘 制 下 一 行, 直 到 绘 完 为 止 在 实 际 的 运 行 过 程 中 会 发 现 listview 的 每 一 行 没 有 焦 点 了, 这 是 因 为 Button 抢 夺 了 listview 的 焦 点, 只 要 布 局 文 件 中 将 Button 设 置 为 没 有 焦 点 就 OK 了 Android API Demo 研 究 (2) 文 章 分 类 : 移 动 开 发 1. Forwarding 这 个 实 现 很 简 单, 就 是 启 动 新 的 Activity 或 者 Service 后, 增 加 一 个 finish() 语 句 就 可 以 了, 这 个 语 句 会 主 动 将 当 前 activity 从 历 史 stack 中 清 除, 这 样 back 操 作 就 不 会 打 开 当 前 activity 做 这 个 实 验 的 时 候, 发 现 开 发 Android 程 序 需 要 注 意 的 一 点 小 问 题 : 增 加 新 的 activity 时, 不 能 只 增 加 一 个 class, 一 定 要 记 得 要 在 manifest 文 件 中 增 加 该 activity 的 描 述 ( 这 个 简 单 的 功 能, 未 来 google 应 该 给 增 加 吧 ) android:name 中 的 点 意 义 : 首 先 manifest 会 有 一 个 默 认 指 定 的 package 属 性, 比 如 指 定 为 "com.android.sample", 如 果 我 们 增 加 的 activity 的 实 现 也 在 这 个 package 下, 则 android:name 为 实 现 的 类 名, 这 个 类 名 前 加 不 加 点 都 没 有 关 系, 都 会 自 动 找 到 该 实 现, 比 如 实 现 为 forwardtarget, 则 android:name 写 成 forwardtarget 或 者.forwardtarget 都 可 以 唯 一 有 区 别 的 是, 如 果 activity 的 实 现 是 在 默 认 包 的 子 包 里 面, 则 前 面 这 个 点 就 尤 为 重 要, 比 如 activity 的 实 现 是 com.android.sample.app.forwardtarget, 则 android:name 必 须 写 成.app.forwardtarget 或 者 com.android.sample.app.forwardtarget 如 果 只 写 app.forwardtarget, 通 常 编 辑 器 就 会 提 示 该 类 找 不 到, 但 不 巧 的 是, 你 恰 好 有 一 个 类 是 app.forwardtarget, 那 你 只 有 等 着 运 行 时 报 错 吧 所 以 建 议 养 成 习 惯 只 要 是 默 认 package 下 面 的 类, 无 论 是 否 是 在 子 包 里 面, 前 面 都 要 加 上 一 个 点, 现 在 当 前 实 现 是 在 默 认 package 下 2.Persistent 这 里 的 持 久 化 其 实 就 是 本 地 配 置 文 件 的 读 写, 实 现 方 法 是 通 过 Activity.getPreferences(int) 获 取 SharedPreferences 对 象, 然 后 操 作 配 置 文 件 的 读 写, 值 得 注 意 的 是 以 下 几 点 : 1)Activity.getPreferences(int mode) 等 价 于 Content.getSharedPreferences(String filename,int mode), 这 里 面 的 filename 就 是 当 前 class 的 名 称, 例 如 在 PersistentTest 类 中 调 用 getpreferences(0), 等 价 于 调 用 getpreferences("persistenttest", 0) 如 不 想 用 class name 做 文 件 名, 可 以 直 接 调 用 getsharedpreferences 方 法, 自 己 指 定 配 置 文 件 的 名 称

32 2)mode 值 的 定 义 : MODE_PRIVATE = 0, 表 示 当 前 配 置 文 件 为 私 有 文 件, 只 有 当 前 的 应 用 可 以 访 问 MODE_WORLD_READABLE = 1, 表 示 当 前 配 置 文 件 可 以 被 其 他 应 用 读 取 MODE_WORLD_WRITEABLE = 2, 表 示 当 前 配 置 文 件 可 以 被 其 他 应 用 写 入 如 果 配 置 文 件 又 想 被 人 读 又 想 被 写 人, 怎 么 办 呢, 呵 呵, 当 然 是 MODE_WORLD_READABLE&MODE_WORLD_WRITEABLE, 真 的 怀 疑 设 计 android 的 人 以 前 是 做 C/C++ 的 3)SharedPreferences 是 个 很 有 意 思 的 实 现, 读 取 数 据 的 时 候, 直 接 用 get 方 法 就 可 以 了, 可 是 写 数 据 的 时 候, 没 用 给 set 方 法, 呵 呵, 第 一 次 用 这 个 类 一 定 会 以 为 只 能 读 不 能 写 如 果 要 写 数 据 的 话, 需 要 用 editor() 方 法 ( 为 什 么 不 是 geteditor() 呢? 看 来 设 计 的 人 一 定 是 做 C/C++ 的 ) 获 取 SharedPreferences.Editor 类, 然 后 用 这 个 类 的 put 方 法 写 文 件 为 什 么 要 这 样 做 呢? 好 久 没 有 看 设 计 模 式 了, 不 知 道 他 采 用 是 哪 种 高 级 模 式, 等 以 后 有 时 间, 看 看 它 的 实 现 再 做 研 究 吧 4) 在 这 个 实 现 中, 读 文 件 是 放 在 onresume() 中, 写 文 件 是 在 onpause() 中, 为 什 么 要 这 么 做 呢, 看 字 面 意 思, 好 像 只 有 恢 复 和 暂 停 的 时 候 才 会 被 执 行, 那 程 序 第 一 次 创 建 的 时 候 会 读 文 件 吗? 来 让 我 们 看 看 Activity 的 生 命 周 期, 就 会 发 现 这 么 做 的 巧 妙 之 处 : 文 章 分 类 : 移 动 开 发 1. Custom Dialog Android 支 持 自 定 义 窗 口 的 风 格 : 1) 首 先 在 资 源 里 面 建 立 style 的 value; example: <style name="theme.customdialog" parent="android:style/theme.dialog"> <item name="android:windowbackground">@drawable/filled_box </item> </style>

33 drawable/filled_box.xml <shape xmlns:android=" > <solid android:color="#f "/> <stroke android:width="3dp" color="#ffff8080"/> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> PS: 关 于 Styles 的 学 习, 可 以 参 见 : ces.html#stylesandthemes 2) 设 置 当 前 activity 的 属 性, 两 种 方 式 :1. 在 manifest 文 件 中 给 指 定 的 activity 增 加 属 性 android:theme="@android:style/theme.customdialog" 2. 在 程 序 中 增 加 语 句 settheme(r.style.theme_customdialog); PS1: 如 果 只 是 将 Acticity 显 示 为 默 认 的 Dialog, 跳 过 第 一 步, 只 需 要 在 manifest 文 中 增 加 属 性 : android:theme="@android:style/theme.dialog" 或 者 在 程 序 中 增 加 settheme(android.r.style.theme_dialog). PS2: 其 他 创 建 Dialog 的 方 法 : 创 建 app.dialog 类 或 者 创 建 app.alertdialog 类 Next Study: 能 不 能 在 Activity 已 经 打 开 以 后 动 态 修 改 当 前 Activity 的 风 格? 在 测 试 中 发 现, 在 oncreate() 事 件 中 增 加 settheme(), 必 须 在 setcontentview() 之 前, 否 则 指 定 Style 不 能 生 效 2.Custom Title Android 除 了 可 以 为 指 定 的 Activity 设 置 显 示 风 格, 此 外 也 可 以 为 指 定 的 Activity 设 置 一 些 特 效, 比 如 自 定 义 Title, 没 有 Title 的 Activity 或 者 增 加 一 个 ICON 等

34 有 意 思 的 一 点 是, 这 些 特 效 并 不 是 你 想 设 置 的 时 候 就 行 设 置, 你 需 要 在 Activity 显 示 之 前 向 系 统 申 请 要 显 示 的 特 效, 这 样 才 能 在 下 面 的 程 序 中 为 这 些 特 效 进 行 设 置 ( 这 样 是 不 是 多 此 一 举 有 待 研 究 ) 为 一 个 Activity 设 置 自 定 义 Title 的 流 程 : 1) 为 自 定 义 的 Title 建 立 一 个 layout(custom_title_1.xml) <RelativeLayout xmlns:android=" /apk/res/android" android:id="@+id/screen" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:id="@+id/left_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:text="left" /> <TextView android:id="@+id/right_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:text="right" /> </RelativeLayout> 关 于 为 什 么 采 用 RelativeLayout, 可 以 参 见 : 2) 为 activity 设 定 自 定 义 Title 特 效 并 指 定 Title 的 layout: 在 oncreate() 事 件 中 增 加 : requestwindowfeature(window.feature_custom_title); setcontentview(r.layout.custom_title); getwindow().setfeatureint(window.feature_custom_title, R.layout.custom_title_1); 这 三 条 语 句 的 次 序 不 能 颠 倒, 依 次 为 申 请 特 效, 创 建 view, 设 置 特 效 属 性 其 中 requestwindowfeature 等 价 于 getwindow().requestfeature()

35 3) 在 需 要 修 改 Title 的 地 方, 获 取 left_text 或 者 right_text 进 行 设 置 即 可 Next Study:Activity 的 其 他 显 示 特 效 Window 还 有 其 他 一 些 feature, 比 如 FEATURE_CONTEXT_MENU,FEATURE_NO_TITLE, FEATURE_LEFT_ICON 等, 有 待 继 续 学 习 研 究 Animations( 转 ) 文 章 分 类 : 移 动 开 发 仅 用 于 方 便 查 找 Animations 链 接 Android 支 持 2 种 类 型 的 动 画 内 插 动 画 可 以 应 用 于 旋 转 平 移 放 缩 和 渐 变 ; frame-by-frame 动 画 用 来 显 示 一 系 列 的 图 片 关 于 创 建 使 用 和 应 用 动 画 的 广 泛 概 述 可 以 在 11 章 找 到 把 动 画 定 义 成 外 部 资 源, 有 利 于 在 多 个 地 方 使 用, 并 且 能 基 于 设 备 硬 件 或 方 向 选 择 适 应 的 动 画 Tweened Animations 每 个 内 插 动 画 以 独 立 的 XML 文 件 存 储 在 /res/anim 文 件 夹 下 和 layouts 和 drawable 资 源 一 样, 动 画 XML 的 文 件 名 用 作 资 源 的 标 识 每 个 动 画 可 以 用 来 定 义 以 下 的 变 化 :alpha( 渐 变 ) scale( 放 缩 ) translate ( 平 移 ) 和 rotate( 旋 转 ) 每 个 类 型 的 动 画 都 有 特 性 来 定 义 内 插 序 列 如 何 作 用 : Alpha fromalpha/toalpha 0-1 Scale fromxscale/toxscale 0-1 fromyscale/toyscale 0-1 pivotx/pivoty 图 像 的 宽 度 / 高 度 的 百 分 比 字 符 串 0%-100%

36 Translate fromx/tox 0-1 fromy/toy 0-1 Rotate fromdegrees/todegrees pivotx/pivoty 图 像 的 宽 度 / 高 度 的 百 分 比 字 符 串 0%-100% 你 可 以 使 用 <set/> 标 签 来 创 建 多 个 动 画 一 个 动 画 集 包 含 一 个 到 多 个 动 画 变 化, 并 且 支 持 一 些 额 外 的 标 签 和 特 性 来 定 制 动 画 集 中 的 动 画 何 时 以 及 怎 样 运 行 接 下 来 的 列 表 给 了 一 些 set 标 签 一 些 特 性 : duration 动 画 的 持 续 时 间 ( 毫 秒 ) startoffset 启 动 动 画 的 延 时 ( 毫 秒 ) fillbefore fillafter True 表 示 在 动 画 开 始 前 应 用 动 画 变 换 True 表 示 动 画 开 始 后 应 用 动 画 变 换 interpolator 设 置 整 个 时 间 范 围 如 何 影 响 动 画 的 速 度 在 11 章 中 会 探 讨 这 个 变 量 指 定 interpolator 时 需 要 引 用 系 统 的 动 画 资 源 (android:anim/interpolatorname) 如 果 你 不 使 用 startoffset 标 签, 动 画 集 中 的 动 画 将 同 步 执 行 接 下 来 的 例 子 显 示 了 动 画 集 控 制 目 标 在 缩 小 淡 出 的 同 时 旋 转 360 度 : Xml 代 码 Java 代 码 1. <?xml version= 1.0 encoding= utf-8?> <set xmlns:android= d > <rotate 8.

37 9. android:fromdegrees= android:toDegrees= android:pivotX= 50% android:pivotY= 50% android:startOffset= android:duration= 1000 /> <scale android:fromXScale= android:toXScale= android:fromYScale= android:toYScale= android:pivotX= 50% android:pivotY= 50% android:startOffset= android:duration= 500 /> <alpha android:fromAlpha= android:toAlpha= android:startOffset= android:duration= 500 /> </set>

38 Frame-by-Frame Animations Frame-by-Frame 动 画 用 于 View 的 背 景 上, 显 示 一 系 列 的 图 片, 每 张 图 片 显 示 指 定 的 时 间 因 为 Frame-by-Frame 动 画 显 示 drawables, 所 以, 它 们 也 被 放 在 /res/drawble 文 件 夹 下 ( 和 Tweened 动 画 不 同 ), 并 且 使 用 它 们 的 文 件 名 作 为 它 们 的 资 源 标 识 接 下 来 的 XML 片 段 显 示 了 一 个 简 单 的 动 画, 它 循 环 显 示 一 些 位 图 资 源, 每 张 位 图 显 示 0.5 秒 为 了 能 使 用 这 个 XML 片 段, 你 需 要 创 建 rocket1-rocket3 三 个 新 的 图 片 资 源 Java 代 码 1. Xml 代 码 2. <animation-list xmlns:android= android:oneshot= false > <item android:duration= 500 /> <item android:duration= 500 /> <item android:duration= 500 /> </animation-list>

39 看 到 了 吧, 在 Activity 运 行 的 前 后, 无 论 状 态 怎 么 转 移,onResume() 和 onpause() 一 定 会 被 执 行, 与 其 说 实 现 的 巧 妙, 还 不 如 赞 一 下 这 个 生 命 周 期 的 设 计 的 巧 妙, 这 个 巧 妙 不 是 说 说 而 已, 有 时 间 的 话, 看 看 MFC 中 一 个 windows 或 者 dialog 的 生 命 周 期, 你 就 知 道 这 个 巧 妙 的 含 义 了, 我 们 可 以 省 多 少 的 事 情 啊! 所 以 值 得 记 住 的 是, 在 android 中 想 在 运 行 前 后 必 须 要 执 行 的 语 句, 就 应 该 放 在 onresume() 和 onpause() 中 4) 最 后 说 一 个 对 android 小 不 爽 的 地 方 :drawable, 什 么 鬼 东 西 啊! 在 res/drawable 放 一 个 文 件, 访 问 的 时 候 是 drawable/name, 如 果 在 values 里 面 建 立 一 个 drawable 的 变 量, 访 问 的 时 候 也 是 drawable/name, 例 如 在

40 drawable 目 录 下 放 入 一 个 red.xml 文 件, 访 问 的 时 候 如 果 建 立 一 个 drawable 的 变 量 red, 访 问 也 这 完 全 就 是 两 个 东 西 啊, 虽 然 最 新 的 编 辑 器 会 提 示 重 名, 但 查 找 的 时 候 真 的 很 不 方 便 啊, 尤 其 是 drawable 变 量, 可 以 放 在 一 个 abc.xml 中, 以 后 资 源 文 件 多 了, 管 理 起 来 想 想 都 头 麻, 就 不 能 把 其 中 一 个 改 改 名 字 吗? 把 drawable 变 量 叫 成 drawable_value 不 行 吗? 用 GridView 实 现 Gallery 的 效 果 ( 转 ) 在 实 现 横 向 的 类 似 Gallery 的 效 果 中 做 了 实 现 Gallery 的 尝 试, 但 是 效 果 不 好 使 用 的 是 TableLayout, 出 现 了 横 向 拖 动 图 片 的 时 候, 因 为 有 倾 斜 ( 轻 微 的 竖 向 拖 动 ), 会 整 个 列 表 竖 向 滚 动 其 实 这 个 问 题 可 以 将 TableRow 中 条 目 设 置 为 clickable 来 解 决 但 是 效 果 依 然 不 好 这 次 尝 试 通 过 GridView 来 解 决 问 题, 效 果 很 好, 见 截 图 : 基 本 思 路 是 : 每 个 可 选 的 图, 包 括 文 字 部 分, 是 GridView 中 的 一 个 条 目 ; 一 个 GridView 条 目 是 相 对 布 局 (RelativeLayout), 里 面 包 含 一 个 图 片 (ImageView) 和 一 个 文 字 (TextView); 关 键 点 是 GridView 如 何 保 持 横 向, 默 认 的 情 况 下 会 折 行 的, 首 先 要 用 一 个 HorizontalScrollView 提 供 横 向 滚 动 容 器, 然 后 内 部 放 置 一 个 FrameLayout, 如 果 不 放 置 FrameLayout 布 局, 直 接 放 入 下 面 的 布 局 或 者 视 图,GridView 将 会 变 成 单 列 纵 向 滚 动, 在 FrameLayout 布 局 中 加 入 横 向 的 LinearLayout 布 局, 要 设 置 它 的 layout_width, 要 足 够 大, 这 样 在 其 中 加 入 GridView 就 能 横 向 排 列 了 首 先 看 一 下 GridView 中 条 目 的 布 局 : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout

41 xmlns:android=" android:paddingbottom="10.0dip" android:layout_width="90.0dip" android:layout_height="140.0dip"> <ImageView android:layout_width="80.0dip" android:layout_height="108.0dip" android:layout_marginleft="10.0dip" android:layout_centerhorizontal="true"> </ImageView> <TextView android:ellipsize="end" android:layout_width="80.0dip" android:layout_height="26.0dip" android:layout_margintop="5.0dip" android:singleline="true" android:layout_centerhorizontal="true"> </TextView> </RelativeLayout> 这 里 使 用 了 相 对 布 局 的 特 性,android:layout_below, 表 示 TextView 在 ImageView 下 面 这 里 的 图 都 是 用 的 res/drawable 目 录 下 的 静 态 图 形 文 件, 正 式 情 况 下, 应 该 是 从 网 络 获 取, 可 参 见 用 Java concurrent 编 写 异 步 加 载 图 片 功 能 的 原 型 实 现, 二 者 结 合 可 用 于 正 式 生 产 环 境 ListView 的 Header 使 用 了 自 定 义 视 图, 更 简 单 的 示 例 可 参 见 为 ListView 增 加 Header 表 头 (ListView Header) 的 布 局 文 件 : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="200dp"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" 最 近 访 问 人 物 " /> <HorizontalScrollView android:layout_width="fill_parent" android:layout_height="160dp"> <FrameLayout android:layout_width="fill_parent" android:layout_height="match_parent">

42 <LinearLayout android:layout_width="1100dp" android:layout_height="match_parent" android:orientation="horizontal"> <GridView android:layout_width="fill_parent" android:gravity="center" android:layout_height="fill_parent" android:horizontalspacing="1.0dip" android:verticalspacing="1.0dip" android:stretchmode="spacingwidthuniform" android:numcolumns="auto_fit" android:columnwidth="80dip"> </GridView> </LinearLayout> </FrameLayout> </HorizontalScrollView> </LinearLayout> 这 是 比 较 关 键 的 布 局 文 件,GridView 能 实 现 横 向 滚 动 主 要 靠 它 了 其 中 : <LinearLayout android:layout_width="1100dp" 我 是 写 死 了 1100dp, 正 式 使 用 的 时 候, 因 为 图 片 都 可 能 是 动 态 从 服 务 器 上 获 取 的, 可 以 根 据 数 量 以 及 图 片 的 宽 度, 空 白 边 动 态 计 算 这 个 长 度 GridView 和 ListView 类 似, 都 需 要 ViewAdapter 来 适 配 数 据 和 视 图 见 Activity 的 源 代 码 : package com.easymorse.grid.demo; import java.util.arraylist; import java.util.hashmap; import android.app.listactivity; import android.os.bundle; import android.view.layoutinflater; import android.view.view; import android.widget.arrayadapter; import android.widget.gridview; import android.widget.listview; import android.widget.simpleadapter; public class GridDemoActivity extends ListActivity { /** Called when the activity is first created.

43 public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); LayoutInflater layoutinflater = (LayoutInflater) this.getsystemservice("layout_inflater"); View headerview=layoutinflater.inflate(r.layout.list_header, null); setgridview(headerview); ListView listview=(listview) this.findviewbyid(android.r.id.list); listview.addheaderview(headerview); listview.setadapter(new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1,new String[]{" 隋 "," 唐 "," 宋 "," 元 "," 明 "," 清 "})); } private void setgridview(view view) { GridView gridview = (GridView) view.findviewbyid(r.id.grid); gridview.setnumcolumns(10); ArrayList<HashMap<String, Object>> items = new ArrayList<HashMap<String, Object>>(); Object>(); for (int i = 0; i < 10; i++) { HashMap<String, Object> map = new HashMap<String, } map.put("itemimage", R.drawable.k); map.put("itemtext", " 清. 康 熙 " + "(" + i + ")"); items.add(map); R.layout.item, new int[] { SimpleAdapter adapter = new SimpleAdapter(this, items, R.id.ItemText }); gridview.setadapter(adapter); } } new String[] { "ItemImage", "ItemText" }, R.id.ItemImage,

44 Android 画 图 之 Matrix( 一 ) Matrix, 中 文 里 叫 矩 阵, 高 等 数 学 里 有 介 绍, 在 图 像 处 理 方 面, 主 要 是 用 于 平 面 的 缩 放 平 移 旋 转 等 操 作 首 先 介 绍 一 下 矩 阵 运 算 加 法 和 减 法 就 不 用 说 了, 太 简 单 了, 对 应 位 相 加 就 好 图 像 处 理, 主 要 用 到 的 是 乘 法 下 面 是 一 个 乘 法 的 公 式 : 在 Android 里 面, Matrix 由 9 个 float 值 构 成, 是 一 个 3*3 的 矩 阵 如 下 图 没 专 业 工 具, 画 的 挺 难 看 解 释 一 下, 上 面 的 sinx 和 cosx, 表 示 旋 转 角 度 的 cos 值 和 sin 值, 注 意, 旋 转 角 度 是 按 顺 时 针 方 向 计 算 的 translatex 和 translatey 表 示 x 和 y 的 平 移 量 scale 是 缩 放 的 比 例, 1 是 不 变, 2 是 表 示 缩 放 1/2, 这 样 子 下 面 在 Android 上 试 试 Matrix 的 效 果 Java 代 码 1. public class MyView extends View { private Bitmap mbitmap; private Matrix mmatrix = new Matrix(); public MyView(Context context) { super(context); initialize(); } private void initialize() { mbitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.sho 18. w)).getbitmap();

45 19. float cosvalue = (float) Math.cos(-Math.PI/6); float sinvalue = (float) Math.sin(-Math.PI/6); mmatrix.setvalues( new float[]{ cosvalue, -sinvalue, 100, sinvalue, cosvalue, 100, , 0, 2}); } 34. protected void ondraw(canvas canvas) { // super.ondraw(canvas); // 当 然, 如 果 界 面 上 还 有 其 他 元 素 需 要 绘 制, 只 需 要 将 这 句 话 写 上 就 行 了 canvas.drawbitmap(mbitmap, mmatrix, null); } } 运 行 结 果 如 下 :

46 以 左 上 角 为 顶 点, 缩 放 一 半, 逆 时 针 旋 转 30 度, 然 后 沿 x 轴 和 y 轴 分 别 平 移 50 个 像 素, 代 码 里 面 写 的 是 100, 为 什 么 是 平 移 50 呢, 因 为 缩 放 了 一 半 大 家 可 以 自 己 设 置 一 下 Matrix 的 值, 或 者 尝 试 一 下 两 个 Matrix 相 乘, 得 到 的 值 设 置 进 去, 这 样 才 能 对 Matrix 更 加 熟 练 这 里 讲 的 直 接 赋 值 的 方 式 也 许 有 点 不 好 理 解, 不 过 还 好, andrid 提 供 了 对 矩 阵 的 更 方 便 的 方 法, 下 一 篇 介 绍 Android 画 图 之 Matrix( 二 ) 文 章 分 类 : 移 动 开 发 上 一 篇 Android 画 图 之 Matrix( 一 ) 讲 了 一 下 Matrix 的 原 理 和 运 算 方 法, 涉 及 到 高 等 数 学, 有 点 难 以 理 解 还 好 Android 里 面 提 供 了 对 Matrix 操 作 的 一 系 列 方 便 的 接 口

47 Matrix 的 操 作, 总 共 分 为 translate( 平 移 ),rotate( 旋 转 ),scale ( 缩 放 ) 和 skew( 倾 斜 ) 四 种, 每 一 种 变 换 在 Android 的 API 里 都 提 供 了 set, post 和 pre 三 种 操 作 方 式, 除 了 translate, 其 他 三 种 操 作 都 可 以 指 定 中 心 点 变 掉 set 是 直 接 设 置 Matrix 的 值, 每 次 set 一 次, 整 个 Matrix 的 数 组 都 会 post 是 后 乘, 当 前 的 矩 阵 乘 以 参 数 给 出 的 矩 阵 可 以 连 续 多 次 使 用 post, 来 完 成 所 需 的 整 个 变 换 例 如, 要 将 一 个 图 片 旋 转 30 度, 然 后 平 移 到 (100,100) 的 地 方, 那 么 可 以 这 样 做 : Java 代 码 1. Matrix m = new Matrix(); m.postrotate(30 ); m.posttranslate(100, 100 ); 这 样 就 达 到 了 想 要 的 效 果 pre 是 前 乘, 参 数 给 出 的 矩 阵 乘 以 当 前 的 矩 阵 所 以 操 作 是 在 当 前 矩 阵 的 最 前 面 发 生 的 例 如 上 面 的 例 子, 如 果 用 pre 的 话, 就 要 这 样 : Java 代 码 1. Matrix m = new Matrix(); m.settranslate(100, 100 ); m.prerotate(30 );

48 旋 转 缩 放 和 倾 斜 都 可 以 围 绕 一 个 中 心 点 来 进 行, 如 果 不 指 定, 默 认 情 况 下, 是 围 绕 (0,0) 点 来 进 行 Java 代 码 下 面 给 出 一 个 例 子 1. package chroya.demo.graphics; import android.content.context; 4. import android.graphics.bitmap; 5. import android.graphics.canvas; 6. import android.graphics.matrix; 7. import android.graphics.rect; 8. import android.graphics.drawable.bitmapdrawable; 9. import android.util.displaymetrics; 10.import android.view.motionevent; 11.import android.view.view; public class MyView extends View { private Bitmap mbitmap; 16. private Matrix mmatrix = new Matrix(); public MyView(Context context) { 19. super (context); 20. initialize(); 21. } private void initialize() { Bitmap bmp = ((BitmapDrawable)getResources().ge tdrawable(r.drawable.show)).getbitmap(); 26. mbitmap = bmp; 27. /* 首 先, 将 缩 放 为 100*100 这 里 scale 的 参 数 是 比 例 有 一 点 要 注 意, 如 果 直 接 用 100/ 28.bmp.getWidth() 的 话, 会 得 到 0, 因 为 是 整 型 相 除, 所 以 必 须 其 中 有 一 个 是 float 型 的, 直 接 用 100f 就 好 */ 29. mmatrix.setscale(100f/bmp.getwidth(), 100f/bmp.ge theight()); 30. // 平 移 到 (100,100) 处 31. mmatrix.posttranslate(100, 100 );

49 32. // 倾 斜 x 和 y 轴, 以 (100,100) 为 中 心 33. mmatrix.postskew(0.2f, 0.2f, 100, 100 ); 34. } 35. protected void ondraw(canvas canvas) { 37.// super.ondraw(canvas); // 如 果 界 面 上 还 有 其 他 元 素 需 要 绘 制, 只 需 要 将 这 句 话 写 上 就 行 了 canvas.drawbitmap(mbitmap, mmatrix, null ); 40. } 41.} 运 行 效 果 如 下 : 红 色 的 x 和 y 表 示 倾 斜 的 角 度, 下 面 是 x, 上 面 是 y 看 到 了 没,Matrix 就 这 么 简 单

50 XML 属 性 文 章 分 类 : 移 动 开 发 一 属 性 分 类 1. View 的 属 性 2. TextView 的 属 性 二 View 的 属 性 1. 基 础 属 性 android:id : 设 定 view 的 id 之 后 在 代 码 里 面 可 以 通 过 View.findViewById() 来 获 取 相 应 的 View android:tag : 设 定 view 的 tag 之 后 可 以 再 代 码 里 面 通 过 View.findViewByTag 来 获 取 相 应 的 View 2. 事 件 相 关 2.1 Click 事 件 相 关 android:clickable : view 是 否 能 对 click 事 件 作 出 反 应 值 域 true, false android:onclick : 当 view 被 click 之 后,view 的 context 的 哪 个 方 法 被 呼 叫 通 常 这 个 context 是 指 view 所 在 的 Acitvity 例 如 : android:onclick = 'sayhello'. 则 相 应 的 Activity 里 面 有 一 个 方 法 public void sayhello(view view) 方 法 当 这 个 view 被 click 之 后, sayhello 方 法 就 会 被 调 用 android:longclickable : view 是 否 可 以 对 长 时 间 的 click 事 件 作 出 反 应 值 域 true,false 2.1 Focus 事 件 相 关 android:focusable : view 是 否 能 响 应 焦 点 事 件 android: 三 TextView 的 属 性

51 其 他 的 属 性 请 参 考 :View 的 属 性 1 文 本 相 关 的 属 性 1.1 文 本 属 性 android:text 文 字 android:typeface : 设 定 字 体 android:textstyle : 风 格 值 域 bold,italic,normal 可 以 组 合 设 定 例 如 :bold italic android:textsize : 文 字 大 小 android:textcolor : 文 字 的 颜 色 android:textcolorhight : 文 字 被 选 择 的 时 候, 高 亮 的 颜 色 1.2 提 示 文 本 相 关 的 属 性 android:hint 当 文 本 内 容 为 空 时, 提 示 信 息 android:textcolorhint 提 示 文 本 的 颜 色 2. 输 入 内 容 的 控 制 android:number 只 能 输 入 数 字 值 域 integer, decimal, signed, 可 以 组 合 设 定 例 如 :integer signed Android 中 的 长 度 单 位 详 解 (dp sp px in pt mm) 文 章 分 类 : 移 动 开 发 看 到 有 很 多 网 友 不 太 理 解 dp sp 和 px 的 区 别 : 现 在 这 里 介 绍 一 下 dp 和 sp dp 也 就 是 dip 这 个 和 sp 基 本 类 似 如 果 设 置 表 示 长 度 高 度 等 属 性 时 可 以 使 用 dp 或 sp 但 如 果 设 置 字 体, 需 要 使 用 sp dp 是 与 密 度 无 关,sp 除 了 与 密 度 无 关 外, 还 与 scale 无 关 如 果 屏 幕 密 度 为 160, 这 时 dp 和 sp 和 px 是 一 样 的 1dp=1sp=1px, 但 如 果 使 用 px 作 单 位, 如 果 屏 幕 大 小 不 变 ( 假 设 还 是 3.2 寸 ), 而 屏 幕 密 度 变 成 了 320 那 么 原 来 TextView 的 宽 度 设 成 160px, 在 密 度 为 320 的 3.2 寸 屏 幕 里 看 要 比 在 密 度 为 160 的 3.2 寸 屏 幕 上 看 短 了 一 半 但 如 果 设 置 成 160dp 或 160sp 的 话 系 统 会 自 动 将 width 属 性 值 设 置 成 320px 的 也 就 是 160 * 320 / 160 其 中 320 / 160 可 称 为 密 度 比 例 因 子 也 就 是 说, 如 果 使 用 dp 和 sp, 系 统 会 根 据 屏 幕 密 度 的 变 化 自 动 进 行 转 换

52 下 面 看 一 下 其 他 单 位 的 含 义 px: 表 示 屏 幕 实 际 的 象 素 例 如,320*480 的 屏 幕 在 横 向 有 320 个 象 素, 在 纵 向 有 480 个 象 素 in: 表 示 英 寸, 是 屏 幕 的 物 理 尺 寸 每 英 寸 等 于 2.54 厘 米 例 如, 形 容 手 机 屏 幕 大 小, 经 常 说,3.2( 英 ) 寸 3.5( 英 ) 寸 4( 英 ) 寸 就 是 指 这 个 单 位 这 些 尺 寸 是 屏 幕 的 对 角 线 长 度 如 果 手 机 的 屏 幕 是 3.2 英 寸, 表 示 手 机 的 屏 幕 ( 可 视 区 域 ) 对 角 线 长 度 是 3.2*2.54 = 厘 米 读 者 可 以 去 量 一 量 自 己 的 手 机 屏 幕, 看 和 实 际 的 尺 寸 是 否 一 致 mm: 表 示 毫 米, 是 屏 幕 的 物 理 尺 寸 pt: 表 示 一 个 点, 是 屏 幕 的 物 理 尺 寸 大 小 为 1 英 寸 的 1/72 原 创 -- 解 剖 android Style 原 理 从 Button 入 手 文 章 分 类 : 移 动 开 发 转 载 声 明 原 处 : 博 客 参 考 论 坛 外 国 android 论 坛 参 考 资 料 :android Button 原 理 这 几 日 都 是 看 android SDK 原 码, 想 封 装 一 个 HERO 效 果 的 UI 界 面 刚 想 以 为 很 容 易, 但 越 做 越 难, 为 有 百 度,Google 求 救, 但 这 方 面 的 资 料 还 是 不 多, 这 个 我 也 不 怪 了, 可 能 android 在 中 国 的 市 场 还 是 刚 刚 起 步 外 面 的 一 些 网 站 android 技 术 论 坛 打 不 开, 闷... 但 我 发 现 可 以 打 开 了, 以 前 要 用 XX 软 件 先 打 得 开, 但 里 面 的 developer 标 签 还 是 俾 中 国 网 关 封, 这 个 更 郁 闷... 不 讲 了, 直 入 正 题 android Styel 原 理 刚 刚 开 始 得 写 时 从 最 简 单 的 Button 入 手, 下 载 SDK 原 码 候 Button 继 续 TextView 原 码 里 就 三 个 构 造 方 法... Java 代 码 2. public class Button extends TextView {

53 3. public Button(Context context) { 4. this(context, null); 5. } public Button(Context context, AttributeSet attrs) { 8. this(context, attrs, com.android.internal.r.a ttr.buttonstyle); 9. } public Button(Context context, AttributeSet attrs, int defstyle) { 12. super(context, attrs, defstyle); 13. } 14.}[ 默 认 样 式 :com.android.internal.r.attr.buttonstyle,android 的 style 太 强 大, 网 上 有 人 说 过 是 GWT 模 式, 在 校 的 时 候 我 也 用 过 GWT 写 过 小 网 页,HTML 文 件 里 标 签 里 嵌 入 GWT 标 签, 通 过 服 务 端 Java 代 码 生 成 页 面,GWT 就 讲 到 这 里, 有 开 展 过 GWT 的 同 志 就 知 道 这 个 也 很 像 android 的 Layout 布 局 文 件, 哈 哈 我 也 是 认 同 网 上 的 人 说 知 道 android 的 Style 模 式 后, 我 们 要 进 一 步 了 解 内 部 的 实 现, 我 们 要 打 开 com.android.internal.r.attr.buttonstyle 这 个 对 应 的 XML Xml 代 码 1. < style name="widget.button" > < item name="android:background">@android:drawable/btn_defaul t< /item> < item name="android:focusable" >true< /item > < item name="android:clickable" >true< /item > < item name="android:textsize" >20sp< /item > < item name="android:textstyle" >normal< /item > < item name="android:textcolor" >@android:color/button_text </item >

54 <item name="android:gravity">center_vertical center_horizontal> 16.< /item> < /style > 这 个 文 件 定 义 了 好 多 style 相 关 的 属 性, 每 个 属 性 都 好 理 解, 这 个 backgroud 属 性 难 道 仅 仅 是 一 个 drawable 图 片? 如 果 仅 仅 是 一 个 图 片 的 化, 怎 么 能 够 实 现 button 各 种 状 态 下 表 现 出 不 同 背 景 的 功 能 呢? 还 是 来 看 看 这 个 drawable 到 底 是 什 么 东 西 还 是 埋 头 苦 干 地 找 出 答 案 在 drwable 目 录 中 发 现 这 个 btn_default 这 个 文 件, 还 有 许 多 这 样 的 xml 文 件, 看 名 字 可 以 估 到 是 什 么 来 的 btn_default.xml 内 容 Xml 代 码 1. < selector xmlns:android=" android"> < item android:state_window_focused="false" android:state_en abled="true" 4. / > < item android:state_window_focused="false" android:state_ enabled="false" 7. / > < item android:state_pressed="true" / > < item android:state_focused="true" android:state_enabled="t rue" / > < item android:state_enabled="true" / > < item android:state_focused="true"

55 / > < item android:drawable="@drawable/btn_default_normal_disable " / > < /selector > 在 android 中 drawable 文 件 是 看 图 片 存 放 的, 最 普 通 的 就 是 一 个 图 片 而 这 里 用 到 的 是 StateListDrawable 当 Android 的 解 析 器 解 析 到 上 面 的 xml 时, 会 自 动 转 化 成 一 个 StateListDrawable 类 的 实 例, 看 看 SDK 是 这 样 说 的 Lets you assign a number of graphic images to a single Drawable and swap out the visible item by a string ID value. It can be defined in an XML file with the <selector> element. Each state Drawable is defined in a nested <item> element. For more information, see the guide to Drawable Resources. 意 思 就 是 通 过 字 符 串 标 识 符 值 ID 分 配 单 个 可 绘 制 可 切 换 的 可 视 图 形 项 看 看 核 心 代 码 吧 : 大 部 多 代 码 删 除 了 Java 代 码 1. public class StateListDrawable extends DrawableContainer { 2. /** 3. * To be proper, we should have a getter for dither (and alpha, etc.) 4. * so that proxy classes like this can save/restore their delegates' 5. * values, but we don't have getters. Since we do have s etters 6. * (e.g. setdither), which this proxy forwards on, we have to have some 7. * default/initial setting. 8. * 9. * The initial setting for dither is now true, since it almost always seems 10.* to improve the quality at negligible cost.

56 11.*/ 12.private static final boolean DEFAULT_DITHER = true; 13.private final StateListState mstateliststate; 14.private boolean mmutated; public StateListDrawable() { 17.this(null, null); 18.} /** 21.* Add a new image/string ID to the set of images. 22.* stateset - An array of resource Ids to associat e with the image. 24.* Switch to this image by calling setstate(). drawable -The image to show. 26.*/ 27.public void addstate(int[] stateset, Drawable drawable) { 28.if (drawable!= null) { 29.mStateListState.addStateSet(stateSet, drawable); 30.// in case the new state matches our current state onStateChange(getState()); 32.} 33.} @Override 36.public boolean isstateful() { 37.return true; 38.} @Override 41.protected boolean onstatechange(int[] stateset) { 42.int idx = mstateliststate.indexofstateset(stateset); 43.if (idx < 0) { 44.idx = mstateliststate.indexofstateset(stateset.wild_card); 45.} 46.if (selectdrawable(idx)) { 47.return true; 48.} 49.return super.onstatechange(stateset); 50.} 51.

57 /** 54.* Gets the state set at an index. 55.* index The index of the state set. The state set at the index. pending API council #getstatecount() #getstatedrawable(int) 61.*/ 62.public int[] getstateset(int index) { 63.return mstateliststate.mstatesets[index]; 64.} static final class StateListState extends DrawableContainerSt ate { 68.private int[][] mstatesets; StateListState(StateListState orig, StateListDrawable owner, R esources res) { 71.super(orig, owner, res); if (orig!= null) { 74.mStateSets = orig.mstatesets; 75.} else { 76.mStateSets = new int[getchildren().length][]; 77.} 78.} int addstateset(int[] stateset, Drawable drawable) { 84. final int pos = addchild(drawable); 85. mstatesets[pos] = stateset; 86. return pos; 87. } } 91.

58 92.private StateListDrawable(StateListState state, Resources res) { 93.StateListState as = new StateListState(state, this, res); 94.mStateListState = as; 95.setConstantState(as); 96.onStateChange(getState()); 97.} 98.} xml 中 每 一 个 Item 就 对 应 一 种 状 态, 而 每 一 个 有 state_ 的 属 性 就 是 描 述 状 态, drawable 则 是 真 正 的 drawable 图 片 当 把 这 个 实 例 付 给 View 作 为 Background 的 时 候,View 会 根 据 不 同 的 state 来 切 换 不 同 状 态 的 图 片, 从 而 实 现 了 Press 等 诸 多 效 果 简 单 看 一 下 View 中 有 关 状 态 切 换 的 代 码 吧 : Java 代 码 1. /** 2. * The order here is very important to {@link #getdrawa blestate()} 3. */ 4. private static final int[][] VIEW_STATE_SETS = { 5. EMPTY_STATE_SET, // WINDOW_FOCUSED_STATE_SET, // SELECTED_STATE_SET, // SELECTED_WINDOW_FOCUSED_STATE_SET, // FOCUSED_STATE_SET, // FOCUSED_WINDOW_FOCUSED_STATE_SET, // FOCUSED_SELECTED_STATE_SET, // FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, // ENABLED_STATE_SET, // ENABLED_WINDOW_FOCUSED_STATE_SET, // ENABLED_SELECTED_STATE_SET, // ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, // ENABLED_FOCUSED_STATE_SET, // ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, // ENABLED_FOCUSED_SELECTED_STATE_SET, // ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, // PRESSED_STATE_SET, //

59 22.PRESSED_WINDOW_FOCUSED_STATE_SET, // PRESSED_SELECTED_STATE_SET, // PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET, // PRESSED_FOCUSED_STATE_SET, // PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET, // PRESSED_FOCUSED_SELECTED_STATE_SET, // PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, // PRESSED_ENABLED_STATE_SET, // PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET, // PRESSED_ENABLED_SELECTED_STATE_SET, // PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, // PRESSED_ENABLED_FOCUSED_STATE_SET, // PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, // PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET, // PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, // }; 详 细 打 开 View.java 自 己 看 下 面 是 setbackground 方 法, 红 字 就 是 是 state 切 换,View 这 个 类 太 长 了, android2.2 版 一 共 9321 行 Java 代 码 1. /** 2. * Set the background to a given Drawable, or remove the background. If the 3. * background has padding, this View's padding is set to the background's 4. * padding. However, when a background is remov ed, this View's padding isn't 5. * touched. If setting the padding is desired, please use 6. * {@link #setpadding(int, int, int, int)}. 7. *

60 8. d The Drawable to use as the backgr ound, or null to remove the 9. * background 10. */ 11. public void setbackgrounddrawable(drawable d) { 12. boolean requestlayout = false; mbackgroundresource = 0; if (d.isstateful()) { 19. d.setstate(getdrawablestate()); 20. } 21. d.setvisible(getvisibility() == VISIB LE, false); 22. mbgdrawable = d; mbackgroundsizechanged = true; 27. invalidate(); 28.} setbackgound 方 法 先 判 断 Drawable 对 象 是 否 支 持 state 切 换 如 果 支 持, 设 置 状 态 就 可 达 到 图 片 切 换 的 效 果 就 写 到 这 里 Android----- 使 用 Button 特 效 selector+shape 文 章 分 类 : 移 动 开 发 当 然 除 了 使 用 drawable 这 样 的 图 片 外 今 天 谈 下 自 定 义 图 形 shape 的 方 法, 对 于 Button 控 件 Android 上 支 持 以 下 几 种 属 性 shape gradient stroke corners 等 我 们 就 以 目 前 系 统 的 Button 的 selector 为 例 说 下 :

61 Java 代 码 1. <shape> 2. <gradient 3. android:startcolor="#ff8c00" 4. android:endcolor="#ffffff" 5. android:angle="270" /> 6. <stroke 7. android:width="2dp" 8. android:color="#dcdcdc" /> 9. <corners 10. android:radius="2dp" /> 11.<padding 12. android:left="10dp" 13. android:top="10dp" 14. android:right="10dp" 15. android:bottom="10dp" /> 16.</shape> 对 于 上 面, 这 条 shape 的 定 义, 分 别 为 渐 变, 在 gradient 中 startcolor 属 性 为 开 始 的 颜 色, endcolor 为 渐 变 结 束 的 颜 色, 下 面 的 angle 是 角 度 接 下 来 是 stroke 可 以 理 解 为 边 缘,corners 为 拐 角 这 里 radius 属 性 为 半 径, 最 后 是 相 对 位 置 属 性 padding 对 于 一 个 Button 完 整 的 定 义 可 以 为 : Java 代 码 1. <?xml version="1.0" encoding="utf-8"?> 2. <selector 3. xmlns:android=" 4. <item android:state_pressed="true" > 5. <shape> 6. <gradient 7. android:startcolor="#ff8c00" 8. android:endcolor="#ffffff" 9. android:angle="270" /> 10. <stroke 11. android:width="2dp" 12. android:color="#dcdcdc" /> 13. <corners 14. android:radius="2dp" /> 15. <padding 16. android:left="10dp"

62 17. android:top="10dp" 18. android:right="10dp" 19. android:bottom="10dp" /> 20. </shape> 21. </item> <item android:state_focused="true" > 24. <shape> 25. <gradient 26. android:startcolor="#ffc2b7" 27. android:endcolor="#ffc2b7" 28. android:angle="270" /> 29. <stroke 30. android:width="2dp" 31. android:color="#dcdcdc" /> 32. <corners 33. android:radius="2dp" /> 34. <padding 35. android:left="10dp" 36. android:top="10dp" 37. android:right="10dp" 38. android:bottom="10dp" /> 39. </shape> 40. </item> <item> 43. <shape> 44. <gradient 45. android:startcolor="#ff9d77" 46. android:endcolor="#ff9d77" 47. android:angle="270" /> 48. <stroke 49. android:width="2dp" 50. android:color="#fad3cf" /> 51. <corners 52. android:radius="2dp" /> 53. <padding 54. android:left="10dp" 55. android:top="10dp" 56. android:right="10dp" 57. android:bottom="10dp" /> 58. </shape> 59. </item> 60.</selector>

63 注 意! 提 示 大 家, 以 上 几 个 item 的 区 别 主 要 是 体 现 在 state_pressed 按 下 或 state_focused 获 得 焦 点 时, 当 当 来 判 断 显 示 什 么 类 型, 而 没 有 state_xxx 属 性 的 item 可 以 看 作 是 常 规 状 态 下 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android=" > <item android:color="hex_color" android:state_pressed=["true" "false"] android:state_focused=["true" "false"] android:state_selected=["true" "false"] android:state_active=["true" "false"] android:state_checkable=["true" "false"] android:state_checked=["true" "false"] android:state_enabled=["true" "false"] android:state_window_focused=["true" "false"] /> </selector> Elements: <selector> 必 须 必 须 是 根 元 素 包 含 一 个 或 多 个 <item> 元 素 Attributes: xmlns:android String, 必 须 定 义 XML 的 命 名 空 间, 必 须 是 <item> 定 义 特 定 状 态 的 color, 通 过 它 的 特 性 指 定 必 须 是 <selector> 的 子 元 素 Attributes: android:color 16 进 制 颜 色 必 须 这 个 颜 色 由 RGB 值 指 定, 可 带 Alpha 这 个 值 必 须 以 # 开 头, 后 面 跟 随 Alpha-Red-Green-Blue 信 息 : #RGB #ARGB #RRGGBB

64 #AARRGGBB android:state_pressed Boolean true 表 示 按 下 状 态 使 用 ( 例 如 按 钮 按 下 ); false 表 示 非 按 下 状 态 使 用 android:state_focused Boolean true 表 示 聚 焦 状 态 使 用 ( 例 如 使 用 滚 动 球 /D-pad 聚 焦 Button); false 表 示 非 聚 焦 状 态 使 用 android:state_selected Boolean true 表 示 选 中 状 态 使 用 ( 例 如 Tab 打 开 ); false 表 示 非 选 中 状 态 使 用 android:state_checkable Boolean true 表 示 可 勾 选 状 态 时 使 用 ; false 表 示 非 可 勾 选 状 态 使 用 ( 只 对 能 切 换 可 勾 选 非 可 勾 选 的 构 件 有 用 ) android:state_checked Boolean true 表 示 勾 选 状 态 使 用 ; false 表 示 非 勾 选 状 态 使 用 android:state_enabled Boolean true 表 示 可 用 状 态 使 用 ( 能 接 收 触 摸 / 点 击 事 件 ); false 表 示 不 可 用 状 态 使 用 android:window_focused Boolean true 表 示 应 用 程 序 窗 口 有 焦 点 时 使 用 ( 应 用 程 序 在 前 台 ); false 表 示 无 焦 点 时 使 用 ( 例 如 Notification 栏 拉 下 或 对 话 框 显 示 ) 注 意 : 记 住 一 点,StateList 中 第 一 个 匹 配 当 前 状 态 的 item 会 被 使 用 因 此, 如 果 第 一 个 item 没 有 任 何 状 态 特 性 的 话, 那 么 它 将 每 次 都 被 使 用, 这 也 是 为 什 么 默 认 的 值 必 须 总 是 在 最 后 ( 如 下 面 的 例 子 所 示 ) Examples: XML 文 件 保 存 在 res/color/button_text.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android=" <item android:state_pressed="true" android:color="#ffff0000"/> <!-- pressed --> <item android:state_focused="true" android:color="#ff0000ff"/> <!-- focused --> <item android:color="#ff000000"/> <!-- default -->

65 </selector> 这 个 Layout XML 会 应 用 ColorStateList 到 一 个 View 上 : <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/button_text" android:textcolor="@color/button_text" /> Android 字 符 高 亮 显 示 ( 转 载 ) 文 章 分 类 : 移 动 开 发 Java 代 码 1. String str="adsjoiasdjpaisdjpaidj"; 2. /** Called when the activity is first created. */ 4. public void oncreate(bundle savedinstancestate) { 5. super.oncreate(savedinstancestate); 6. setcontentview(r.layout.main); 7. TextView textview=(textview)findviewbyid(r.id.textview); 8. SpannableStringBuilder style=new SpannableStringBuilder(s tr); 9. style.setspan(new ForegroundColorSpan(Color.RED),3,8,Spann able.span_exclusive_exclusive); 10. textview.settext(style); 11.} Android SDCard 操 作 ( 文 件 读 写, 容 量 计 算 ) 文 章 分 类 : 移 动 开 发 android.os.environment 提 供 访 问 环 境 变 量 java.lang.object android.os.environment Environment 静 态 方 法 :

66 方 法 : getdatadirectory () 返 回 : File 解 释 : 返 回 Data 的 目 录 方 法 : getdownloadcachedirectory () 返 回 : File 解 释 : 返 回 下 载 缓 冲 区 目 录 方 法 : getexternalstoragedirectory () 返 回 : File 解 释 : 返 回 扩 展 存 储 区 目 录 (SDCard) 方 法 : getexternalstoragepublicdirectory (String type) 返 回 : File 解 释 : 返 回 一 个 高 端 的 公 用 的 外 部 存 储 器 目 录 来 摆 放 某 些 类 型 的 文 件 ( 来 自 网 上 ) 方 法 : getrootdirectory () 返 回 : File 解 释 : 返 回 Android 的 根 目 录 方 法 : getexternalstoragestate () 返 回 : String 解 释 : 返 回 外 部 存 储 设 备 的 当 前 状 态

67 getexternalstoragestate () 返 回 的 状 态 String 类 型 常 量 : 常 量 : MEDIA_BAD_REMOVAL 值 : "bad_removal" 解 释 : 在 没 有 正 确 卸 载 SDCard 之 前 移 除 了 常 量 :MEDIA_CHECKING 值 : "checking" 解 释 : 正 在 磁 盘 检 查 常 量 : MEDIA_MOUNTED 值 : "mounted" 解 释 : 已 经 挂 载 并 且 拥 有 可 读 可 写 权 限 常 量 : MEDIA_MOUNTED_READ_ONLY 值 : "mounted_ro" 解 释 : 已 经 挂 载, 但 只 拥 有 可 读 权 限 常 量 :MEDIA_NOFS 值 : "nofs" 解 释 : 对 象 空 白, 或 者 文 件 系 统 不 支 持 常 量 : MEDIA_REMOVED 值 : "removed" 解 释 : 已 经 移 除 扩 展 设 备

68 常 量 : MEDIA_SHARED 值 : "shared" 解 释 : 如 果 SDCard 未 挂 载, 并 通 过 USB 大 容 量 存 储 共 享 常 量 : MEDIA_UNMOUNTABLE 值 : "unmountable" 解 释 : 不 可 以 挂 载 任 何 扩 展 设 备 常 量 : MEDIA_UNMOUNTED 值 : "unmounted" 解 释 : 已 经 卸 载 使 用 时 只 需 先 判 断 SDCard 当 前 的 状 态 然 后 取 得 SdCard 的 目 录 即 可 ( 见 源 代 码 ) Java 代 码 1. <SPAN style="font-size: small"> 1 //SDcard 操 作 2. public void SDCardTest() { 3. // 获 取 扩 展 SD 卡 设 备 状 态 4. String sdstatestring = android.os.environment.getexternalsto ragestate(); // 拥 有 可 读 可 写 权 限 if (sdstatestring.equals(android.os.environment.media_mounted)) { try { // 获 取 扩 展 存 储 设 备 的 文 件 目 录 7. File SDFile = android.os.environment 8..getExternalStorageDirectory();

69 // 打 开 文 件 9. File myfile = new File(SDFile.getAbsolutePath() File.separator + "MyFile.txt"); 11. // 判 断 是 否 存 在, 不 存 在 则 创 建 12. if (!myfile.exists()) { 13. myfile.createnewfile(); 14. } 15. // 写 数 据 16. String szouttext = "Hello, World!"; 17. FileOutputStream outputstream = new FileOutputStream (myfile); 18. outputstream.write(szouttext.getbytes()); 19. outputstream.close(); 20. } catch (Exception e) { 21. // TODO: handle exception }// end of try 22.}// end of if(media_mounted) 23.// 拥 有 只 读 权 限 24.else if (sdstatestring 25..endsWith(android.os.Environment.MEDIA_MOUNTED_READ_ONLY)) { 26. // 获 取 扩 展 存 储 设 备 的 文 件 目 录 27. File SDFile = android.os.environment 28..getExternalStorageDirectory(); 29.// 创 建 一 个 文 件 30.File myfile = new File(SDFile.getAbsolutePath() File.separator "MyFile.txt"); 33.// 判 断 文 件 是 否 存 在 34.if (myfile.exists()) { 35. try { 36. // 读 数 据 37. FileInputStream inputstream = new FileInputStream(myFile); 38. byte[] buffer = new byte[1024]; 39. inputstream.read(buffer); 40. inputstream.close(); 41. } catch (Exception e) { 42. // TODO: handle exception 43.}// end of try

70 }// end of if(myfile) 44.}// end of if(media_mounted_read_only) 45.}// end of func</span> 计 算 SDCard 的 容 量 大 小 android.os.statfs 一 个 模 拟 linux 的 df 命 令 的 一 个 类, 获 得 SD 卡 和 手 机 内 存 的 使 用 情 况 java.lang.object android.os.statfs 构 造 方 法 : StatFs (String path) 公 用 方 法 : 方 法 : getavailableblocks () 返 回 : int 解 释 : 返 回 文 件 系 统 上 剩 下 的 可 供 程 序 使 用 的 块 方 法 : getblockcount () 返 回 : int 解 释 : 返 回 文 件 系 统 上 总 共 的 块 方 法 : getblocksize () 返 回 : int 解 释 : 返 回 文 件 系 统 一 个 块 的 大 小 单 位 byte 方 法 : getfreeblocks () 返 回 : int

71 解 释 : 返 回 文 件 系 统 上 剩 余 的 所 有 块 包 括 预 留 的 一 般 程 序 无 法 访 问 的 方 法 : restat (String path) 返 回 : void 解 释 : 执 行 一 个 由 该 对 象 所 引 用 的 文 件 系 统 雷 斯 塔 特.(Google 翻 译 ) 想 计 算 SDCard 大 小 和 使 用 情 况 时, 只 需 要 得 到 SD 卡 总 共 拥 有 的 Block 数 或 是 剩 余 没 用 的 Block 数, 再 乘 以 每 个 Block 的 大 小 就 是 相 应 的 容 量 大 小 了 单 位 byte.( 见 代 码 ) Java 代 码 1. <SPAN style="font-size: small"> 1 2. public void SDCardSizeTest() { // 取 得 SDCard 当 前 的 状 态 5. 4 String sdcstring = android.os.environme nt.getexternalstoragestate(); if (sdcstring.equals(android.os.environme nt.media_mounted)) { // 取 得 sdcard 文 件 路 径 File pathfile = android.os.envi ronment getExternalStorage Directory(); android.os.statfs statfs = new android.os.statfs(pathfile.getpath()); // 获 取 SDCard 上 BLOCK 总 数 long ntotalblocks = statfs.getbl ockcount(); 17.16

72 18.17 // 获 取 SDCard 上 每 个 block 的 SIZE long nblocsize = statfs.getblock Size(); // 获 取 可 供 程 序 使 用 的 Block 的 数 量 long navailablock = statfs.getav ailableblocks(); // 获 取 剩 下 的 所 有 Block 的 数 量 ( 包 括 预 留 的 一 般 程 序 无 法 使 用 的 块 ) long nfreeblock = statfs.getfree Blocks(); // 计 算 SDCard 总 容 量 大 小 MB long nsdtotalsize = ntotalblocks * nblocsize / 1024 / 1024; // 计 算 SDCard 剩 余 大 小 MB long nsdfreesize = navailablock * nblocsize / 1024 / 1024; }// end of if }// end of func</span> Android 将 ButtonBar 放 在 屏 幕 底 部? 转 烛 空 间 ( 转 载 ) 文 章 分 类 : 移 动 开 发 接 上 篇 Android 将 TAB 选 项 卡 放 在 屏 幕 底 部 写 上 篇 提 到 ButtonBar 的 方 式 写 底 部 button, 试 了 试, 看 起 来 外 观 貌 似 比 Tab 好 看, 不 过 恐 怕 没 有 Tab 管 理 Activity 方 便 吧, 毕 竟 一 个 Tab 就 是 一 个 Activity, 但 是 这 样 用 Button 的 话, 却 并 不 如 此, 所 以 这 样 的 涉 及 可 能 虽 然 好 看 点, 但 是 管 理 起 来 却 是 相 当 麻 烦 那 么 暂 且 把 对 activity 的 管 理 放 在 一 边, 只 看 界 面 的 设 计 吧

73 要 涉 及 这 样 的 一 个 buttonbar, 主 要 就 是 要 用 到 这 个 风 格 首 先 还 是 来 看 xml 的 设 计, 保 存 layout/bottombtn.xml Java 代 码 1. <?xml version="1.0" encoding="utf-8"?> 2. <LinearLayout xmlns:android=" ndroid" 3. android:orientation="vertical" 4. android:layout_width="fill_parent" 5. android:layout_height="fill_parent"> <TabHost 8. android:layout_width="fill_parent" 9. android:layout_height="fill_parent"> 10.<LinearLayout android:orientation="vertical" 11. android:layout_width="fill_parent" 12. android:layout_height="fill_parent" 13. android:padding="5dp"> 14.<FrameLayout 15. android:layout_width="fill_parent" 16. android:layout_height="wrap_content" 17. android:padding="5dp" 18. android:layout_weight="1" /> 19.<TabWidget 20. android:layout_width="fill_parent" 21. android:layout_height="wrap_content" 22. android:layout_weight="0" /> 23.</LinearLayout> 24.</TabHost> 25.</LinearLayout> 然 后 以 下 就 是 完 整 的 代 码 了 :

74 Java 代 码 1. package net.wangliping.test; import android.app.activitygroup; 4. import android.content.intent; 5. import android.os.bundle; 6. import android.widget.tabhost; 7. import android.widget.tabhost.tabspec; public class TestTab extends ActivityGroup { 10. public static TabHost tab_host; 12. protected void oncreate(bundle savedinstancestate) { 13. super.oncreate(savedinstancestate); 14. setcontentview(r.layout.bottomtab); tab_host = (TabHost) findviewbyid(r.id.edit_ item_tab_host); 17. tab_host.setup(this.getlocalactivitymanager()); TabSpec ts1 = tab_host.newtabspec("tab_weath ER"); 20. ts1.setindicator("weather"); 21. ts1.setcontent(new Intent(this, Weather.class )); 22. tab_host.addtab(ts1); TabSpec ts2 = tab_host.newtabspec("tab_mail" ); 25. ts2.setindicator("mail"); 26. ts2.setcontent(new Intent(this, MailSend.clas s)); 27. tab_host.addtab(ts2); TabSpec ts3 = tab_host.newtabspec("tab_jump" ); 30. ts3.setindicator("jump");

75 31. ts3.setcontent(new Intent(this, TabJump.class )); 32. tab_host.addtab(ts3); tab_host.setcurrenttab(0); 35. } 36.} 而 关 于 页 面 的 跳 转, 就 是 : Java 代 码 1. TestTab.tabHost.setCurrentTab(0); 如 此 这 般, 就 形 成 了 下 面 的 这 个 东 西, 其 实 还 没 有 放 在 上 面 好 看 所 以 也 证 实 了 上 面 那 个 应 用 不 是 简 单 地 放 置 TAB 在 底 端 了 有 机 会 还 是 再 看 看 ButtonBar 了

76 Android2.2 API 中 文 文 档 系 列 (1) TextView 文 章 分 类 : 移 动 开 发 正 文 一 TextView 的 API 中 文 文 档 1.1 结 构 java.lang.object android.view.view android.widget.textview 直 接 子 类 : Button, CheckedTextView, Chronometer, DigitalClock, EditText

77 间 接 子 类 : AutoCompleteTextView, CheckBox, CompoundButton, ExtractEditText,MultiAutoCompleteTextView, RadioButton, ToggleButton 1.2 API 属 性 名 称 描 述 android:autol ink android:autot ext android:buffe rtype android:capit alize 设 置 是 否 当 文 本 为 URL 链 接 / / 电 话 号 码 /map 时, 文 本 显 示 为 可 点 击 的 链 接 可 选 值 (none/web/ /phone/map/all) 如 果 设 置, 将 自 动 执 行 输 入 值 的 拼 写 纠 正 此 处 无 效 果, 在 显 示 输 入 法 并 输 入 的 时 候 起 作 用 指 定 gettext() 方 式 取 得 的 文 本 类 别 选 项 editable 类 似 于 StringBuilder 可 追 加 字 符, 也 就 是 说 gettext 后 可 调 用 append 方 法 设 置 文 本 内 容 spannable 则 可 在 给 定 的 字 符 区 域 使 用 样 式, 参 见 这 里 1 这 里 2 设 置 英 文 字 母 大 写 类 型 此 处 无 效 果, 需 要 弹 出 输 入 法 才 能 看 得 到, 参 见 EditText 此 属 性 说 明 android:curso rvisible 设 定 光 标 为 显 示 / 隐 藏, 默 认 显 示 android:digit s android:drawa blebottom android:drawa bleleft android:drawa blepadding 设 置 允 许 输 入 哪 些 字 符 如 */%\n() 在 text 的 下 方 输 出 一 个 drawable, 如 图 片 如 果 指 定 一 个 颜 色 的 话 会 把 text 的 背 景 设 为 该 颜 色, 并 且 同 时 和 background 使 用 时 覆 盖 后 者 在 text 的 左 边 输 出 一 个 drawable, 如 图 片 设 置 text 与 drawable( 图 片 ) 的 间 隔, 与 drawableleft drawableright drawabletop drawablebottom 一 起 使 用, 可 设 置 为 负 数, 单 独 使 用 没 有 效 果 android:drawa bleright android:drawa 在 text 的 右 边 输 出 一 个 drawable, 如 图 片 在 text 的 正 上 方 输 出 一 个 drawable, 如 图 片

78 bletop android:edita ble 设 置 是 否 可 编 辑 这 里 无 效 果, 参 见 EditView android:edito rextras android:ellip size 设 置 文 本 的 额 外 的 输 入 数 据 在 EditView 再 讨 论 设 置 当 文 字 过 长 时, 该 控 件 该 如 何 显 示 有 如 下 值 设 置 : start 省 略 号 显 示 在 开 头 ; end 省 略 号 显 示 在 结 尾 ; middle - 省 略 号 显 示 在 中 间 ; marquee 以 跑 马 灯 的 方 式 显 示 ( 动 画 横 向 移 动 ) android:freez estext 设 置 保 存 文 本 的 内 容 以 及 光 标 的 位 置 参 见 : 这 里 android:gravi ty android:hint android:imeop tions android:imeac tionid 设 置 文 本 位 置, 如 设 置 成 center, 文 本 将 居 中 显 示 Text 为 空 时 显 示 的 文 字 提 示 信 息, 可 通 过 textcolorhint 设 置 提 示 信 息 的 颜 色 此 属 性 在 EditView 中 使 用, 但 是 这 里 也 可 以 用 附 加 功 能, 设 置 右 下 角 IME 动 作 与 编 辑 框 相 关 的 动 作, 如 actiondone 右 下 角 将 显 示 一 个 完 成, 而 不 设 置 默 认 是 一 个 回 车 符 号 这 个 在 EditText 中 再 详 细 说 明, 此 处 无 用 设 置 IME 动 作 ID 在 EditText 再 做 说 明, 可 以 先 看 这 篇 帖 子 : 这 里 android:imeac tionlabel 设 置 IME 动 作 标 签 在 EditText 再 做 说 明 android:inclu defontpadding android:input Method android:input Type 设 置 文 本 是 否 包 含 顶 部 和 底 部 额 外 空 白, 默 认 为 true 为 文 本 指 定 输 入 法, 需 要 完 全 限 定 名 ( 完 整 的 包 名 ) 例 如 : com.google.android.inputmethod.pinyin, 但 是 这 里 报 错 找 不 到 设 置 文 本 的 类 型, 用 于 帮 助 输 入 法 显 示 合 适 的 键 盘 类 型 在 EditText 中 再 详 细 说 明, 这 里 无 效 果 android:links Clickable 设 置 链 接 是 否 点 击 连 接, 即 使 设 置 了 autolink

79 在 ellipsize 指 定 marquee 的 情 况 下, 设 置 重 复 滚 动 的 次 数, android:marqu 当 设 置 为 marquee_forever 时 表 示 无 限 次 eerepeatlimit 设 置 TextView 的 宽 度 为 N 个 字 符 的 宽 度 这 里 测 试 为 一 个 android:ems 汉 字 字 符 宽 度, 如 图 : android:maxem s android:minem s 设 置 TextView 的 宽 度 为 最 长 为 N 个 字 符 的 宽 度 与 ems 同 时 使 用 时 覆 盖 ems 选 项 设 置 TextView 的 宽 度 为 最 短 为 N 个 字 符 的 宽 度 与 ems 同 时 使 用 时 覆 盖 ems 选 项 android:maxle ngth android:lines android:maxli nes 限 制 显 示 的 文 本 长 度, 超 出 部 分 不 显 示 设 置 文 本 的 行 数, 设 置 两 行 就 显 示 两 行, 即 使 第 二 行 没 有 数 据 设 置 文 本 的 最 大 显 示 行 数, 与 width 或 者 layout_width 结 合 使 用, 超 出 部 分 自 动 换 行, 超 出 行 数 将 不 显 示 android:minli nes 设 置 文 本 的 最 小 行 数, 与 lines 类 似 android:lines pacingextra 设 置 行 间 距 android:lines pacingmultipl ier android:numer ic 设 置 行 间 距 的 倍 数 如 1.2 如 果 被 设 置, 该 TextView 有 一 个 数 字 输 入 法 此 处 无 用, 设 置 后 唯 一 效 果 是 TextView 有 点 击 效 果, 此 属 性 在 EditText 将 详 细 说 明 android:passw ord 以 小 点. 显 示 文 本 android:phone Number android:priva 设 置 为 电 话 号 码 的 输 入 方 式 设 置 输 入 法 选 项, 此 处 无 用, 在 EditText 将 进 一 步 讨 论

80 teimeoptions android:scrol lhorizontally 设 置 文 本 超 出 TextView 的 宽 度 的 情 况 下, 是 否 出 现 横 拉 条 android:selec tallonfocus android:shado wcolor 如 果 文 本 是 可 选 择 的, 让 他 获 取 焦 点 而 不 是 将 光 标 移 动 为 文 本 的 开 始 位 置 或 者 末 尾 位 置 EditText 中 设 置 后 无 效 果 果 : 指 定 文 本 阴 影 的 颜 色, 需 要 与 shadowradius 一 起 使 用 效 android:shado wdx 设 置 阴 影 横 向 坐 标 开 始 位 置 android:shado wdy 设 置 阴 影 纵 向 坐 标 开 始 位 置 android:shado wradius android:singl eline 设 置 阴 影 的 半 径 设 置 为 0.1 就 变 成 字 体 的 颜 色 了, 一 般 设 置 为 3.0 的 效 果 比 较 好 设 置 单 行 显 示 如 果 和 layout_width 一 起 使 用, 当 文 本 不 能 全 部 显 示 时, 后 面 用 来 表 示 如 android:text="test_ singleline " android:singleline="true" android:layout_width="20dp" 将 只 显 示 t 如 果 不 设 置 singleline 或 者 设 置 为 false, 文 本 将 自 动 换 行 android:text 设 置 显 示 文 本. 设 置 文 字 外 观 如?android:attr/textAppearanceLargeInverse android:texta ppearance 这 里 引 用 的 是 系 统 自 带 的 一 个 外 观,? 表 示 系 统 是 否 有 这 种 外 观, 否 则 使 用 默 认 的 外 观 可 设 置 的 值 如 下 : textappearancebutton/textappearanceinverse/textappearan celarge /textappearancelargeinverse/textappearancemedium/textap pearancemediuminverse/textappearancesmall/textappearanc esmallinverse android:textc olor 设 置 文 本 颜 色 android:textc olorhighlight 被 选 中 文 字 的 底 色, 默 认 为 蓝 色

81 android:textc olorhint 设 置 提 示 信 息 文 字 的 颜 色, 默 认 为 灰 色 与 hint 一 起 使 用 android:textc olorlink 文 字 链 接 的 颜 色. 设 置 文 字 之 间 间 隔, 默 认 为 1.0f 分 别 设 置 android:texts calex 0.5f/1.0f/1.5f/2.0f 效 果 如 下 : android:texts ize 设 置 文 字 大 小, 推 荐 度 量 单 位 sp, 如 15sp android:texts tyle android:typef ace android:heigh t 设 置 字 形 [bold( 粗 体 ) 0, italic( 斜 体 ) 1, bolditalic( 又 粗 又 斜 ) 2] 可 以 设 置 一 个 或 多 个, 用 隔 开 设 置 文 本 字 体, 必 须 是 以 下 常 量 值 之 一 :normal 0, sans 1, serif 2, monospace( 等 宽 字 体 ) 3] 设 置 文 本 区 域 的 高 度, 支 持 度 量 单 位 :px( 像 素 )/dp/sp/in/mm( 毫 米 ) android:maxhe ight 设 置 文 本 区 域 的 最 大 高 度 android:minhe ight android:width 设 置 文 本 区 域 的 最 小 高 度 设 置 文 本 区 域 的 宽 度, 支 持 度 量 单 位 :px( 像 素 )/dp/sp/in/mm( 毫 米 ), 与 layout_width 的 区 别 看 这 里 android:maxwi dth 设 置 文 本 区 域 的 最 大 宽 度 android:minwi dth 设 置 文 本 区 域 的 最 小 宽 度 1.3 补 充 说 明

82 1.3.1 以 下 几 个 属 性 以 及 输 入 法 相 关 的 在 这 里 都 没 有 效 果, 在 EditText 将 补 充 说 明 android:numeric/android:digits/android:phonenumber/android:inputmetho d/android:capitalize/android:autotext 1.4 Word 格 式 的 API 文 档 下 载 二 例 子 2.1 跑 马 灯 的 效 果 结 束 鉴 于 至 此 仍 未 有 完 整 的 Android API 中 文 文 档 公 布 出 来, 我 会 一 直 坚 持 翻 译 到 有 其 他 组 织 或 官 方 出 完 整 的 API 中 文 文 档 为 止 在 这 里 感 谢 女 朋 友 的 支 持 和 帮 助, 为 我 提 供 日 中 翻 译 ( 将 Android API 日 文 版 翻 译 成 中 文 ) 和 英 中 翻 译 ; 感 谢 翻 译 工 具 和 搜 索 引 擎 以 及 其 他 提 供 部 分 属 性 翻 译 参 考 的 分 享 者 ; 感 谢 大 家 的 支 持! Android 震 动 示 例 -- 心 跳 效 果 正 在 开 发 第 二 个 游 戏, 计 时 就 要 结 束 的 时 候, 为 了 营 造 紧 张 的 气 氛, 会 利 用 手 机 自 身 的 震 动 模 拟 心 跳 效 果, 其 实 这 个 心 跳 效 果 做 起 来 真 的 非 常 的 简 单 所 以 直 接 上 代 码 了 ( 注 意 模 拟 器 是 模 拟 不 了 震 动 的, 得 真 机 测 试 哦 ): 程 序 效 果 : Java 代 码 1. package com.ray.test; import android.app.activity; 4. import android.os.bundle; 5. import android.os.vibrator; 6. import android.view.motionevent; public class TestViberation extends Activity { 9. Vibrator vibrator; 10. /** Called when the activity is first created. */ 12. public void oncreate(bundle savedinstancestate) {

83 13. super.oncreate(savedinstancestate); 14. setcontentview(r.layout.main); 15. } protected void onstop() { 19. if(null!=vibrator){ 20. vibrator.cancel(); 21. } 22. super.onstop(); 23. } public boolean ontouchevent(motionevent event) { if(event.getaction() == MotionEvent.ACTION_DOWN){ 29. vibrator = (Vibrator) getsystemservice(vibrator_service); 30. long[] pattern = {800, 50, 400, 30}; // OFF/ON/OFF/ON vibrator.vibrate(pattern, 2);//-1 不 重 复, 非 -1 为 从 pattern 的 指 定 下 标 开 始 重 复 32. } 33. return super.ontouchevent(event); 34. } } android animation 动 画 效 果 编 程 基 础 --AnimationAndroid 在 Android 中, 分 别 可 以 在 xml 中 定 义 Animation, 也 可 以 在 程 序 代 码 中 定 义 动 画 类 型 Android 的 animation 由 四 种 类 型 组 成 XML 中 alpha 渐 变 透 明 度 动 画 效 果 scale 渐 变 尺 寸 伸 缩 动 画 效 果 translate 画 面 转 换 位 置 移 动 动 画 效 果 rotate 画 面 转 移 旋 转 动 画 效 果

84 代 码 中 AlphaAnimation 渐 变 透 明 度 动 画 效 果 ScaleAnimation 渐 变 尺 寸 伸 缩 动 画 效 果 TranslateAnimation 画 面 转 换 位 置 移 动 动 画 效 果 RotateAnimation 画 面 转 移 旋 转 动 画 效 果 Android 动 画 模 式 Animation 主 要 有 两 种 动 画 模 式 : 一 种 是 tweened animation( 渐 变 动 画 ) alpha AlphaAnimation scale ScaleAnimation 一 种 是 frame by frame( 画 面 转 换 动 画 ) translate TranslateAnimation rotate RotateAnimation 如 何 在 XML 文 件 中 定 义 动 画 1 打 开 Eclipse, 新 建 Android 工 程 2 在 res 目 录 中 新 建 anim 文 件 夹 3 在 anim 目 录 中 新 建 一 个 myanim.xml( 注 意 文 件 名 小 写 ) 4 加 入 XML 的 动 画 代 码 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android=" <alpha/> <scale/> <translate/> <rotate/> </set> 每 个 元 素 表 示 不 同 的 动 画 效 果 Android 动 画 解 析 --XML

85 <alpha> <?xml version="1.0" encoding="utf-8"?> <set xmlns:android=" > <alpha android:fromalpha="0.1" android:toalpha="1.0" android:duration="3000" /> <!-- 透 明 度 控 制 动 画 效 果 alpha 浮 点 型 值 : fromalpha 属 性 为 动 画 起 始 时 透 明 度 toalpha 属 性 为 动 画 结 束 时 透 明 度 说 明 : 0.0 表 示 完 全 透 明 1.0 表 示 完 全 不 透 明 以 上 值 取 之 间 的 float 数 据 类 型 的 数 字 长 整 型 值 : duration 属 性 为 动 画 持 续 时 间 说 明 : 时 间 以 毫 秒 为 单 位 --> </set> <scale> <?xml version="1.0" encoding="utf-8"?> <set xmlns:android=" <scale android:interpolator= "@android:anim/accelerate_decelerate_interpolator" android:fromxscale="0.0" android:toxscale="1.4" android:fromyscale="0.0" android:toyscale="1.4" android:pivotx="50%" android:pivoty="50%" android:fillafter="false" android:startoffset= 700 android:duration="700" /> </set> <!-- 尺 寸 伸 缩 动 画 效 果 scale

86 属 性 :interpolator 指 定 一 个 动 画 的 插 入 器 在 我 试 验 过 程 中, 使 用 android.res.anim 中 的 资 源 时 候 发 现 有 三 种 动 画 插 入 器 : accelerate_decelerate_interpolator 加 速 - 减 速 动 画 插 入 器 accelerate_interpolator 加 速 - 动 画 插 入 器 decelerate_interpolator 减 速 - 动 画 插 入 器 其 他 的 属 于 特 定 的 动 画 效 果 浮 点 型 值 : fromxscale 属 性 为 动 画 起 始 时 X 坐 标 上 的 伸 缩 尺 寸 toxscale 属 性 为 动 画 结 束 时 X 坐 标 上 的 伸 缩 尺 寸 fromyscale 属 性 为 动 画 起 始 时 Y 坐 标 上 的 伸 缩 尺 寸 toyscale 属 性 为 动 画 结 束 时 Y 坐 标 上 的 伸 缩 尺 寸 startoffset 属 性 为 从 上 次 动 画 停 多 少 时 间 开 始 执 行 下 个 动 画 说 明 : 以 上 四 种 属 性 值 0.0 表 示 收 缩 到 没 有 1.0 表 示 正 常 无 伸 缩 值 小 于 1.0 表 示 收 缩 值 大 于 1.0 表 示 放 大 pivotx pivoty 属 性 为 动 画 相 对 于 物 件 的 X 坐 标 的 开 始 位 置 属 性 为 动 画 相 对 于 物 件 的 Y 坐 标 的 开 始 位 置 说 明 : 以 上 两 个 属 性 值 从 0%-100% 中 取 值 50% 为 物 件 的 X 或 Y 方 向 坐 标 上 的 中 点 位 置 长 整 型 值 : duration 属 性 为 动 画 持 续 时 间 说 明 : 时 间 以 毫 秒 为 单 位 --> 布 尔 型 值 : fillafter 属 性 当 设 置 为 true, 该 动 画 转 化 在 动 画 结 束 后 被 应 用 <translate> <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="

87 <translate android:fromxdelta="30" android:toxdelta="-80" android:fromydelta="30" android:toydelta="300" android:duration="2000" /> <!-- translate 位 置 转 移 动 画 效 果 整 型 值 : fromxdelta 属 性 为 动 画 起 始 时 X 坐 标 上 的 位 置 toxdelta 属 性 为 动 画 结 束 时 X 坐 标 上 的 位 置 fromydelta 属 性 为 动 画 起 始 时 Y 坐 标 上 的 位 置 toydelta 属 性 为 动 画 结 束 时 Y 坐 标 上 的 位 置 注 意 : 没 有 指 定 fromxtype toxtype fromytype toytype 时 候, 默 认 是 以 自 己 为 相 对 参 照 物 长 整 型 值 : duration 属 性 为 动 画 持 续 时 间 说 明 : 时 间 以 毫 秒 为 单 位 --> </set> <rotate> <?xml version="1.0" encoding="utf-8"?> <set xmlns:android=" <rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromdegrees="0" android:todegrees="+350" android:pivotx="50%" android:pivoty="50%" android:duration="3000" /> <!-- rotate 旋 转 动 画 效 果 属 性 :interpolator 指 定 一 个 动 画 的 插 入 器 在 我 试 验 过 程 中, 使 用 android.res.anim 中 的 资 源 时 候 发 现 有 三 种 动 画 插 入 器 : accelerate_decelerate_interpolator 加 速 - 减 速 动 画 插 入 器 accelerate_interpolator 加 速 - 动 画 插 入 器 decelerate_interpolator 减 速 - 动 画 插 入 器 其 他 的 属 于 特 定 的 动 画 效 果

88 浮 点 数 型 值 : fromdegrees 属 性 为 动 画 起 始 时 物 件 的 角 度 todegrees 属 性 为 动 画 结 束 时 物 件 旋 转 的 角 度 可 以 大 于 360 度 说 明 : 当 角 度 为 负 数 表 示 逆 时 针 旋 转 当 角 度 为 正 数 表 示 顺 时 针 旋 转 ( 负 数 from to 正 数 : 顺 时 针 旋 转 ) ( 负 数 from to 负 数 : 逆 时 针 旋 转 ) ( 正 数 from to 正 数 : 顺 时 针 旋 转 ) ( 正 数 from to 负 数 : 逆 时 针 旋 转 ) pivotx pivoty 属 性 为 动 画 相 对 于 物 件 的 X 坐 标 的 开 始 位 置 属 性 为 动 画 相 对 于 物 件 的 Y 坐 标 的 开 始 位 置 说 明 : 以 上 两 个 属 性 值 从 0%-100% 中 取 值 50% 为 物 件 的 X 或 Y 方 向 坐 标 上 的 中 点 位 置 长 整 型 值 : duration 属 性 为 动 画 持 续 时 间 说 明 : 时 间 以 毫 秒 为 单 位 --> </set> 在 编 码 中 如 何 使 用 如 何 使 用 XML 中 的 动 画 效 果 在 代 码 中 使 用 这 个 方 法 得 到 Animation 实 例 public static Animation loadanimation (Context context, int id) // 第 一 个 参 数 Context 为 程 序 的 上 下 文 // 第 二 个 参 数 id 为 动 画 XML 文 件 的 引 用 // 例 子 : myanimation= AnimationUtils.loadAnimation(this,R.anim.my_action); // 使 用 AnimationUtils 类 的 静 态 方 法 loadanimation() 来 加 载 XML 中 的 动 画 XML 文 件 如 何 在 Java 代 码 中 定 义 动 画 // 在 代 码 中 定 义 动 画 实 例 对 象 private Animation myanimation_alpha; private Animation myanimation_scale; private Animation myanimation_translate;

89 private Animation myanimation_rotate; // 根 据 各 自 的 构 造 方 法 来 初 始 化 一 个 实 例 对 象 myanimation_alpha=new AlphaAnimation(0.1f, 1.0f); myanimation_scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); myanimation_translate=new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f); myanimation_rotate=new RotateAnimation(0.0f, f, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f); Android 动 画 解 析 AlphaAnimation 1 AlphaAnimation 类 对 象 定 义 private AlphaAnimation myanimation_alpha; 2 AlphaAnimation 类 对 象 构 造 AlphaAnimation(float fromalpha, float toalpha) // 第 一 个 参 数 fromalpha 为 动 画 开 始 时 候 透 明 度 // 第 二 个 参 数 toalpha 为 动 画 结 束 时 候 透 明 度 myanimation_alpha=new AlphaAnimation(0.1f, 1.0f); // 说 明 : // 0.0 表 示 完 全 透 明 // 1.0 表 示 完 全 不 透 明 3 设 置 动 画 持 续 时 间 myanimation_alpha.setduration(5000); // 设 置 时 间 持 续 时 间 为 5000 毫 秒 ScaleAnimation 1ScaleAnimation 类 对 象 定 义 private AlphaAnimation myanimation_scale; 2 ScaleAnimation 类 对 象 构 造 ScaleAnimation(float fromx, float tox, float fromy, float toy, int pivotxtype, float pivotxvalue, int pivotytype, float pivotyvalue) // 第 一 个 参 数 fromx 为 动 画 起 始 时 X 坐 标 上 的 伸 缩 尺 寸 // 第 二 个 参 数 tox 为 动 画 结 束 时 X 坐 标 上 的 伸 缩 尺 寸 // 第 三 个 参 数 fromy 为 动 画 起 始 时 Y 坐 标 上 的 伸 缩 尺 寸 // 第 四 个 参 数 toy 为 动 画 结 束 时 Y 坐 标 上 的 伸 缩 尺 寸

90 /* 说 明 : 以 上 四 种 属 性 值 0.0 表 示 收 缩 到 没 有 1.0 表 示 正 常 无 伸 缩 值 小 于 1.0 表 示 收 缩 值 大 于 1.0 表 示 放 大 */ // 第 五 个 参 数 pivotxtype 为 动 画 在 X 轴 相 对 于 物 件 位 置 类 型 // 第 六 个 参 数 pivotxvalue 为 动 画 相 对 于 物 件 的 X 坐 标 的 开 始 位 置 // 第 七 个 参 数 pivotxtype 为 动 画 在 Y 轴 相 对 于 物 件 位 置 类 型 // 第 八 个 参 数 pivotyvalue 为 动 画 相 对 于 物 件 的 Y 坐 标 的 开 始 位 置 myanimation_scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 3 设 置 动 画 持 续 时 间 myanimation_scale.setduration(700); // 设 置 时 间 持 续 时 间 为 700 毫 秒 TranslateAnimation 1 TranslateAnimation 类 对 象 定 义 private AlphaAnimation myanimation_translate; 2 TranslateAnimation 类 对 象 构 造 TranslateAnimation(float fromxdelta, float toxdelta, float fromydelta, float toydelta) // 第 一 个 参 数 fromxdelta 为 动 画 起 始 时 X 坐 标 上 的 移 动 位 置 // 第 二 个 参 数 toxdelta 为 动 画 结 束 时 X 坐 标 上 的 移 动 位 置 // 第 三 个 参 数 fromydelta 为 动 画 起 始 时 Y 坐 标 上 的 移 动 位 置 // 第 四 个 参 数 toydelta 为 动 画 结 束 时 Y 坐 标 上 的 移 动 位 置 3 设 置 动 画 持 续 时 间 myanimation_translate.setduration(2000); // 设 置 时 间 持 续 时 间 为 2000 毫 秒 RotateAnimation 1 RotateAnimation 类 对 象 定 义 private AlphaAnimation myanimation_rotate; 2 RotateAnimation 类 对 象 构 造 RotateAnimation(float fromdegrees, float todegrees, int pivotxtype, float pivotxvalue, int pivotytype, float pivotyvalue) // 第 一 个 参 数 fromdegrees 为 动 画 起 始 时 的 旋 转 角 度 // 第 二 个 参 数 todegrees 为 动 画 旋 转 到 的 角 度 // 第 三 个 参 数 pivotxtype 为 动 画 在 X 轴 相 对 于 物 件 位 置 类 型 // 第 四 个 参 数 pivotxvalue 为 动 画 相 对 于 物 件 的 X 坐 标 的 开 始 位 置 // 第 五 个 参 数 pivotxtype 为 动 画 在 Y 轴 相 对 于 物 件 位 置 类 型 // 第 六 个 参 数 pivotyvalue 为 动 画 相 对 于 物 件 的 Y 坐 标 的 开 始 位 置

91 myanimation_rotate=new RotateAnimation(0.0f, f, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f) 3 设 置 动 画 持 续 时 间 myanimation_rotate.setduration(3000); // 设 置 时 间 持 续 时 间 为 3000 毫 秒 下 面 的 小 例 子 是 利 用 RotateAnimation 简 单 展 示 一 下 两 种 方 法 的 用 法, 对 于 其 他 动 画, 如 ScaleAnimation,AlphaAnimation, 原 理 是 一 样 的 方 法 一 : 在 xml 中 定 义 动 画 : Xml 代 码 1. <?xml version="1.0" encoding="utf-8"?> 2. <set xmlns:android=" <rotate 5. android:interpolator="@android:anim/accelerate_decelerate_interpolator" 6. android:fromdegrees="0" 7. android:todegrees="+360" 8. android:duration="3000" /> <!-- rotate 旋 转 动 画 效 果 11. 属 性 :interpolator 指 定 一 个 动 画 的 插 入 器, 用 来 控 制 动 画 的 速 度 变 化 12. fromdegrees 属 性 为 动 画 起 始 时 物 件 的 角 度 13. todegrees 属 性 为 动 画 结 束 时 物 件 旋 转 的 角 度, 正 代 表 顺 时 针 14. duration 属 性 为 动 画 持 续 时 间, 以 毫 秒 为 单 位 > 16. lt;/set> 使 用 动 画 的 Java 代 码, 程 序 的 效 果 是 点 击 按 钮,TextView 旋 转 一 周 : Java 代 码 1. package com.ray.animation; import android.app.activity; 4. import android.os.bundle; 5. import android.view.view; 6. import android.view.view.onclicklistener; 7. import android.view.animation.animation; 8. import android.view.animation.animationutils; 9. import android.widget.button;

92 10. import android.widget.textview; public class TestAnimation extends Activity implements OnClickListener{ 13. public void oncreate(bundle savedinstancestate) { 14. super.oncreate(savedinstancestate); 15. setcontentview(r.layout.main); 16. Button btn = (Button)findViewById(R.id.Button01); 17. btn.setonclicklistener(this); 18. } public void onclick(view v) { 22. Animation anim = AnimationUtils.loadAnimation(this, R.anim.my_rotate_action); 23. findviewbyid(r.id.textview01).startanimation(anim); 24. } 25. } 方 法 二 : 直 接 在 代 码 中 定 义 动 画 ( 效 果 跟 方 法 一 类 似 ): Java 代 码 1. package com.ray.animation; import android.app.activity; 4. import android.os.bundle; 5. import android.view.view; 6. import android.view.view.onclicklistener; 7. import android.view.animation.acceleratedecelerateinterpolator; 8. import android.view.animation.animation; 9. import android.view.animation.rotateanimation; 10. import android.widget.button; public class TestAnimation extends Activity implements OnClickListener{ public void oncreate(bundle savedinstancestate) { 15. super.oncreate(savedinstancestate); 16. setcontentview(r.layout.main); 17. Button btn = (Button)findViewById(R.id.Button); 18. btn.setonclicklistener(this); 19. } public void onclick(view v) { 22. Animation anim = null; 23. anim = new RotateAnimation(0.0f,+360.0f);

93 24. anim.setinterpolator(new AccelerateDecelerateInterpolator()); 25. anim.setduration(3000); 26. findviewbyid(r.id.textview01).startanimation(anim); 27. } 28. } 29. 一 Android 中 的 通 知 30. 一 般 手 机 上 边 都 有 一 个 状 态 条, 显 示 电 池 电 量 信 号 强 度 未 接 来 电 短 信... Android 的 屏 幕 上 方 也 具 有 状 态 条 这 里 所 说 的 通 知, 就 是 在 这 个 状 态 条 上 显 示 通 知 发 送 通 知 的 步 骤 如 下 : 33. 1). 获 取 通 知 管 理 器 34. NotificationManager mnotificationmanager = (NotificationManager) getsystemservice(context.notification_service); 35. 2). 新 建 一 个 通 知, 指 定 其 图 标 和 标 题 36. int icon = android.r.drawable.stat_notify_chat; 37. long when = System.currentTimeMillis(); 38. // 第 一 个 参 数 为 图 标, 第 二 个 参 数 为 标 题, 第 三 个 为 通 知 时 间 39. Notification notification = new Notification(icon, null, when);

94 40. Intent openintent = new Intent(this, OtherActivity.class); 41. // 当 点 击 消 息 时 就 会 向 系 统 发 送 openintent 意 图 42. PendingIntent contentintent = PendingIntent.getActivity(this, 0, openintent, 0); 43. notification.setlatesteventinfo(this, 标 题, 内 容 ", contentintent); 44. mnotificationmanager.notify(0, notification); 45. Android 中 的 样 式 和 主 题 46. android 中 的 样 式 和 CSS 样 式 作 用 相 似, 都 是 用 于 为 界 面 元 素 定 义 显 示 风 格, 它 是 一 个 包 含 一 个 戒 者 多 个 view 控 件 属 性 的 集 合 如 : 需 要 定 义 字 体 的 颜 色 和 大 小 ). 在 values 目 录 下 添 加 styles.xml: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="changcheng"> <item name="android:textsize">18px</item> <item name="android:textcolor">#0000cc</item> </style> </resources> 49.

95 50. 2). 在 layout 文 件 中 可 以 通 过 style 戒 theme 属 性 设 置 样 式 戒 主 题 三 使 用 HTML 做 为 UI 51. 使 用 LayoutUI 比 较 麻 烦, 丌 能 让 美 工 参 不 进 来, 这 样 就 为 开 发 人 员 带 来 了 麻 烦 但 我 们 可 以 通 过 HTML+JS 来 进 行 UI 的 设 计 不 操 作 ). 在 assets 添 加 Html 页 面 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title> 联 系 人 列 表 </title> <script type="text/javascript"> function show(jsondata){ var jsonobjs = eval(jsondata); var table = document.getelementbyid("persontable"); for(var y=0; y<jsonobjs.length; y++){ var tr = table.insertrow(table.rows.length); // 添 加 一 行 // 添 加 三 列 var td1 = tr.insertcell(0); var td2 = tr.insertcell(1); td2.align = "center"; var td3 = tr.insertcell(2); // 设 置 列 内 容 和 属 性 td1.innerhtml = jsonobjs[y].id; td2.innerhtml = jsonobjs[y].name; td3.innerhtml = "<a href='javascript:itcast.call(\""+ jsonobjs[y].phone +"\")'>"+ jsonobjs[y].phone+ "</a>"; } } </script> </head> <body>

96 <body bgcolor="#000000" text="#ffffff" style="margin: " onload="javascript:itcast.getcontacts()"> <table border="0" width="100%" id="persontable" cellspacing="0"> <tr> <td width="15%"> 编 号 </td><td align="center"> 姓 名 </td><td width="15%"> 电 话 </td> </tr> </table> </body> </html> ). 在 main.xlm 中 添 加 一 个 WebView 控 件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <WebView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/webview" /> </LinearLayout> ).Activity 类 package cn.itcast.html; import java.util.arraylist; import java.util.list; import org.json.jsonarray; import org.json.jsonobject; import cn.itcast.domain.contact; import android.app.activity; import android.content.intent;

97 import android.net.uri; import android.os.bundle; import android.os.handler; import android.util.log; import android.webkit.webview; public class ContactActivity extends Activity { private static final String TAG = "ContactActivity"; private WebView webview; private Handler handler = new public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); webview = (WebView)this.findViewById(R.id.webView); webview.getsettings().setjavascriptenabled(true);// 设 置 支 持 javascript webview.getsettings().setsaveformdata(false);// 丌 保 存 表 单 数 据 webview.getsettings().setsavepassword(false);// 丌 保 存 密 码 webview.getsettings().setsupportzoom(false);// 丌 支 持 页 面 放 大 功 能 //addjavascriptinterface 方 法 中 要 绑 定 的 Java 对 象 及 方 法 要 运 行 在 另 外 的 线 程 中, 丌 能 运 行 在 构 造 他 的 线 程 中 webview.addjavascriptinterface(new MyJavaScript(), "itcast"); webview.loadurl("file:///android_asset/index.html"); } private final class MyJavaScript{ public void call(final String phone){ handler.post(new Runnable() public void run() { Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ phone)); startactivity(intent); } }); } /** * 获 取 所 有 联 系 人 */ public void getcontacts(){ handler.post(new Runnable() public void run() { // 可 以 通 过 访 问 SQLLite 数 据 库 得 到 联 系 人 List<Contact> contacts = new ArrayList<Contact>(); contacts.add(new Contact(27, " 路 飞 ", "12345"));

98 contacts.add(new Contact(28, " 索 隆 ", "67890")); String json = buildjson(contacts); webview.loadurl("javascript:show('"+ json +"')"); } }); } // 生 成 Json 格 式 的 数 据 private String buildjson(list<contact> contacts){ try { JSONArray array = new JSONArray(); for(contact contact : contacts){ JSONObject item = new JSONObject(); item.put("id", contact.getid()); item.put("name", contact.getname()); item.put("phone", contact.getphone()); array.put(item); } return array.tostring(); } catch (Exception e) { Log.e(TAG, e.tostring()); } return ""; } } } MyJavaScript 接 口 实 现 的 方 法 正 是 提 供 给 页 面 中 的 JS 代 码 调 用 的! 将 APK 包 放 入 到 SDCard 目 录 中 61. 在 FileExplorer 面 板 的 右 上 角 有 一 个 导 入 手 机 图 标, 将 上 面 生 成 的 APK 包 导 入 到 SDCard 目 录 中

99 Android 选 项 卡 效 果 首 先 创 建 Android 工 程 命 名 自 己 的 Activity 为 HelloTabWidget 在 main.xml 或 者 自 己 定 义 的 *.xml 文 件 中 创 建 一 个 TabHost, 需 要 两 个 元 素 TabWidget 和 FrameLayout 通 常 会 把 这 两 个 元 素 放 到 LinearLayout 中 FrameLayout 作 为 改 变 内 容 content 用 的 注 意 :TabWidget 和 FrameLayout 有 不 同 的 ID 命 名 空 间 这 个 是 必 须 的 因 此 TabHost 才 能 自 动 找 到 它,Activity 需 要 继 承 TabActivity Xml 代 码 1. <?xml version="1.0" encoding="utf-8"?> 2. <TabHost xmlns:android=" android:layout_width="fill_parent" 5. android:layout_height="fill_parent"> 6. <LinearLayout 7. android:orientation="vertical" 8. android:layout_width="fill_parent" 9. android:layout_height="fill_parent"> 10. <TabWidget android:layout_width="fill_parent" 13. android:layout_height="wrap_content" /> 14. <FrameLayout android:layout_width="fill_parent" 17. android:layout_height="fill_parent"> 18. <TextView android:layout_width="fill_parent" 21. android:layout_height="fill_parent" 22. android:text="this is a tab" /> 23. <TextView 24. android:id="@+id/textview2" 25. android:layout_width="fill_parent" 26. android:layout_height="fill_parent" 27. android:text="this is another tab" /> 28. <TextView 29. android:id="@+id/textview3"

100 30. android:layout_width="fill_parent" 31. android:layout_height="fill_parent" 32. android:text="this is a third tab" /> 33. </FrameLayout> 34. </LinearLayout> 35. </TabHost> Activity 需 要 继 承 TabActivity Java 代 码 1. public class HelloTabWidget extends TabActivity Java 代 码 1. public void oncreate(bundle savedinstancestate) { 2. super.oncreate(savedinstancestate); 3. setcontentview(r.layout.main); 4. mtabhost = gettabhost(); 5. mtabhost.addtab(mtabhost.newtabspec("tab_test1").setindicator("tab 1") 6.. setcontent(r.id.textview1)); 7. mtabhost.addtab(mtabhost.newtabspec("tab_test2").setindicator("tab 2").setConte nt(r.id.textview2)); 8. mtabhost.addtab(mtabhost.newtabspec("tab_test3").setindicator("tab 3").setConte nt(r.id.textview3)); mtabhost.setcurrenttab(0); 11. } Android BaseExpandableListAdapter 教 程 文 章 分 类 : 移 动 开 发 先 上 图 再 说, 实 现 效 果 如 下 图, 选 项 可 多 少 可 变 化

101 BaseExpandableListAdapter 实 现 Java 代 码 1. import java.util.list; import android.content.context; 4. import android.graphics.drawable.drawable; 5. import android.view.layoutinflater; 6. import android.view.view; 7. import android.view.viewgroup; 8. import android.widget.baseexpandablelistadapter; 9. import android.widget.checkbox; 10. import android.widget.imageview;

102 11. import android.widget.textview; 12. import com.iwidsets.clear.manager.r; 13. import com.iwidsets.clear.manager.adapter.browserinfo; public class ClearExpandableListAdapter extends BaseExpandableListAdapter { class ExpandableListHolder { 18. ImageView appicon; 19. TextView appinfo; 20. CheckBox appcheckbox; 21. } private Context context; 24. private LayoutInflater mchildinflater; 25. private LayoutInflater mgroupinflater; 26. private List<GroupInfo> group; public ClearExpandableListAdapter(Context c, List<GroupInfo> group) { 29. this.context = c; 30. mchildinflater = (LayoutInflater) context 31..getSystemService(Context.LAYOUT_INFLATER_SERVICE); 32. mgroupinflater = (LayoutInflater) context 33..getSystemService(Context.LAYOUT_INFLATER_SERVICE); 34. this.group = group; 35. } public Object getchild(int childposition, int itemposition) { 38. return group.get(childposition).getchild(itemposition); 39. } public long getchildid(int childposition, int itemposition) { return itemposition; 44. } public int getchildrencount(int index) { 48. return group.get(index).getchildsize(); 49. } public Object getgroup(int index) { 52. return group.get(index); 53. } 54.

103 55. public int getgroupcount() { 56. return group.size(); 57. } public long getgroupid(int index) { 60. return index; 61. } public View getgroupview(int position, boolean flag, View view, 64. ViewGroup parent) { 65. ExpandableListHolder holder = null; 66. if (view == null) { 67. view = mgroupinflater.inflate( 68. R.layout.browser_expandable_list_item, null); 69. holder = new ExpandableListHolder(); 70. holder.appicon = (ImageView) view.findviewbyid(r.id.app_icon); 71. view.settag(holder); 72. holder.appinfo = (TextView) view.findviewbyid(r.id.app_info); 73. holder.appcheckbox = (CheckBox) view 74..findViewById(R.id.app_checkbox); 75. } else { 76. holder = (ExpandableListHolder) view.gettag(); 77. } 78. GroupInfo info = this.group.get(position); 79. if (info!= null) { 80. holder.appinfo.settext(info.getbrowserinfo().getappinfoid()); 81. Drawable draw = this.context.getresources().getdrawable( 82. info.getbrowserinfo().getimageid()); 83. holder.appicon.setimagedrawable(draw); 84. holder.appcheckbox.setchecked(info.getbrowserinfo().ischecked()); 85. } 86. return view; 87. } public boolean hasstableids() { 90. return false; 91. } public boolean ischildselectable(int arg0, int arg1) { 94. return false; 95. } public View getchildview(int groupposition, int childposition,

104 99. boolean islastchild, View convertview, ViewGroup parent) { 100. ExpandableListHolder holder = null; 101. if (convertview == null) { 102. convertview = mchildinflater.inflate( 103. R.layout.browser_expandable_list_item, null); 104. holder = new ExpandableListHolder(); 105. holder.appicon = (ImageView) convertview 106..findViewById(R.id.app_icon); 107. convertview.settag(holder); 108. holder.appinfo = (TextView) convertview.findviewbyid(r.id.app_info); 109. holder.appcheckbox = (CheckBox) convertview 110..findViewById(R.id.app_checkbox); 111. } else { 112. holder = (ExpandableListHolder) convertview.gettag(); 113. } 114. BrowserInfo info = this.group.get(groupposition) 115..getChild(childPosition); 116. if (info!= null) { 117. holder.appinfo.settext(info.getappinfoid()); 118. Drawable draw = this.context.getresources().getdrawable( 119. info.getimageid()); 120. holder.appicon.setimagedrawable(draw); 121. holder.appcheckbox.setchecked(info.ischecked()); 122. } 123. return convertview; 124. } } 要 想 让 child 获 得 焦 点, 只 在 改 Java 代 码 1. public boolean ischildselectable(int arg0, int arg1) { 2. return true; 3. }

105 browser_expandable_list_item.xml 用 于 显 示 每 一 个 ITEM 的 XML Xml 代 码 1. <?xml version="1.0" encoding="utf-8"?> 2. <LinearLayout xmlns:android=" 3. android:layout_width="fill_parent" android:layout_height="wrap_content" 4. android:orientation="horizontal" android:minheight="40px" 5. android:layout_gravity="center_vertical"> 6. <CheckBox android:focusable="false" 7. android:layout_width="wrap_content" android:layout_height="wrap_content" 8. android:layout_marginleft="35px" android:checked="true"/> 9. <ImageView android:layout_width="wrap_content" 10. android:layout_height="wrap_content" android:layout_gravity="center_vertical" /> <TextView android:layout_width="wrap_content" 13. android:layout_height="wrap_content" android:textcolor="?android:attr/textcolorprim ary" 14. android:paddingleft="3px" android:layout_gravity="center_vertical" /> 15. </LinearLayout> browserlayout.xml 用 于 显 示 整 个 界 面 Xml 代 码 1. <?xml version="1.0" encoding="utf-8"?> 2. <LinearLayout xmlns:android=" 3. android:layout_width="fill_parent" android:layout_height="fill_parent" 4. android:orientation="vertical"> 5. <ExpandableListView 6. android:layout_width="fill_parent" android:layout_height="0dip" 7. android:layout_weight="1" /> 8. <LinearLayout android:layout_height="wrap_content" 9. android:layout_width="fill_parent" android:paddingleft="4dip" 10. android:paddingright="4dip" android:paddingbottom="1dip"

106 11. android:paddingtop="5dip" <Button android:layout_weight="1" 14. android:layout_width="0dip" android:layout_height="fill_parent" <Button android:layout_weight="1" 17. android:layout_width="0dip" android:layout_height="fill_parent" 18. android:text="select_all"></button> 19. <Button android:layout_weight="1" 20. android:layout_width="0dip" android:layout_height="fill_parent" 21. android:text="deselect_all"></button> 22. </LinearLayout> </LinearLayout> BrowserInfo 用 于 提 供 一 个 项 的 信 息 Java 代 码 1. public class BrowserInfo { private int appinfoid; 4. private int imageid; 5. private boolean checked; public BrowserInfo(int appinfoid, int imageid, boolean checked) { 8. this.appinfoid = appinfoid; 9. this.imageid = imageid; 10. this.checked = checked; 11. } public boolean ischecked() { 14. return checked; 15. } public void setchecked(boolean checked) { 18. this.checked = checked; 19. } public int getappinfoid() {

107 22. return appinfoid; 23. } public void setappinfoid(int appinfoid) { 26. this.appinfoid = appinfoid; 27. } public int getimageid() { 30. return imageid; 31. } public void setimageid(int imageid) { 34. this.imageid = imageid; 35. } } GroupInfo 用 于 显 示 一 个 组 的 信 息 Java 代 码 1. import java.util.list; public class GroupInfo { private BrowserInfo group; 6. private List<BrowserInfo> child; public GroupInfo(BrowserInfo group, List<BrowserInfo> child) { this.group = group; 11. this.child = child; 12. } public void add(browserinfo info){ 15. child.add(info); 16. } public void remove(browserinfo info){ 19. child.remove(info); 20. }

108 public void remove(int index){ 23. child.remove(index); 24. } public int getchildsize(){ 27. return child.size(); 28. } public BrowserInfo getchild(int index){ 31. return child.get(index); 32. } public BrowserInfo getbrowserinfo() { 35. return group; 36. } public void setbrowserinfo(browserinfo group) { 39. this.group = group; 40. } public List<BrowserInfo> getchild() { 43. return child; 44. } public void setchild(list<browserinfo> child) { 47. this.child = child; 48. } } ClearBrowserActivity 最 后 就 是 把 要 显 示 的 内 容 显 示 出 来 的 Java 代 码 1. public class ClearBrowserActivity extends Activity implements ExpandableListView.OnGr oupclicklistener,expandablelistview.onchildclicklistener{

109 2. 3. private List<GroupInfo> group; private ClearExpandableListAdapter listadapter = null; 6. private ExpandableListView applist; public void oncreate(bundle savedinstancestate) { 9. super.oncreate(savedinstancestate); 10. setcontentview(r.layout.browserlayout); 11. applist = (ExpandableListView) findviewbyid(r.id.applist); 12. init(); 13. BrowserInfo browsinghistoryparents = newbrowserinfo( 14. R.string.browsinghistory, R.drawable.browser_image,true); 15. List<BrowserInfo> browsinghistorychild = new ArrayList<BrowserInfo>(); 16. BrowserInfo browser = newbrowserinfo(r.string.browser, 17. R.drawable.browser_image, true); 18. browsinghistorychild.add(browser); BrowserInfo operaclear = newbrowserinfo(r.string.opera_clear, 21. R.drawable.browser_image,true); 22. browsinghistorychild.add(operaclear); BrowserInfo firefoxclear = newbrowserinfo(r.string.firefox_clear, 25. R.drawable.browser_image,true); 26. browsinghistorychild.add(firefoxclear); BrowserInfo ucwebclear = newbrowserinfo(r.string.ucweb_clear, 29. R.drawable.browser_image,false); 30. browsinghistorychild.add(ucwebclear); GroupInfo browsergroup = new GroupInfo(browsingHistoryParents, 33. browsinghistorychild); 34. addgroup(browsergroup); listadapter = new ClearExpandableListAdapter(this, group); 37. applist.setonchildclicklistener(this); 38. applist.setongroupclicklistener(this); 39. applist.setadapter(listadapter); 40. } private void init() { 43. group = new ArrayList<GroupInfo>(); 44. } 45.

110 46. private void addgroup(groupinfo info) { 47. group.add(info); 48. } private static BrowserInfo newbrowserinfo(int infoid, int imageid,boolean checked) { 51. return new BrowserInfo(infoId, imageid,checked); 52. } public boolean ongroupclick(expandablelistview parent, View v, 56. int groupposition, long id) { 57. return false; 58. } public boolean onchildclick(expandablelistview parent, View v, 62. int groupposition, int childposition, long id) { 63. return false; 64. } 65. } android 3d 旋 转 文 章 分 类 :Java 编 程 在 javaeye 里 看 到 了 关 于 3d 旋 转 的 文 章, 可 是 博 主 没 有 透 入 什 么 技 术 细 节 由 于 一 直 想 做 出 那 种 旋 转 效 果, 所 以 就 想 啊 想, 终 于 想 出 来 了 ( 我 是 个 小 菜 鸟 ) 呵 呵, 不 管 怎 样, 希 望 对 想 做 还 没 做 出 来 的 朋 友 一 些 帮 助 先 上 一 个 效 果 图 :

111 这 是 你 想 要 的 吗? 如 果 是 就 继 续 往 下 看 吧 其 实, 这 个 效 果 是 用 animation 配 合 camera 做 出 来 的, 相 信 大 家 在 apidemo 里 面 看 过 类 似 的 那 么 先 写 一 个 继 承 animation 的 类 :Rotate3d Rotate3d 代 码 1. public class Rotate3d extends Animation { 2. private float mfromdegree; 3. private float mtodegree; 4. private float mcenterx; 5. private float mcentery; 6. private float mleft; 7. private float mtop; 8. private Camera mcamera; 9. private static final String TAG = "Rotate3d"; public Rotate3d(float fromdegree, float todegree, float left, float top, 12. float centerx, float centery) { 13. this.mfromdegree = fromdegree;

112 14. this.mtodegree = todegree; 15. this.mleft = left; 16. this.mtop = top; 17. this.mcenterx = centerx; 18. this.mcentery = centery; } public void initialize(int width, int height, int parentwidth, 24. int parentheight) { 25. super.initialize(width, height, parentwidth, parentheight); 26. mcamera = new Camera(); 27. } protected void applytransformation(float interpolatedtime, Transformation t) { 31. final float FromDegree = mfromdegree; 32. float degrees = FromDegree + (mtodegree - mfromdegree) 33. * interpolatedtime; 34. final float centerx = mcenterx; 35. final float centery = mcentery; 36. final Matrix matrix = t.getmatrix(); if (degrees <= -76.0f) { 39. degrees = -90.0f; 40. mcamera.save(); 41. mcamera.rotatey(degrees); 42. mcamera.getmatrix(matrix); 43. mcamera.restore(); 44. } else if(degrees >=76.0f){ 45. degrees = 90.0f; 46. mcamera.save(); 47. mcamera.rotatey(degrees); 48. mcamera.getmatrix(matrix); 49. mcamera.restore(); 50. }else{ 51. mcamera.save(); 52. // 这 里 很 重 要 哦 53. mcamera.translate(0, 0, centerx); 54. mcamera.rotatey(degrees); 55. mcamera.translate(0, 0, -centerx); 56. mcamera.getmatrix(matrix); 57. mcamera.restore();

113 58. } matrix.pretranslate(-centerx, -centery); 61. matrix.posttranslate(centerx, centery); 62. } 63. } 有 了 这 个 类 一 切 都 会 变 得 简 单 的, 接 着 只 要 在 activity 中 写 两 个 Rotate3d 的 对 象, 让 两 个 view, 分 别 做 这 两 个 对 象 的 animation 就 好 了 ( 原 来 就 这 么 简 单 啊! 无 语 ) Activity 代 码 1. // 下 面 两 句 很 关 键 哦, 呵 呵, 心 照 不 宣 2. Rotate3d leftanimation = new Rotate3d(-0, -90, 0, 0, mcenterx, mcentery); 3. Rotate3d rightanimation = new Rotate3d(-0+90, , 0.0f, 0.0f, mcenterx, mcent 4. ery); 5. leftanimation.setfillafter(true); 6. leftanimation.setduration(1000); 7. rightanimation.setfillafter(true); 8. rightanimation.setduration(1000); mimageview1.startanimation(leftanimation); 11. mimageview2.startanimation(rightanimation); 还 要 写 一 下 mimageview1,mimageview2 的 xml, Xml 代 码 1. <?xml version="1.0" encoding="utf-8"?>

114 2. <LinearLayout xmlns:android=" 3. android:orientation="vertical" 4. android:layout_width="fill_parent" 5. android:layout_height="wrap_content" 6. > <FrameLayout 9. android:layout_width="fill_parent" 10. android:layout_height="fill_parent"> <ImageView android:layout_gravity="center_horizontal" 15. android:layout_width="fill_parent" 16. android:layout_height="wrap_content" /> 19. <ImageView android:background="#ffff0000" 22. android:layout_gravity="center_horizontal" 23. android:layout_width="fill_parent" 24. android:layout_height="wrap_content" /> </FrameLayout> 29. </LinearLayout> 写 完 收 工 如 果 有 不 足 之 处, 还 请 朋 友 们 不 吝 指 教 Android File Explorer 展 示 图 片 文 章 分 类 : 移 动 开 发

115 res/layout/row.xml <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android=" android:layout_width="fill_parent" android:layout_height="25px" android:textsize="23sp" /> /res/layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <ListView

116 android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="no Data" /> </LinearLayout> /res/layout/jpgdialog.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingleft="10dip" android:paddingright="10dip" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textsize="11sp" /> /> <ImageView android:layout_width="150px" android:layout_height="150px" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="ok" /> </LinearLayout> import java.io.file; import java.io.ioexception; import java.util.arraylist;

117 import java.util.list; import android.app.alertdialog; import android.app.dialog; import android.app.listactivity; import android.content.context; import android.content.dialoginterface; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.media.exifinterface; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.button; import android.widget.imageview; import android.widget.listview; import android.widget.textview; public class AndroidExplorer extends ListActivity { static final int ID_JPGDIALOG = 0; String filename; String exifattribute; TextView exiftext; ImageView bmimage; BitmapFactory.Options bmoptions; File jpgfile; Dialog jpgdialog; private List<String> item = null; private List<String> path = null; private String root="/"; private TextView mypath; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); mypath = (TextView)findViewById(R.id.path); getdir(root); } private void getdir(string dirpath)

118 { mypath.settext("location: " + dirpath); item = new ArrayList<String>(); path = new ArrayList<String>(); File f = new File(dirPath); File[] files = f.listfiles(); if(!dirpath.equals(root)) { } item.add(root); path.add(root); item.add("../"); path.add(f.getparent()); for(int i=0; i < files.length; i++) { File file = files[i]; path.add(file.getpath()); if(file.isdirectory()) item.add(file.getname() + "/"); else item.add(file.getname()); } } ArrayAdapter<String> filelist = new ArrayAdapter<String>(this, R.layout.row, item); protected void onlistitemclick(listview l, View v, int position, long id) { File file = new File(path.get(position)); if (file.isdirectory()) { if(file.canread())

119 getdir(path.get(position)); else { new AlertDialog.Builder(this).setIcon(R.drawable.icon).setTitle("[" + file.getname() + "] folder can't be read!").setpositivebutton("ok", new DialogInterface.OnClickListener() public void onclick(dialoginterface dialog, int which) { // TODO Auto-generated method stub } }).show(); } } else { exifattribute = null; filename = file.getname(); String ext = filename.substring(filename.lastindexof('.')+1, filename.length()); if(ext.equals("jpg") ext.equals("jpg")) { try { ExifInterface exif = new ExifInterface(file.toString()); exifattribute = getexif(exif); } catch (IOException e) { // TODO Auto-generated catch block ; } jpgfile = file; showdialog(id_jpgdialog); } else{ new AlertDialog.Builder(this).setIcon(R.drawable.icon).setTitle("[" + filename + "]").setmessage(exifattribute).setpositivebutton("ok", new DialogInterface.OnClickListener()

120 which) { } } } public void onclick(dialoginterface dialog, int // TODO Auto-generated method stub } }).show(); private String getexif(exifinterface exif) { String myattribute=null; myattribute += gettagstring(exifinterface.tag_datetime, exif); myattribute += gettagstring(exifinterface.tag_flash, exif); myattribute += gettagstring(exifinterface.tag_gps_latitude, exif); myattribute += gettagstring(exifinterface.tag_gps_latitude_ref, exif); myattribute += gettagstring(exifinterface.tag_gps_longitude, exif); myattribute += gettagstring(exifinterface.tag_gps_longitude_ref, exif); myattribute += gettagstring(exifinterface.tag_image_length, exif); myattribute += gettagstring(exifinterface.tag_image_width, exif); myattribute += gettagstring(exifinterface.tag_make, exif); myattribute += gettagstring(exifinterface.tag_model, exif); myattribute += gettagstring(exifinterface.tag_orientation, exif); myattribute += gettagstring(exifinterface.tag_white_balance, exif); return myattribute; } private String gettagstring(string tag, ExifInterface exif) { return(tag + " : " + exif.getattribute(tag) + "\n"); protected Dialog oncreatedialog(int id) { jpgdialog = null;; switch(id){

121 case ID_JPGDIALOG: Context mcontext = this; jpgdialog = new Dialog(mContext); jpgdialog.setcontentview(r.layout.jpgdialog); exiftext = (TextView) jpgdialog.findviewbyid(r.id.text); bmimage = (ImageView)jpgDialog.findViewById(R.id.image); bmoptions = new BitmapFactory.Options(); bmoptions.insamplesize = 2; Button okdialogbutton = (Button)jpgDialog.findViewById(R.id.okdialogbutton); okdialogbutton.setonclicklistener(okdialogbuttononclicklistener); } break; default: break; } return protected void onpreparedialog(int id, Dialog dialog) { // TODO Auto-generated method stub switch(id){ case ID_JPGDIALOG: dialog.settitle("[" + filename + "]"); exiftext.settext(exifattribute); Bitmap bm = BitmapFactory.decodeFile(jpgFile.getPath(), bmoptions); bmimage.setimagebitmap(bm); } break; default: break; } private Button.OnClickListener okdialogbuttononclicklistener = new public void onclick(view v) {

122 }; } } // TODO Auto-generated method stub jpgdialog.dismiss(); android ShapeDrawable 实 例 文 章 分 类 : 移 动 开 发 今 天 看 了 一 下 api 中 的 画 图, 遇 到 了 一 个 新 的 类,Shader 类 介 绍,android 中 提 供 了 Shader 类 专 门 来 渲 染 图 像 已 经 一 些 几 何 图 形,shader 下 面 包 括 几 个 直 接 子 类, 分 别 是 BitmapShaper,ComposeShader, LinerGradient,RadialGradient,SweepGradient.BitmapShader 主 要 用 来 渲 染 图 像,Shader 类 的 使 用, 先 构 造 Shdaer 对 象, 然 后 通 过 Paint 的 setshader 方 法 来 设 置 渲 染 对 象, 然 后 再 绘 制 使 用 这 个 Paint 对 象 既 可 Java 代 码 1. import android.app.activity; 2. import android.content.context; 3. import android.graphics.bitmap; 4. import android.graphics.bitmapshader; 5. import android.graphics.canvas; 6. import android.graphics.composepatheffect; 7. import android.graphics.cornerpatheffect; 8. import android.graphics.discretepatheffect; 9. import android.graphics.lineargradient; 10. import android.graphics.paint; 11. import android.graphics.path; 12. import android.graphics.patheffect; 13. import android.graphics.rectf; 14. import android.graphics.shader; 15. import android.graphics.sweepgradient; 16. import android.graphics.drawable.drawable; 17. import android.graphics.drawable.shapedrawable; 18. import android.graphics.drawable.shapes.arcshape; 19. import android.graphics.drawable.shapes.ovalshape; 20. import android.graphics.drawable.shapes.pathshape; 21. import android.graphics.drawable.shapes.rectshape; 22. import android.graphics.drawable.shapes.roundrectshape; 23. import android.graphics.drawable.shapes.shape; 24. import android.os.bundle; 25. import android.view.view;

123 public class ShapeDrawble1 extends Activity { 28. /** Called when the activity is first created. */ protected void oncreate(bundle savedinstancestate) { 33. super.oncreate(savedinstancestate); 34. setcontentview(new SampleView(this)); 35. } private static class SampleView extends View { 38. private ShapeDrawable[] mdrawables; private static Shader makesweep() { 41. /* SweepGradient 是 继 承 于 Shader 的, 它 是 以 中 心 点 (150,25) 42. * 按 照 下 列 四 种 颜 色 进 行 变 化 的 */ 43. return new SweepGradient(0, 0, 44. new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF, 0xFFFF0000 }, 45. null);// null 表 示 均 衡 变 化 46. } private static Shader makelinear() { 49. // 颜 色 按 照 直 线 线 性 变 化 的 着 色 器 50. return new LinearGradient(100, 100, 0, 0, 51. new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF }, 52. null, Shader.TileMode.MIRROR); 53. } private static Shader maketiling() { 56. int[] pixels = new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF, 0}; 57. Bitmap bm = Bitmap.createBitmap(pixels, 1, 1, 58. Bitmap.Config.ARGB_8888); 59. /** 60. * BitmapShader 是 一 个 位 图 着 色 器, 这 个 着 色 器 是 通 过 61. * 在 x,y 方 向 重 复 位 图 bm 的 像 素 来 着 色 的 62. * 63. */ 64. return new BitmapShader(bm, Shader.TileMode.REPEAT, 65. Shader.TileMode.REPEAT); 66. } 67. /** 68. * ShapeDrawable 是 绘 制 各 种 几 何 体 的 类 它 注 入 想 要 绘 制 的 形 状 shap 69. * 类, 就 可 以 绘 制 出 我 们 想 要 的 集 合 体, 这 个 类 最 寒 心 的 就 是 draw(canvas)

124 70. * 和 ondraw(shape,canvas,paint) 这 个 方 法 调 用 71. * 72. */ 73. private static class MyShapeDrawable extends ShapeDrawable { 74. //Paint.ANTI_ALIAS_FLAG 代 表 这 个 画 笔 的 图 形 是 光 滑 的 75. private Paint mstrokepaint = new Paint(Paint.ANTI_ALIAS_FLAG); public MyShapeDrawable(Shape s) { 78. super(s); 79. mstrokepaint.setstyle(paint.style.stroke); 80. } public Paint getstrokepaint() { 83. return mstrokepaint; 84. } 85. protected void ondraw(shape s, Canvas c, Paint p) { 87. // 绘 制 填 充 效 果 的 图 形 88. s.draw(c, p); 89. // 绘 制 黑 边 90. s.draw(c, mstrokepaint); 91. } 92. } public SampleView(Context context) { 95. super(context); 96. setfocusable(true); 97. // 外 部 圆 角 矩 形 的 圆 角 圆 半 径, 上 面 俩 个 角 是 圆 98. float[] outerr = new float[] { 12, 12, 12, 12, 0, 0, 0, 0 }; 99. // 内 部 矩 形 100. RectF inset = new RectF(6, 6, 6, 6); 101. // 内 部 圆 角 矩 形 的 圆 角 是 圆 半 径, 左 上 角 和 右 下 角 是 圆 角 矩 形 102. float[] innerr = new float[] { 12, 12, 0, 0, 12, 12, 0, 0 }; 103. // 绘 制 一 个 顶 点 为 下 列 四 个 点 的 棱 形 104. Path path = new Path(); 105. path.moveto(50, 0); 106. path.lineto(0, 50); 107. path.lineto(50, 100); 108. path.lineto(100, 50); 109. // 封 闭 前 面 点 所 绘 制 的 路 径 110. path.close(); mdrawables = new ShapeDrawable[7]; 113. // 绘 制 矩 形

125 114. mdrawables[0] = new ShapeDrawable(new RectShape()); 115. // 绘 制 椭 圆 116. mdrawables[1] = new ShapeDrawable(new OvalShape()); 117. // 绘 制 上 面 俩 个 角 是 圆 角 的 矩 形 118. mdrawables[2] = new ShapeDrawable(new RoundRectShape(outerR, null, 119. null)); 120. // 绘 制 上 面 俩 角 是 圆 角, 并 且 有 一 个 内 嵌 的 矩 形 121. mdrawables[3] = new ShapeDrawable(new RoundRectShape(outerR, inset, 122. null)); 123. //// 绘 制 上 面 俩 角 是 圆 角, 并 且 有 一 个 内 嵌 的 矩 形 且 左 上 角 和 右 下 角 是 圆 形 矩 形 环 124. mdrawables[4] = new ShapeDrawable(new RoundRectShape(outerR, inset, 125. innerr)); 126. // 绘 制 指 定 路 径 的 集 合 体 127. mdrawables[5] = new ShapeDrawable(new PathShape(path, 100, 100)); 128. // 用 自 定 的 ShapDrawble 绘 制 开 始 弧 度 45 扫 过 弧 度 -270 的 椭 圆 129. mdrawables[6] = new MyShapeDrawable(new ArcShape(45, -270)); mdrawables[0].getpaint().setcolor(0xffff0000); 132. mdrawables[1].getpaint().setcolor(0xff00ff00); 133. mdrawables[2].getpaint().setcolor(0xff0000ff); 134. mdrawables[3].getpaint().setshader(makesweep()); 135. mdrawables[4].getpaint().setshader(makelinear()); 136. mdrawables[5].getpaint().setshader(maketiling()); 137. mdrawables[6].getpaint().setcolor(0x88ff8844); 138. //DiscretePathEffect 是 一 个 折 线 路 径 效 果, 分 割 长 度 是 10, 偏 差 时 PathEffect pe = new DiscretePathEffect(10, 4); 140. //CornerPathEffect 是 将 2 个 路 径 效 果 合 并 后 的 路 径 效 果 141. PathEffect pe2 = new CornerPathEffect(4); 142. mdrawables[3].getpaint().setpatheffect( 143. new ComposePathEffect(pe2, pe)); MyShapeDrawable msd = (MyShapeDrawable)mDrawables[6]; 146. // 设 置 笔 画 宽 度 等 于 msd.getstrokepaint().setstrokewidth(4); 148. } 149. protected void ondraw(canvas canvas) { int x = 10; 153. int y = 10; 154. int width = 300; 155. int height = 50; 156. // 循 环 绘 制

126 157. for (Drawable dr : mdrawables) { 158. dr.setbounds(x, y, x + width, y + height); 159. dr.draw(canvas); 160. y += height + 5; 161. } 162. } 163. } 164. } Eclipse 开 发 Android, TableLayout( 学 习 4) Hello, TableLayout A TableLayout is a ViewGroup that will lay child View elements into rows and columns. 1. Start a new project/activity called HelloTableLayout. 2. Open the layout file. Make it like so: 3. <?xml version="1.0" encoding="utf-8"?> 4. <TableLayout xmlns:android=" 5. android:layout_width="fill_parent" 6. android:layout_height="fill_parent" 7. android:stretchcolumns="1"> <TableRow> 10. <TextView 11. android:layout_column="1" 12. android:text="open..." 13. android:padding="3dip" /> 14. <TextView 15. android:text="ctrl-o" 16. android:gravity="right" 17. android:padding="3dip" /> 18. </TableRow> <TableRow> 21. <TextView 22. android:layout_column="1"

127 23. android:text="save..." 24. android:padding="3dip" /> 25. <TextView 26. android:text="ctrl-s" 27. android:gravity="right" 28. android:padding="3dip" /> 29. </TableRow> <TableRow> 32. <TextView 33. android:layout_column="1" 34. android:text="save As..." 35. android:padding="3dip" /> 36. <TextView 37. android:text="ctrl-shift-s" 38. android:gravity="right" 39. android:padding="3dip" /> 40. </TableRow> <View 43. android:layout_height="2dip" 44. android:background="#ff909090" /> <TableRow> 47. <TextView 48. android:text="x" 49. android:padding="3dip" /> 50. <TextView 51. android:text="import..." 52. android:padding="3dip" /> 53. </TableRow> <TableRow> 56. <TextView 57. android:text="x" 58. android:padding="3dip" /> 59. <TextView 60. android:text="export..." 61. android:padding="3dip" /> 62. <TextView 63. android:text="ctrl-e" 64. android:gravity="right" 65. android:padding="3dip" /> 66. </TableRow>

128 <View 69. android:layout_height="2dip" 70. android:background="#ff909090" /> <TableRow> 73. <TextView 74. android:layout_column="1" 75. android:text="quit" 76. android:padding="3dip" /> 77. </TableRow> 78.</TableLayout> Notice how this resembles the structure of an HTML table. TableLayout is like the table element; TableRow is like a tr element; but for our cells like the html td element, we can use any kind of View. Here, we use TextView for the cells. 79. Make sure your Activity loads this layout in the oncreate() method: 80.public void oncreate(bundle savedinstancestate) { 81. super.oncreate(savedinstancestate); 82. setcontentview(r.layout.main); 83.} R.layout.main refers to the main.xml layout file. 84. Run it. You should see the following: 备 注 :TableLayout 与 html 中 表 格 类 似 系 出 名 门 Android(8)

129 文 章 分 类 : 移 动 开 发 系 出 名 门 Android(8) - 控 件 (View) 之 TextSwitcher, Gallery, ImageSwitcher, GridView, ListView, ExpandableList 介 绍 在 Android 中 使 用 各 种 控 件 (View) TextSwitcher - 文 字 转 换 器 控 件 ( 改 变 文 字 时 增 加 一 些 动 画 效 果 ) Gallery - 缩 略 图 浏 览 器 控 件 ImageSwitcher - 图 片 转 换 器 控 件 ( 改 变 图 片 时 增 加 一 些 动 画 效 果 ) GridView - 网 格 控 件 ListView - 列 表 控 件 ExpandableList - 支 持 展 开 / 收 缩 功 能 的 列 表 控 件 Java 代 码 1. 1 TextSwitcher 的 Demo 2. textswitcher.xml 代 码 5. <?xml version="1.0" encoding="utf-8"?> 6. <LinearLayout xmlns:android=" 7. android:orientation="vertical" android:layout_width="fill_parent" 8. android:layout_height="fill_parent"> <Button android:id="@+id/btnchange" android:layout_width="wrap_content" 11. android:layout_height="wrap_content" android:text=" 改 变 文 字 " /> <! TextSwitcher - 文 字 转 换 器 控 件 ( 改 变 文 字 时 增 加 一 些 动 画 效 果 ) > 16. <TextSwitcher android:id="@+id/textswitcher" 17. android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> _TextSwitcher.java 代 码 25. package com.webabcd.view; import java.util.random; 28.

130 29. import android.app.activity; 30. import android.os.bundle; 31. import android.view.view; 32. import android.view.animation.animation; 33. import android.view.animation.animationutils; 34. import android.widget.button; 35. import android.widget.textswitcher; 36. import android.widget.textview; 37. import android.widget.viewswitcher; public class _TextSwitcher extends Activity implements ViewSwitcher.ViewFactory { protected void oncreate(bundle savedinstancestate) { 43. // TODO Auto-generated method stub 44. super.oncreate(savedinstancestate); 45. this.setcontentview(r.layout.textswithcer); settitle("textswithcer"); final TextSwitcher switcher = (TextSwitcher) findviewbyid(r.id.textswitcher); 50. // 指 定 转 换 器 的 ViewSwitcher.ViewFactory 51. switcher.setfactory(this); // 设 置 淡 入 和 淡 出 的 动 画 效 果 54. Animation in = AnimationUtils.loadAnimation(this, android.r.anim.fade_in); 55. Animation out = AnimationUtils.loadAnimation(this, android.r.anim.fade_out); 56. switcher.setinanimation(in); 57. switcher.setoutanimation(out); // 单 击 一 次 按 钮 改 变 一 次 文 字 60. Button btnchange = (Button) this.findviewbyid(r.id.btnchange); 61. btnchange.setonclicklistener(new View.OnClickListener() { 63. public void onclick(view v) { 64. switcher.settext(string.valueof(new Random().nextInt())); 65. } 66. }); 67. } // 重 写 ViewSwitcher.ViewFactory 的 makeview(), 返 回 一 个 View 71. public View makeview() { 72. TextView textview = new TextView(this);

131 73. textview.settextsize(36); 74. return textview; 75. } 76. } Gallery 的 Demo 81. gallery.xml 代 码 84. <?xml version="1.0" encoding="utf-8"?> 85. <LinearLayout xmlns:android=" 86. android:orientation="vertical" android:layout_width="fill_parent" 87. android:layout_height="fill_parent"> <! Gallery - 缩 略 图 浏 览 器 控 件 91. spacing - 缩 略 图 列 表 中 各 个 缩 略 图 之 间 的 间 距 > 93. <Gallery android:id="@+id/gallery" android:layout_width="fill_parent" 94. android:layout_height="wrap_content" android:spacing="20px" /> </LinearLayout> _Gallery.java 代 码 102. package com.webabcd.view; import android.app.activity; 105. import android.content.context; 106. import android.os.bundle; 107. import android.view.view; 108. import android.view.viewgroup; 109. import android.widget.adapterview; 110. import android.widget.baseadapter; 111. import android.widget.gallery; 112. import android.widget.imageview; 113. import android.widget.toast; 114. import android.widget.gallery.layoutparams; public class _Gallery extends Activity {

132 protected void oncreate(bundle savedinstancestate) { 120. // TODO Auto-generated method stub 121. super.oncreate(savedinstancestate); 122. this.setcontentview(r.layout.gallery); settitle("gallery"); Gallery gallery = (Gallery) findviewbyid(r.id.gallery); 127. // 为 缩 略 图 浏 览 器 指 定 一 个 适 配 器 128. gallery.setadapter(new ImageAdapter(this)); 129. // 响 应 在 缩 略 图 列 表 上 选 中 某 个 缩 略 图 后 的 事 件 130. gallery.setonitemselectedlistener(new AdapterView.OnItemSelectedListener() { 132. public void onitemselected(adapterview<?> parent, View v, 133. int position, long id) { 134. Toast.makeText(_Gallery.this, String.valueOf(position), Toast.LENGTH_SHORT).show (); 135. } public void onnothingselected(adapterview<?> arg0) { } 141. }); 142. } // 继 承 BaseAdapter 用 以 实 现 自 定 义 的 图 片 适 配 器 145. public class ImageAdapter extends BaseAdapter { private Context mcontext; public ImageAdapter(Context context) { 150. mcontext = context; 151. } public int getcount() { 154. return mthumbids.length; 155. } public Object getitem(int position) { 158. return position; 159. }

133 public long getitemid(int position) { 162. return position; 163. } public View getview(int position, View convertview, ViewGroup parent) { 166. ImageView image = new ImageView(mContext); image.setimageresource(mthumbids[position]); 169. image.setadjustviewbounds(true); 170. image.setlayoutparams(new Gallery.LayoutParams( 171. LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); return image; 174. } 175. } // 需 要 显 示 的 图 片 集 合 178. private Integer[] mthumbids = { R.drawable.icon01, R.drawable.icon02, 179. R.drawable.icon03, R.drawable.icon04, R.drawable.icon05 }; 180. } ImageSwitcher 的 Demo 185. imageswitcher.xml 代 码 188. <?xml version="1.0" encoding="utf-8"?> 189. <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" 191. android:layout_height="fill_parent"> <Gallery android:id="@+id/gallery" android:layout_width="fill_parent" 194. android:layout_height="wrap_content" android:spacing="20px" /> <! ImageSwitcher - 图 片 转 换 器 控 件 ( 改 变 图 片 时 增 加 一 些 动 画 效 果 ) > 199. <ImageSwitcher android:id="@+id/imageswitcher" 200. android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> 203.

134 _ImageSwitcher.java 代 码 208. package com.webabcd.view; import android.app.activity; 211. import android.content.context; 212. import android.os.bundle; 213. import android.view.view; 214. import android.view.viewgroup; 215. import android.view.animation.animationutils; 216. import android.widget.adapterview; 217. import android.widget.baseadapter; 218. import android.widget.gallery; 219. import android.widget.imageswitcher; 220. import android.widget.imageview; 221. import android.widget.viewswitcher; 222. import android.widget.gallery.layoutparams; // 图 片 转 换 器 的 使 用 基 本 同 文 字 转 换 器 225. // 以 下 是 一 个 用 ImageSwitcher + Gallery 实 现 的 经 典 的 图 片 浏 览 器 的 Demo 226. public class _ImageSwitcher extends Activity implements 227. ViewSwitcher.ViewFactory { private ImageSwitcher mswitcher; protected void oncreate(bundle savedinstancestate) { 233. // TODO Auto-generated method stub 234. super.oncreate(savedinstancestate); 235. this.setcontentview(r.layout.imageswithcer); settitle("imageswithcer"); mswitcher = (ImageSwitcher) findviewbyid(r.id.imageswitcher); 240. mswitcher.setfactory(this); 241. mswitcher.setinanimation(animationutils.loadanimation(this, 242. android.r.anim.fade_in)); 243. mswitcher.setoutanimation(animationutils.loadanimation(this, 244. android.r.anim.fade_out)); Gallery gallery = (Gallery) findviewbyid(r.id.gallery); 247. gallery.setadapter(new ImageAdapter(this));

135 248. gallery.setonitemselectedlistener(new AdapterView.OnItemSelectedListener() { 250. public void onitemselected(adapterview<?> parent, View v, 251. int position, long id) { 252. mswitcher.setimageresource(mimageids[position]); 253. } public void onnothingselected(adapterview<?> arg0) { } 259. }); 260. } public class ImageAdapter extends BaseAdapter { private Context mcontext; public ImageAdapter(Context context) { 267. mcontext = context; 268. } public int getcount() { 271. return mthumbids.length; 272. } public Object getitem(int position) { 275. return position; 276. } public long getitemid(int position) { 279. return position; 280. } public View getview(int position, View convertview, ViewGroup parent) { 283. ImageView image = new ImageView(mContext); image.setimageresource(mthumbids[position]); 286. image.setadjustviewbounds(true); 287. image.setlayoutparams(new Gallery.LayoutParams( 288. LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); return image; 291. }

136 292. } private Integer[] mthumbids = { R.drawable.icon01, R.drawable.icon02, 295. R.drawable.icon03, R.drawable.icon04, R.drawable.icon05 }; private Integer[] mimageids = { R.drawable.icon01, R.drawable.icon02, 298. R.drawable.icon03, R.drawable.icon04, R.drawable.icon05 }; public View makeview() { 302. ImageView image = new ImageView(this); 303. image.setminimumheight(200); 304. image.setminimumwidth(200); 305. image.setscaletype(imageview.scaletype.fit_center); 306. image.setlayoutparams(new ImageSwitcher.LayoutParams( 307. LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 308. return image; 309. } 310. } GridView 的 Demo 315. gridview.xml 代 码 318. <?xml version="1.0" encoding="utf-8"?> <! GridView - 网 格 控 件 322. numcolumns="auto_fit" - 列 数 自 适 应 323. stretchmode - 缩 放 模 式 (stretchmode="columnwidth" - 缩 放 与 列 宽 大 小 同 步 ) > 325. <GridView xmlns:android=" android:id="@+id/gridview" android:layout_width="fill_parent" 327. android:layout_height="fill_parent" android:padding="10px" 328. android:verticalspacing="10px" android:horizontalspacing="10px" 329. android:numcolumns="auto_fit" android:columnwidth="60px" 330. android:stretchmode="columnwidth" android:gravity="center"> 331. </GridView> _GridView.java 335.

137 336. 代 码 337. package com.webabcd.view; import android.app.activity; 340. import android.content.context; 341. import android.os.bundle; 342. import android.view.view; 343. import android.view.viewgroup; 344. import android.widget.baseadapter; 345. import android.widget.gridview; 346. import android.widget.imageview; public class _GridView extends Activity { protected void oncreate(bundle savedinstancestate) { 352. // TODO Auto-generated method stub 353. super.oncreate(savedinstancestate); 354. this.setcontentview(r.layout.gridview); settitle("gridview"); GridView gridview = (GridView) findviewbyid(r.id.gridview); 359. // 指 定 网 格 控 件 的 适 配 器 为 自 定 义 的 图 片 适 配 器 360. gridview.setadapter(new ImageAdapter(this)); 361. } // 自 定 义 的 图 片 适 配 器 364. public class ImageAdapter extends BaseAdapter { private Context mcontext; public ImageAdapter(Context context) { 369. mcontext = context; 370. } public int getcount() { 373. return mthumbids.length; 374. } public Object getitem(int position) { 377. return position; 378. } 379.

138 380. public long getitemid(int position) { 381. return position; 382. } public View getview(int position, View convertview, ViewGroup parent) { 385. ImageView imageview; 386. if (convertview == null) { 387. imageview = new ImageView(mContext); 388. imageview.setlayoutparams(new GridView.LayoutParams(48, 48)); 389. imageview.setadjustviewbounds(false); 390. imageview.setscaletype(imageview.scaletype.center_crop); 391. imageview.setpadding(5, 5, 5, 5); 392. } else { 393. imageview = (ImageView) convertview; 394. } imageview.setimageresource(mthumbids[position]); return imageview; 399. } // 网 格 控 件 所 需 图 片 数 据 的 数 据 源 402. private Integer[] mthumbids = { R.drawable.icon01, R.drawable.icon02, 403. R.drawable.icon03, R.drawable.icon04, R.drawable.icon05 }; 404. } 405. } ListView 的 Demo 410. main_list_adapter.xml 代 码 413. <?xml version="1.0" encoding="utf-8"?> 414. <! 自 定 义 列 表 适 配 器 的 layout > 417. <LinearLayout xmlns:android=" android:orientation="horizontal" android:layout_width="fill_parent" 419. android:layout_height="fill_parent"> <TextView android:id="@+id/text" android:layout_width="wrap_content" 422. android:layout_height="wrap_content" android:textsize="16sp"> 423. </TextView>

139 </LinearLayout> MainListAdapter.java 代 码 431. package com.webabcd.view; import java.util.list; import android.content.context; 436. import android.view.layoutinflater; 437. import android.view.view; 438. import android.view.viewgroup; 439. import android.widget.baseadapter; 440. import android.widget.textview; // 继 承 BaseAdapter 以 实 现 自 定 义 的 列 表 适 配 器 443. public class MainListAdapter extends BaseAdapter { private LayoutInflater minflater; 446. private List<String> mdata; public MainListAdapter(Context context, List<String> data) { 449. minflater = LayoutInflater.from(context); 450. mdata = data; 451. } public int getcount() { 455. return mdata.size(); 456. } public Object getitem(int position) { 460. return mdata.get(position); 461. } public long getitemid(int position) { 465. return position; 466. } 467.

140 public View getview(int position, View convertview, ViewGroup parent) { TextView text; if (convertview == null) { 474. // 指 定 一 个 layout 作 为 自 定 义 列 表 适 配 器 的 layout 475. convertview = minflater.inflate(r.layout.main_list_adapter, null); 476. text = (TextView) convertview.findviewbyid(r.id.text); 477. convertview.settag(text); 478. } else { 479. text = (TextView) convertview.gettag(); 480. } String mitem = mdata.get(position); 483. text.settext(mitem); return convertview; 486. } 487. } Main.java 代 码 492. package com.webabcd.view; import java.util.arraylist; 495. import java.util.list; import android.app.listactivity; 498. import android.content.intent; 499. import android.os.bundle; 500. import android.view.view; 501. import android.widget.listview; // 此 处 要 继 承 ListActivity, 用 以 实 现 ListView 的 功 能 504. public class Main extends ListActivity { private List<String> mdata; /** Called when the activity is first created. */ 510. public void oncreate(bundle savedinstancestate) { 511. super.oncreate(savedinstancestate);

141 settheme(android.r.style.theme_light); 514. setcontentview(r.layout.main); 515. mdata = getdata(); // 使 用 自 定 义 的 列 表 适 配 器 来 展 现 数 据 518. MainListAdapter adapter = new MainListAdapter(this, mdata); // 如 需 使 用 系 统 内 置 的 列 表 适 配 器, 则 可 以 使 用 类 似 如 下 的 方 法 521. // ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.r.layout.sim ple_expandable_list_item_1, mdata); this.setlistadapter(adapter); 524. } // ListView 的 数 据 源 527. private List<String> getdata() { 528. List<String> items = new ArrayList<String>(); items.add("textview"); 531. items.add("button"); 532. items.add("imagebutton"); 533. items.add("imageview"); 534. items.add("checkbox"); 535. items.add("radiobutton"); 536. items.add("analogclock"); 537. items.add("digitalclock"); 538. items.add("datepicker"); 539. items.add("timepicker"); 540. items.add("togglebutton"); 541. items.add("edittext"); 542. items.add("progressbar"); 543. items.add("seekbar"); 544. items.add("autocompletetextview"); 545. items.add("multiautocompletetextview"); 546. items.add("zoomcontrols"); 547. items.add("include"); 548. items.add("videoview"); 549. items.add("webview"); 550. items.add("ratingbar"); 551. items.add("tab"); 552. items.add("spinner"); 553. items.add("chronometer"); 554. items.add("scrollview");

142 555. items.add("textswitcher"); 556. items.add("listview"); 557. items.add("gallery"); 558. items.add("imageswitcher"); 559. items.add("gridview"); 560. items.add("expandablelist"); return items; 563. } // ListView 中 某 项 被 选 中 后 的 逻 辑 567. protected void onlistitemclick(listview l, View v, int position, long id) { 568. Intent intent = new Intent(); 569. intent.setclassname(this, "com.webabcd.view._" + mdata.get(position)); startactivityforresult(intent, 0); 572. } 573. } ExpandableList 的 Demo 577. _ExpandableList.java 代 码 580. package com.webabcd.view; import android.app.expandablelistactivity; 583. import android.os.bundle; 584. import android.view.contextmenu; 585. import android.view.gravity; 586. import android.view.menuitem; 587. import android.view.view; 588. import android.view.viewgroup; 589. import android.view.contextmenu.contextmenuinfo; 590. import android.widget.abslistview; 591. import android.widget.baseexpandablelistadapter; 592. import android.widget.expandablelistadapter; 593. import android.widget.expandablelistview; 594. import android.widget.textview; 595. import android.widget.toast; 596. import android.widget.expandablelistview.expandablelistcontextmenuinfo; // ExpandableList - 可 展 开 / 收 缩 列 表

143 599. // 继 承 ExpandableListActivity 以 实 现 列 表 的 可 展 开 / 收 缩 的 功 能 600. public class _ExpandableList extends ExpandableListActivity { private ExpandableListAdapter madapter; protected void oncreate(bundle savedinstancestate) { 606. // TODO Auto-generated method stub 607. super.oncreate(savedinstancestate); settitle("expandablelist"); madapter = new MyExpandableListAdapter(); 612. setlistadapter(madapter); 613. registerforcontextmenu(this.getexpandablelistview()); 614. } // 为 列 表 的 每 一 项 创 建 上 下 文 菜 单 ( 即 长 按 后 呼 出 的 菜 单 ) 618. public void oncreatecontextmenu(contextmenu menu, View v, 619. ContextMenuInfo menuinfo) { 620. menu.setheadertitle("contextmenu"); 621. menu.add(0, 0, 0, "ContextMenu"); 622. } // 单 击 上 下 文 菜 单 后 的 逻 辑 626. public boolean oncontextitemselected(menuitem item) { 627. ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getmen uinfo(); 628. String title = ((TextView) info.targetview).gettext().tostring(); int type = ExpandableListView.getPackedPositionType(info.packedPosition); 631. if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) { 632. int grouppos = ExpandableListView.getPackedPositionGroup(info.packedPosition); 633. int childpos = ExpandableListView.getPackedPositionChild(info.packedPosition); Toast.makeText(this, title + " - Group Index: " + grouppos + " Child Index: " + childpos, Toast.LENGTH_SHORT).show(); return true; 638. } else if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 639. int grouppos = ExpandableListView.getPackedPositionGroup(info.packedPosition);

144 640. Toast.makeText(this, title + " - Group Index: " + grouppos, Toast.LENGTH_SHORT).sho w(); return true; 643. } return false; 646. } public class MyExpandableListAdapter extends BaseExpandableListAdapter { // 父 列 表 数 据 651. private String[] groups = 652. { 653. "group1", 654. "group2", 655. "group3", 656. "group4" 657. }; 658. // 子 列 表 数 据 659. private String[][] children = 660. { 661. { "child1" }, 662. { "child1", "child2" }, 663. { "child1", "child2", "child3" }, 664. { "child1", "child2", "child3", "child4" } 665. }; public Object getchild(int groupposition, int childposition) { 669. return children[groupposition][childposition]; 670. } public long getchildid(int groupposition, int childposition) { 674. return childposition; 675. } public int getchildrencount(int groupposition) { 679. return children[groupposition].length; 680. } // 取 子 列 表 中 的 某 一 项 的 View

145 public View getchildview(int groupposition, int childposition, 685. boolean islastchild, View convertview, ViewGroup parent) { 686. TextView textview = getgenericview(); 687. textview.settext(getchild(groupposition, childposition).tostring()); 688. return textview; 689. } public Object getgroup(int groupposition) { 693. return groups[groupposition]; 694. } public int getgroupcount() { 698. return groups.length; 699. } public long getgroupid(int groupposition) { 703. return groupposition; 704. } // 取 父 列 表 中 的 某 一 项 的 View 708. public View getgroupview(int groupposition, boolean isexpanded, 709. View convertview, ViewGroup parent) { 710. TextView textview = getgenericview(); 711. textview.settext(getgroup(groupposition).tostring()); 712. return textview; 713. } public boolean hasstableids() { 717. return true; 718. } public boolean ischildselectable(int groupposition, int childposition) { 722. return true; 723. } // 获 取 某 一 项 的 View 的 逻 辑 726. private TextView getgenericview() {

146 727. AbsListView.LayoutParams lp = new AbsListView.LayoutParams( 728. ViewGroup.LayoutParams.FILL_PARENT, 48); 729. TextView textview = new TextView(_ExpandableList.this); 730. textview.setlayoutparams(lp); 731. textview.setgravity(gravity.center_vertical Gravity.LEFT); 732. textview.setpadding(32, 0, 0, 0); 733. return textview; 734. } 735. } 736. } Android SurfaceView 小 解 文 章 分 类 : 移 动 开 发 注 : 来 自 东 方 尚 智 沈 大 海 博 客 在 android 中 开 发 游 戏, 一 般 来 说, 或 想 写 一 个 复 杂 一 点 的 游 戏, 是 必 须 用 到 SurfaceView 来 开 发 的 经 过 这 一 阵 子 对 android 的 学 习, 我 找 到 了 自 已 在 android 中 游 戏 开 发 的 误 区, 不 要 老 想 着 用 Layout 和 view 去 实 现, 不 要 将 某 个 游 戏 中 的 对 象 做 成 一 个 组 件 来 处 理 应 该 尽 量 想 着 在 Canvas( 画 布 ) 中 画 出 游 戏 戏 中 的 背 景 人 物 动 画 等...SurfaceView 提 供 直 接 访 问 一 个 可 画 图 的 界 面, 可 以 控 制 在 界 面 顶 部 的 子 视 图 层 SurfaceView 是 提 供 给 需 要 直 接 画 像 素 而 不 是 使 用 窗 体 部 件 的 应 用 使 用 的 Android 图 形 系 统 中 一 个 重 要 的 概 念 和 线 索 是 surface View 及 其 子 类 ( 如 TextView, Button) 要 画 在 surface 上 每 个 surface 创 建 一 个 Canvas 对 象 ( 但 属 性 时 常 改 变 ), 用 来 管 理 view 在 surface 上 的 绘 图 操 作, 如 画 点 画 线 还 要 注 意 的 是, 使 用 它 的 时 候, 一 般 都 是 出 现 在 最 顶 层 的 :The view hierarchy will take care of correctly compositing with the Surface any siblings of the SurfaceView that would normally appear on top of it. 使 用 的 SurfaceView 的 时 候, 一 般 情 况 下 还 要 对 其 进 行 创 建, 销 毁, 改 变 时 的 情 况 进 行 监 视, 这 就 要 用 到 SurfaceHolder.Callback. 在 用 SurfaceView 进 行 游 戏 开 发 过 程 中, 用 到 SurfaceHolder 来 处 理 它 的 Canvas 上 画 的 效 果 和 动 画 是 必 不 可 少 的 用 于 控 制 表 面, 大 小, 像 素 等 Abstract interface to someone holding a display surface. Allows you to control the surface size and format, edit the pixels in the surface, and monitor changes to the surface. This interface is typically available through the SurfaceView class. 其 中 特 别 要 注 意 以 下 的 几 个 函 数 : abstract void addcallback(surfaceholder.callback callback); // 给 SurfaceView 当 前 的 持 有 者 一 个 回 调 对 象 abstract Canvas lockcanvas(); // 锁 定 画 布, 一 般 在 锁 定 后 就 可 以 通 过 其 返 回 的 画 布 对 象 Canvas, 在 其 上 面 画 图 等 操 作 了 abstract Canvas lockcanvas(rect dirty); // 锁 定 画 布 的 某 个 区 域 进 行 画 图 等.. 因 为 画 完 图 后, 会 调 用 下 面 的 unlockcanvasandpost 来

147 改 变 显 示 内 容 // 相 对 部 分 内 存 要 求 比 较 高 的 游 戏 来 说, 可 以 不 用 重 画 dirty 外 的 其 它 区 域 的 像 素, 可 以 提 高 速 度 abstract void unlockcanvasandpost(canvas canvas); // 结 束 锁 定 画 图, 并 提 交 改 变 实 例 : 用 线 程 画 一 个 蓝 色 的 长 方 形 Java 代 码 1. import android.app.activity; 2. import android.content.context; 3. import android.graphics.canvas; 4. import android.graphics.color; 5. import android.graphics.paint; 6. import android.graphics.rectf; 7. import android.os.bundle; 8. import android.view.surfaceholder; 9. import android.view.surfaceview; public class Test extends Activity { public void oncreate(bundle savedinstancestate) { 14. super.oncreate(savedinstancestate); 15. setcontentview(new MyView(this)); 16. } // 内 部 类 19. class MyView extends SurfaceView implements SurfaceHolder.Callback{ SurfaceHolder holder; 22. public MyView(Context context) { 23. super(context); 24. holder = this.getholder();// 获 取 holder 25. holder.addcallback(this); 26. //setfocusable(true); 27. } public void surfacechanged(surfaceholder holder, int format, int width, 31. int height) { } 34.

148 36. public void surfacecreated(surfaceholder holder) { 37. new Thread(new MyThread()).start(); 38. } public void surfacedestroyed(surfaceholder holder) {} // 内 部 类 的 内 部 类 44. class MyThread implements Runnable{ public void run() { 48. Canvas canvas = holder.lockcanvas(null);// 获 取 画 布 49. Paint mpaint = new Paint(); 50. mpaint.setcolor(color.blue); canvas.drawrect(new RectF(40,60,80,80), mpaint); 53. holder.unlockcanvasandpost(canvas);// 解 锁 画 布, 提 交 画 好 的 图 像 54. } } } 59. } 访 问 SurfaceView 的 底 层 图 形 是 通 过 SurfaceHolder 接 口 来 实 现 的, 通 过 getholder() 方 法 可 以 得 到 这 个 SurfaceHolder 对 象 你 应 该 实 现 surfacecreated(surfaceholder) 和 surfacedestroyed(surfaceholder) 方 法 来 知 道 在 这 个 Surface 在 窗 口 的 显 示 和 隐 藏 过 程 中 是 什 么 时 候 创 建 和 销 毁 的 SurfaceView 可 以 在 多 线 程 中 被 访 问 注 意 : 一 个 SurfaceView 只 在 SurfaceHolder.Callback.surfaceCreated() 和 SurfaceHolder.Callback.surfaceDestroyed() 调 用 之 间 是 可 用 的, 其 他 时 间 是 得 不 到 它 的 Canvas 对 象 的 (null) 我 的 访 问 过 程 : 创 建 一 个 SurfaceView 的 子 类, 实 现 SurfaceHolder.Callback 接 口 得 到 这 个 SurfaceView 的 SurfaceHolder 对 象 holder holder.addcallback(callback), 也 就 是 实 现 SurfaceHolder.Callback 接 口 的 类 对 象 在 SurfaceHolder.Callback.surfaceCreated() 调 用 过 后 holder.lockcanvas() 对 象 就 可 以 得 到 SurfaceView 对 象 对 应 的 Canvas 对 象 canvas 了 用 canvas 对 象 画 图 画 图 结 束 后 调 用 holder.unlockcanvasandpost() 就 把 图 画 在 窗 口 中 了 SurfaceView 可 以 多 线 程 访 问, 在 多 线 程 中 画 图 Java 代 码

149 1. import android.content.context; 2. import android.graphics.canvas; 3. import android.graphics.color; 4. import android.graphics.paint; 5. import android.util.log; 6. import android.view.surfaceholder; 7. import android.view.surfaceview; public class MySurfaceView extends SurfaceView implements 10. SurfaceHolder.Callback { private Context mcontext; 14. private SurfaceHolder mholder; public TouchScreenAdjusterSurfaceView(Context context,) { 17. super(context); mcontext = context; mholder = TouchScreenAdjusterSurfaceView.this.getHolder(); 22. mholder.addcallback(touchscreenadjustersurfaceview.this); this.setfocusableintouchmode(true); // to make sure that we can get 25. // touch events and key events,and 26. // "setfocusable()" to make sure we 27. // can get key events 28. } public void surfacechanged(surfaceholder holder, int format, int width, 32. int height) { 33. // TODO Auto-generated method stub } public void surfacecreated(surfaceholder holder) { 39. //now you can get the Canvas and draw something here 40. } public void surfacedestroyed(surfaceholder holder) { 44. // TODO Auto-generated method stub

150 } public void drawmyshape(pointpostion ps) { mcanvas = mholder.lockcanvas(); // draw anything you like mholder.unlockcanvasandpost(mcanvas); 56. } } android 琐 碎 笔 记 六 文 章 分 类 : 移 动 开 发 1. 得 到 屏 幕 的 screen dimensions Display display = getwindowmanager().getdefaultdisplay(); int width = display.getwidth();int height = display.getheight(); 2. 播 放 gif 图 片 在 protected void ondraw(canvas canvas) { canvas.drawcolor(0xffcccccc); Paint p = new Paint(); p.setantialias(true); canvas.drawbitmap(mbitmap4, 210, 170, null); mdrawable.draw(canvas); long now = android.os.systemclock.uptimemillis(); if (mmoviestart == 0) { // first time mmoviestart = now; } if (mmovie!= null) { int dur = mmovie.duration(); if (dur == 0) { dur = 1000; } int reltime = (int)((now - mmoviestart) % dur); mmovie.settime(reltime); mmovie.draw(canvas, getwidth() - mmovie.width(), getheight() - mmovie.height()); invalidate(); } }

151 @Override protected void ondraw(canvas canvas) { if(movie!= null) { long now = android.os.systemclock.uptimemillis(); int dur = Math.max(movie.duration(), 1); // is it really animated? int pos = (int)(now % dur); movie.settime(pos); movie.draw(canvas, x, y); invalidate(); }} 4. 打 开 sd 卡 中 的 sqllite File dbfile = new File("/sdcard/mydb.sqlite" ); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); 5. 得 到 手 机 的 IMEI ((TelephonyManager) getsystemservice=(context.telephony_service)).getdeviceid(); 6. 不 让 程 序 生 成 一 个 appliation 去 掉 <category android:name="android.intent.category.launcher" /> 当 然 你 的 让 你 的 程 序 被 引 导 启 动 7. 使 用 appliation 的 id 可 以 获 得 不 同 appliation 的 数 据 : android:shareduserid="string" 在 主 xml 中 添 加 上 面 一 句 话, 然 后 签 名 也 要 一 样 两 个 app 的 id 也 要 设 置 成 一 样 如 都 是 string 那 么 这 两 个 程 序 就 可 以 相 互 访 问 彼 此 的 数 据, 也 可 以 在 同 一 个 process 中 了 8. 判 断 相 机 设 备 存 在 不 private android.hardware.camera mcameradevice; try { mcameradevice = android.hardware.camera.open();} catch (RuntimeException e) { Log.e(TAG, "fail to connect Camera", e); 9 使 listview 透 明 android:background="# " android:cachecolorhint="# " 或 者 android:background="@android:color/transparent" The background android screen image should be visible. 屏 幕 的 背 景 图 像 可 以 看 见 manifest file 添 加 attribute 到 activity. android:theme="@android:style/theme.dialog"

152 Android 通 过 selector 改 变 界 面 状 态 文 章 分 类 : 移 动 开 发 先 上 图, 看 看 效 果 : 初 始 效 果 按 下 后 效 果 在 res/drawable 文 件 夹 新 增 一 个 文 件, 此 文 件 设 置 了 图 片 的 触 发 状 态, 你 可 以 设 置 state_pressed,state_checked,state_pressed,state_selected, state_focused,state_enabled 等 几 个 状 态 : Java 代 码 1. <selector xmlns:android=" <item android:state_pressed="true" android:drawable="@drawable/arrow_pressed" / > 4. <item android:drawable="@drawable/arrow_normal" /> 5. <item android:state_checked="true" android:drawable="@drawable/arrow_pressed" / > 6. </selector> 实 现 如 下, 注 意 其 中 的 android:src="@drawable/imageselector" Xml 代 码 1. <ImageView android:layout_width="wrap_content" 2. android:layout_height="@android:dimen/app_icon_size" 3. android:layout_alignparentright="true" android:scaletype="fitcenter" 4. android:layout_gravity="center" android:src="@drawable/imageselector" 5. android:clickable="true" android:focusable="true" android:id="@+id/blacklistimagevi ew" 6. android:layout_marginright="10dip" />

153 如 果 当 触 发 的 控 件 不 是 ImageView, 而 是 别 的 控 件, 可 在 代 码 中 用 Java 代 码 1. blacklistimageview.setpressed(true); Java 代 码 1. blacklistimageview.setchecked(true); Android 经 典 小 技 巧 总 结 一 这 是 一 篇 关 于 如 何 将 自 定 义 的 homescreen 设 定 为 Android 的 默 认 主 页, 而 不 需 要 用 户 选 择 的 讨 论 贴, 原 文 如 下 : Another additional info: If you want that your homescreen is always the default and that the system doesn't ask to choose between different home screens simply put it that way: XML: <intent-filter priority="1"> <action name="android.intent.action.main"></action> <category name="android.intent.category.home"></category> <category name="android.intent.category.default"></category> <category name="android.intent.category.monkey"></category> </intent-filter> The difference to the XML above is android:priority="1". It seems that the default home screen has priority 0 and therefore setting the priority

154 of your home screen to 1 is sufficient to force the usage of your home screen android shape 渐 近 线 效 果 文 章 分 类 : 综 合 技 术 android 画 图 -----shape 的 使 用 在 GradientDrawable1 试 图 中 终 于 把 shape 学 会 了, 以 前 总 是 似 懂 非 懂, 现 在 终 于 把 里 面 的 东 西 搞 清 楚 了, 同 时 也 挺 佩 服 谷 歌 的 用 心, 故 意 设 置 一 些 陷 阱 吧, 不 认 真 对 待 还 真 以 为 没 有 啥 效 果 呢 setcontentview(r.layout.shape_drawable_1) shape_drawable_1 代 码 如 下 : <ScrollView xmlns:android=" android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ImageView android:layout_width="fill_parent" android:layout_height="50dip" android:src="@drawable/shape_1" /> <ImageView android:layout_width="fill_parent" android:layout_height="50dip" android:src="@drawable/line" /> <ImageView android:layout_width="fill_parent" android:layout_height="50dip" android:src="@drawable/shape_2" /> <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/line" />

155 <ImageView android:layout_width="fill_parent" android:layout_height="50dip" /> <ImageView android:layout_width="fill_parent" android:layout_height="20dip" /> <ImageView android:layout_width="fill_parent" android:layout_height="50dip" /> <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <ImageView android:layout_width="fill_parent" android:layout_height="50dip" /> </LinearLayout> </ScrollView> shape_5 的 代 码 : <shape xmlns:android=" android:shape="rectangle"> <gradient android:startcolor="#ffff0000" android:endcolor="#80ff00ff" android:angle="270"/> <padding android:left="50dp" android:top="20dp" android:right="7dp" android:bottom="7dp" /> <corners android:radius="8dp" /> </shape> gradient 产 生 颜 色 渐 变 android:angle 从 哪 个 角 度 开 始 变 貌 似 只 有 90 的 整 数 倍 可 以 android:shape="rectangle" 默 认 的 也 是 长 方 形 <shape xmlns:android=" android:shape="oval"> <solid android:color="#ff4100ff"/>

156 <stroke android:width="2dp" android:color="#ee31ff5e" android:dashwidth="3dp" android:dashgap="2dp" /> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <corners android:radius="6dp" /> </shape> #ff4100ff 蓝 色 #ff4100ff 绿 色 <solid android:color="#ff4100ff"/> 实 心 的 填 充 里 面 <stroke 描 边 采 用 那 样 的 方 式 将 外 形 轮 廓 线 画 出 来 android:dashwidth="3dp" android:dashgap="2dp" 默 认 值 为 0 android:width="2dp" android:color="#ff00ff00" 笔 的 粗 细, android:dashwidth="5dp" android:dashgap="5dp" 实 现 这 样 的 效 果,dashWidth 指 的 是 一 条 小 横 线 的 宽 度 dashgap 指 的 是 小 横 线 与 小 横 线 的 间 距 width="2dp" 不 能 太 宽 分 析 android 动 画 模 块 关 键 字 : android 动 画 主 要 思 路 Tween 动 画 通 过 对 View 的 内 容 完 成 一 系 列 的 图 形 变 换 ( 包 括 平 移 缩 放 旋 转 改 变 透 明 度 ) 来 实 现 动 画 效 果 具 体 来 讲, 预 先 定 义 一 组 指 令, 这 些 指 令 指 定 了 图 形 变 换 的 类 型 触 发 时 间 持 续 时 间 这 些 指 令 可 以 是 以 XML 文 件 方 式 定 义, 也 可 以 是 以 源 代 码 方 式 定 义 程 序 沿 着 时 间 线 执 行 这 些 指 令 就 可 以 实 现 动 画 效 果 动 画 的 进 度 使 用 Interpolator 控 制,android 提 供 了 几 个 Interpolator 子 类, 实 现 了 不 同 的 速 度 曲 线, 如 LinearInterpolator 实 现 了 匀 速 效 果 Accelerateinterpolator 实 现 了 加 速 效 果 DecelerateInterpolator 实 现 了 减 速 效 果 等 还 可 以 定 义 自 己 的 Interpolator 子 类, 实 现 抛 物 线 自 由 落 体 等 物 理 效 果 动 画 的 运 行 模 式 有 两 种 : 独 占 模 式, 即 程 序 主 线 程 进 入 一 个 循 环, 根 据 动 画 指 令 不 断 刷 新 屏 幕, 直 到 动 画 结 束 ; 中 断 模 式, 即 有 单 独 一 个 线 程 对 时 间 计 数, 每 隔 一 定 的 时 间 向 主 线 程 发 通 知, 主 线 程 接 到 通 知 后 更 新 屏 幕 ; 图 形 变 换 通 过 仿 射 矩 阵 实 现 图 形 变 换 是 图 形 学 中 的 基 本 知 识 简 单 来 说 就 是, 每 种 变 换 都 是 一 次 矩 阵 运 算 在 Android 中,Canvas 类 中 包 含 当 前 矩 阵, 当 调 用 Canvas.drawBitmap

157 (bmp, x, y, Paint) 绘 制 时,android 会 先 把 bmp 做 一 次 矩 阵 运 算, 然 后 将 运 算 的 结 果 显 示 在 Canvas 上 这 样, 编 程 人 员 只 需 不 断 修 改 Canvas 的 矩 阵 并 刷 新 屏 幕,View 里 的 对 象 就 会 不 停 的 做 图 形 变 换, 动 画 就 形 成 了 在 android 中 提 供 了 Animation Interpolator Transformation 等 类 具 体 实 现 Tween 动 画, 下 面 逐 一 分 析 Animation 类 及 其 子 类 Animation 类 及 其 子 类 是 动 画 的 核 心 模 块, 它 实 现 了 各 种 动 画 效 果, 如 平 移 缩 放 旋 转 改 变 透 明 度 等 Tween 动 画 的 每 一 桢 都 根 据 Interpolator 对 view 的 内 容 做 一 次 图 形 变 换, 因 此 Animation 的 核 心 工 作 是 做 变 换 (transformation) Aniamtion 是 基 类, 他 记 录 了 动 画 的 通 用 属 性 和 方 法 主 要 的 属 性 包 括 动 画 持 续 时 间 重 复 次 数 interpolator 等 动 画 里 最 重 要 的 方 法 是 gettransformation (currenttime, outtransformation), 该 方 法 根 据 当 前 间 (currenttime) 和 interpolator, 计 算 当 前 的 变 换, 在 outtransformation 中 返 回 TranslateAnimation RotateAnimation AlphaAnimation 等 是 Animation 的 子 类, 分 别 实 现 了 平 移 旋 转 改 变 Alpha 值 等 动 画 每 个 动 画 都 重 载 了 父 类 的 applytransformation 方 法, 这 个 方 法 会 被 父 类 的 gettransformation 方 法 调 用 另 外 每 个 动 画 还 有 个 initialize 方 法, 完 成 初 始 化 工 作 不 同 的 动 画 具 有 不 同 的 属 性, 如 RotateAnimation 的 属 性 是 起 始 角 度 终 止 角 度 和 旋 转 点 坐 标, TranslateAnimation 的 属 性 是 起 始 位 置 和 终 止 位 置 AlphaAnimation 的 属 性 是 起 始 alpha 值 和 终 止 alpha 值 Animation 类 及 其 子 类 的 类 图 如 下 所 示 :

158 Interpolator 类 及 其 子 类 Interpolator 定 义 了 动 画 的 变 化 速 度, 可 以 实 现 匀 速 正 加 速 负 加 速 无 规 则 变 加 速 等 ; Interpolator 是 基 类, 封 装 了 所 有 Interpolator 的 共 同 方 法, 它 只 有 一 个 方 法, 即 getinterpolation (float input), 该 方 法 maps a point on the timeline to a multiplier to be applied to the transformations of an animation. LinearInerpolator AccelerateInterpolator, DecelerateInterpolator, AccelerateDecelerateInterpolator,CycleInterpolator 是 Interpolator 的 子 类, 分 别 实 现 了 匀 速 加 速 减 速 变 速 循 环 等 效 果 对 于 LinearInterpolator, 变 化 率 是 个 常 数, 即 f (x) = x. Java 代 码 1. public float getinterpolation(float input) { 2. return input; 3. }

159 对 于 AccelerateInterpolator, 开 始 变 化 很 慢, 然 后 逐 渐 变 快, 即 f(x) = x*x 或 者 f(x) = pow(x, 2*mFactor). Java 代 码 1. public float getinterpolation(float input) { 2. if (mfactor == 1.0f) { 3. return (float)(input * input); 4. } else { 5. return (float)math.pow(input, 2 * mfactor); 6. } 7. } 对 于 AccelerateDecelerateInterpolator, 变 化 率 开 始 和 结 束 都 很 慢, 但 中 间 很 快, 即 f(x) = (cos ((x+1)*pi) / 2.0f) + 0.5f. Java 代 码 1. public float getinterpolation(float input) { 2. return (float)(math.cos((input + 1) * Math.PI) / 2.0f) + 0.5f; 3. } Interpolator 类 及 其 子 类 的 类 图 如 下 所 示 :

160 Transformation 类 Transformation 记 录 了 仿 射 矩 阵 Matrix, 动 画 每 触 发 一 次, 会 对 原 来 的 矩 阵 做 一 次 运 算, View 的 Bitmap 与 这 个 矩 阵 相 乘 就 可 实 现 相 应 的 操 作 ( 旋 转 平 移 缩 放 等 ) Transformation 类 封 装 了 矩 阵 和 alpha 值, 它 有 两 个 重 要 的 成 员, 一 是 mmatrix, 二 是 malpha Transformation 类 图 如 下 所 示 : 如 何 在 View 中 实 现 动 画 从 逻 辑 上 讲, 实 现 动 画 需 要 如 下 几 步 :

I

I 机 电 一 级 注 册 建 造 师 继 续 教 育 培 训 广 东 培 训 点 网 上 报 名 操 作 使 用 手 册 (2013 年 1 月, 第 一 版 ) 第 一 章 个 人 注 册 与 个 人 信 息 管 理 1. 个 人 注 册 ( 请 每 人 只 申 请 一 个 注 册 号, 如 果 单 位 批 量 报 班 单 位 帮 申 请 注 册, 不 需 个 人 再 注 册 ) 首 次 报 班,

More information

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知 第 卷 第 期 年 月 开 放 教 育 研 究 何 秋 琳 张 立 春 华 南 师 范 大 学 未 来 教 育 研 究 中 心 广 东 广 州 随 着 图 像 化 技 术 和 电 子 媒 体 的 发 展 视 觉 学 习 也 逐 步 发 展 为 学 习 科 学 的 一 个 研 究 分 支 得 到 研 究 人 员 和 教 育 工 作 者 的 广 泛 关 注 基 于 此 作 者 试 图 对 视 觉 学 习

More information

修改版-操作手册.doc

修改版-操作手册.doc 职 称 信 息 系 统 升 级 指 南 须 使 用 IE9 及 其 以 上 版 本 浏 览 器 或 谷 歌 浏 览 器 登 录 www.njrs.gov.cn 南 京 市 职 称 ( 职 业 资 格 ) 工 作 领 导 小 组 办 公 室 2016 年 5 月 目 录 一 申 报 人 员 操 作 指 南...1 1.1 职 称 初 定 申 报...1 1.1.1 职 称 初 定 基 础 信 息 填

More information

第2章 数据类型、常量与变量

第2章  数据类型、常量与变量 第 2 章 数 据 类 型 常 量 与 变 量 在 计 算 机 程 序 中 都 是 通 过 值 (value) 来 进 行 运 算 的, 能 够 表 示 并 操 作 值 的 类 型 为 数 据 类 型 在 本 章 里 将 会 介 绍 JavaScript 中 的 常 量 (literal) 变 量 (variable) 和 数 据 类 型 (data type) 2.1 基 本 数 据 类 型 JavaScript

More information

文 化 记 忆 传 统 创 新 与 节 日 遗 产 保 护 根 据 德 国 学 者 阿 斯 曼 的 文 化 记 忆 理 论 仪 式 与 文 本 是 承 载 文 化 记 忆 的 两 大 媒 体 在 各 种 仪 式 行 为 中 节 日 以 其 高 度 的 公 共 性 有 组 织 性 和 历 史 性 而 特 别 适 用 于 文 化 记 忆 的 储 存 和 交 流 节 日 的 文 化 功 能 不 仅 在 于

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 52 5 天 通 过 职 称 计 算 机 考 试 ( 考 点 视 频 串 讲 + 全 真 模 拟 ) Word 2003 中 文 字 处 理 ( 第 2 版 ) 第 3 章 3 字 符 格 式 需 要 掌 握 的 考 点 字 体 字 形 和 字 号 的 设 置 ; 上 标 下 标 空 心 字 等 字 体 效 果 的 使 用 ; 字 符 间 距 的 调 整 ; 改 变 字 符 颜 色 底 纹 添 加

More information

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管 宝 汇 德 Turbocare 微 服 务 系 统 客 户 操 作 手 册 Version 2.0 北 京 宝 汇 德 技 术 服 务 器 有 限 公 司 技 术 研 发 部 目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理... 10 巡

More information

《C语言基础入门》课程教学大纲

《C语言基础入门》课程教学大纲 C 语 言 开 发 入 门 教 程 课 程 教 学 大 纲 课 程 编 号 :201409210011 学 分 :5 学 分 学 时 :58 学 时 ( 其 中 : 讲 课 学 时 :39 学 时 上 机 学 时 :19 学 时 ) 先 修 课 程 : 计 算 机 导 论 后 续 课 程 :C++ 程 序 设 计 适 用 专 业 : 信 息 及 其 计 算 机 相 关 专 业 开 课 部 门 : 计

More information

<433A5C446F63756D656E747320616E642053657474696E67735C41646D696E6973747261746F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

<433A5C446F63756D656E747320616E642053657474696E67735C41646D696E6973747261746F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63> ( 一 ) 系 统 整 体 操 作 流 程 简 述 3 ( 二 ) 系 统 中 各 角 色 操 作 功 能 说 明 5 1. 学 院 管 理 员 5 2. 教 学 院 长 8 3. 指 导 教 师 10 4. 答 辩 组 组 长 12 5. 学 生 12 6. 系 统 管 理 员 15 ( 一 ) 论 文 系 统 常 见 问 题 16 ( 二 ) 论 文 查 重 常 见 问 题 22 1 2 主

More information

深圳市新亚电子制程股份有限公司

深圳市新亚电子制程股份有限公司 证 券 代 码 :002388 证 券 简 称 : 新 亚 制 程 公 告 编 号 :2016-053 深 圳 市 新 亚 电 子 制 程 股 份 有 限 公 司 2016 年 第 二 次 临 时 股 东 大 会 决 议 公 告 本 公 司 及 董 事 会 全 体 成 员 保 证 公 告 内 容 真 实 准 确 和 完 整, 不 存 在 虚 假 记 载 误 导 性 陈 述 或 者 重 大 遗 漏 特

More information

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用 水 路 运 输 建 设 综 合 管 理 信 息 系 统 - 门 户 系 统 用 户 手 册 二 零 一 五 年 十 一 月 目 录 一 系 统 访 问... 1 二 门 户 首 页... 1 1. 申 报 用 户... 1 2. 审 核 用 户... 2 三 系 统 登 录... 4 1. 用 户 名 密 码 登 录... 4 1.1 新 用 户 注 册... 4 1.2 用 户 登 录... 7

More information

登录、注册功能的测试用例设计.doc

登录、注册功能的测试用例设计.doc 注 册 登 陆 测 试 用 例 和 修 改 密 码 测 试 用 例 完 整 版 摘 自 网 络, 狗 狗 整 理 zqh139@126.com 修 改 历 史 日 期 版 本 作 者 修 改 内 容 评 审 号 变 更 控 制 号 2010-11-25 1.0 初 稿 2011-09-17 2.0 整 理 一 注 册 测 试 用 例 序 号 : 1 控 件 名 称 : 功 能 描 述 : 注 册 编

More information

Microsoft Word - 文件汇编.doc

Microsoft Word - 文件汇编.doc 北 京 市 中 医 管 理 局 二 一 五 年 四 月 ... 1... 18 2015... 30 京 中 医 政 字 [2014]160 号 1 2 一 充 分 认 识 中 医 健 康 乡 村 建 设 工 作 的 重 要 意 义 二 建 立 健 全 工 作 保 障 机 制 2014 12 15 三 做 好 工 作 启 动 的 准 备 事 宜 1 2014 12 15 5-10 2014 12 15

More information

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单 评 委 : 李 炎 斌 - 个 人 清 标 评 审 明 细 表 评 审 因 素 序 号 投 标 单 位 清 标 评 审 1 深 圳 市 创 捷 科 技 有 限 合 格 2 四 川 川 大 智 胜 软 件 股 份 有 限 合 格 3 北 京 航 天 长 峰 科 技 工 业 集 团 有 限 公 司 合 格 4 深 圳 中 兴 力 维 技 术 有 限 合 格 5 深 圳 键 桥 通 讯 技 术 股 份 有

More information

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和 语 音 语 篇 语 感 语 域 林 大 津 毛 浩 然 改 革 开 放 以 来 的 英 语 热 引 发 了 大 中 小 学 英 语 教 育 整 体 规 划 问 题 在 充 分 考 虑 地 区 学 校 和 个 体 差 异 以 及 各 家 观 点 的 基 础 上 遵 循 实 事 求 是 逐 级 定 位 逐 层 分 流 因 材 施 教 的 原 则 本 研 究 所 倡 导 的 语 音 语 篇 语 感 语 域

More information

Microsoft Word - 第7章 图表反转形态.doc

Microsoft Word - 第7章 图表反转形态.doc 第 七 章 图 表 反 转 形 态 我 们 知 道 市 场 趋 势 共 有 三 种 : 上 升 趋 势 下 降 趋 势 和 横 向 整 理 市 场 的 价 格 波 动 都 是 运 行 在 这 三 种 趋 势 中, 所 有 的 走 势 都 是 这 三 种 趋 势 的 排 列 组 合 如 图 市 场 趋 势 结 构 示 意 图 7-1 所 示 市 场 趋 势 结 构 示 意 图 7-1 图 市 场 趋

More information

国债回购交易业务指引

国债回购交易业务指引 附 件 1 上 海 证 券 交 易 所 新 质 押 式 国 债 回 购 交 易 业 务 指 引 一 总 述 根 据 上 海 证 券 交 易 所 债 券 交 易 实 施 细 则, 上 证 所 将 于 2006 年 5 月 8 日 起 推 出 新 质 押 式 国 债 回 购 新 质 押 式 回 购 与 现 行 质 押 式 回 购 相 比 区 别 主 要 在 以 下 几 个 方 面 :1 新 质 押 式

More information

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :, : 周 晓 虹 : - -., - - - -. :( ), -,.( ),,, -. - ( ).( ) ', -,,,,, ( ).( ),,, -., '.,, :,,,, :,,,, ,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,,

More information

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基 内 部 资 料 东 北 师 范 大 教 运 行 基 本 状 态 据 报 告 2015 年 春 季 期 教 务 处 2015 年 10 月 27 日 说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度,

More information

(2015-2016-2)-0004186-04205-1 140242 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 37 37 1 教 203 17 周 2016 年 06 月 13 日 (08:00-09:35) (2015-2016-2)-0004186-04205-1 141011

(2015-2016-2)-0004186-04205-1 140242 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 37 37 1 教 203 17 周 2016 年 06 月 13 日 (08:00-09:35) (2015-2016-2)-0004186-04205-1 141011 关 于 2015-2016 学 年 第 二 学 期 期 末 周 内 考 试 时 间 地 点 安 排 选 课 课 号 班 级 名 称 课 程 名 称 课 程 性 质 合 考 人 数 实 际 人 数 考 试 教 室 考 试 段 考 试 时 间 (2015-2016-2)-0006178-04247-1 130101 测 试 技 术 基 础 学 科 基 础 必 修 课 35 35 1 教 401 17 周

More information

生产支援功能 使用说明书(IP-110 篇)

生产支援功能 使用说明书(IP-110 篇) 生 产 支 援 功 能 使 用 说 明 书 (IP-110 篇 ) 目 录!. 前 言...1 1. 概 要...1 2. 基 本 操 作 方 法...3 2-1. 信 息 模 式 和 通 常 缝 制 模 式 的 变 换...3 2-2. 信 息 模 式...4 2-3. 通 常 缝 制 模 式...5 @. 设 定 篇...6 1. 首 次 使 用 生 产 支 援 功 能 时 的 设 定 方 法...6

More information

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语 新 汉 语 水 平 考 试 HSK 为 使 汉 语 水 平 考 试 (HSK) 更 好 地 服 务 于 汉 语 学 习 者, 中 国 国 家 汉 办 组 织 中 外 汉 语 教 学 语 言 学 心 理 学 和 教 育 测 量 学 等 领 域 的 专 家, 在 充 分 调 查 了 解 海 外 实 际 汉 语 教 学 情 况 的 基 础 上, 吸 收 原 有 HSK 的 优 点, 借 鉴 近 年 来 国

More information

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以 2015 年 考 研 数 学 二 考 试 大 纲 考 试 科 目 : 高 等 数 学 线 性 代 数 考 试 形 式 和 试 卷 结 构 一 试 卷 满 分 及 考 试 时 间 试 卷 满 分 为 150 分, 考 试 时 间 为 180 分 钟. 二 答 题 方 式 答 题 方 式 为 闭 卷 笔 试. 三 试 卷 内 容 结 构 高 等 教 学 约 78% 线 性 代 数 约 22% 四 试 卷

More information

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单 评 委 : 徐 岩 宇 - 个 人 清 标 评 审 明 细 表 评 审 因 素 序 号 投 标 单 位 清 标 评 审 1 深 圳 市 创 捷 科 技 有 限 合 格 2 四 川 川 大 智 胜 软 件 股 份 有 限 合 格 3 北 京 航 天 长 峰 科 技 工 业 集 团 有 限 公 司 合 格 4 深 圳 中 兴 力 维 技 术 有 限 合 格 5 深 圳 键 桥 通 讯 技 术 股 份 有

More information

<4D6963726F736F667420576F7264202D2032303133C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3>

<4D6963726F736F667420576F7264202D2032303133C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3> 工 程 硕 士 数 学 考 试 大 纲 与 要 求 ( 包 括 高 等 数 学 和 线 性 代 数 ) 一 函 数 极 限 与 连 续 第 一 部 分 : 高 等 数 学 考 试 内 容 函 数 的 概 念 及 表 示 法 函 数 的 有 界 性 单 调 性 周 期 性 和 奇 偶 性 复 合 函 数 反 函 数 分 段 函 数 和 隐 函 数 基 本 初 等 函 数 的 性 质 及 其 图 形 初

More information

珠江钢琴股东大会

珠江钢琴股东大会 证 券 代 码 :002678 证 券 简 称 : 珠 江 钢 琴 公 告 编 号 :2015-038 广 州 珠 江 钢 琴 集 团 股 份 有 限 公 司 2015 年 年 度 股 东 大 会 决 议 公 告 本 公 司 及 董 事 会 全 体 成 员 保 证 信 息 披 露 的 内 容 真 实 准 确 完 整, 没 有 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏 特 别 提 示 :

More information

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量 0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 3 无 轻 伤 责 任 事 故 目 标 30 及 事 无 重 大 质 量 工 作 过 失 故 管 无 其 他 一 般 责 任 事 故 理 在 公 司 文 明 环 境 创 建 中, 无 工 作 过 失 及 被 追 究 的

More information

抗 战 时 期 国 民 政 府 的 银 行 监 理 体 制 探 析 % # % % % ) % % # # + #, ) +, % % % % % % % %

抗 战 时 期 国 民 政 府 的 银 行 监 理 体 制 探 析 % # % % % ) % % # # + #, ) +, % % % % % % % % 抗 战 时 期 国 民 政 府 的 银 行 监 理 体 制 探 析 王 红 曼 抗 战 时 期 国 民 政 府 为 适 应 战 时 经 济 金 融 的 需 要 实 行 由 财 政 部 四 联 总 处 中 央 银 行 等 多 家 机 构 先 后 共 同 参 与 的 多 元 化 银 行 监 理 体 制 对 战 时 状 态 下 的 银 行 发 展 与 经 营 安 全 进 行 了 大 规 模 的 设 计 与

More information

<4D6963726F736F667420576F7264202D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE32303132C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378>

<4D6963726F736F667420576F7264202D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE32303132C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378> 上 海 德 载 中 怡 律 师 事 务 所 关 于 昂 华 ( 上 海 ) 自 动 化 工 程 股 份 有 限 公 司 二 〇 一 二 年 年 度 股 东 大 会 法 律 意 见 书 上 海 德 载 中 怡 律 师 事 务 所 上 海 市 银 城 中 路 168 号 上 海 银 行 大 厦 1705 室 (200120) 电 话 :8621-5012 2258 传 真 :8621-5012 2257

More information

电信系教学大纲的基本规范

电信系教学大纲的基本规范 兰 州 大 学 信 息 科 学 与 工 程 学 院 Java 语 言 程 序 设 计 实 验 教 学 大 纲 一. 课 程 基 本 信 息 : 实 验 课 程 编 号 : 课 程 名 称 : Java 语 言 程 序 设 计 实 验 课 课 程 性 质 : 非 单 列 实 验 课 课 程 类 型 : 必 做 课 程 负 责 人 : 马 俊 等 适 用 专 业 : 计 算 机 科 学 与 技 术 专

More information

2006年顺德区高中阶段学校招生录取分数线

2006年顺德区高中阶段学校招生录取分数线 2014 年 顺 德 区 高 中 阶 段 学 校 考 试 提 前 批 第 一 批 第 二 批 学 校 录 取 根 据 佛 山 市 办 提 供 的 考 生 数 据, 现 将 我 区 2014 年 高 中 阶 段 学 校 考 试 提 前 批 第 一 批 第 二 批 学 校 的 录 取 公 布 如 下 : 一 顺 德 一 中 录 取 分 第 1 志 愿, 总 分 585, 综 合 表 现 评 价 A, 考

More information

类 似 地, 又 可 定 义 变 下 限 的 定 积 分 : ( ). 与 ψ 统 称 为 变 限 积 分. f ( ) d f ( t) dt,, 注 在 变 限 积 分 (1) 与 () 中, 不 可 再 把 积 分 变 量 写 成 的 形 式 ( 例 如 ) 以 免 与 积 分 上 下 限 的

类 似 地, 又 可 定 义 变 下 限 的 定 积 分 : ( ). 与 ψ 统 称 为 变 限 积 分. f ( ) d f ( t) dt,, 注 在 变 限 积 分 (1) 与 () 中, 不 可 再 把 积 分 变 量 写 成 的 形 式 ( 例 如 ) 以 免 与 积 分 上 下 限 的 5 ( 一 ) 微 积 分 学 基 本 定 理 当 函 数 的 可 积 性 问 题 告 一 段 落, 并 对 定 积 分 的 性 质 有 了 足 够 的 认 识 之 后, 接 着 要 来 解 决 一 个 以 前 多 次 提 到 过 的 问 题 在 定 积 分 形 式 下 证 明 连 续 函 数 必 定 存 在 原 函 数. 一 变 限 积 分 与 原 函 数 的 存 在 性 设 f 在 [,] 上

More information

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用 Visual Basic 程 序 设 计 A 级 分 级 班 教 学 大 纲 ( 供 计 算 机 与 信 息 技 术 基 础 课 程 分 级 教 学 A 级 班 使 用 ) I 前 言 Visual Basic 程 序 设 计 课 程 是 一 门 计 算 机 语 言 基 础 课 程 通 过 对 该 课 程 的 学 习, 使 学 生 初 步 掌 握 Visual Basic 的 语 言 特 点, 掌

More information

全国艺术科学规划项目

全国艺术科学规划项目 全 国 艺 术 科 学 规 划 项 目 网 上 申 报 常 见 问 题 及 解 决 方 法 目 录 一 申 报 流 程...4 二 立 项 流 程...5 三 常 见 问 题 与 处 理...6 (1). 如 何 注 册...6 (2). 系 统 中 没 有 我 的 单 位 怎 么 办?...7 (3). 在 注 册 时 写 错 身 份 证 号 名 字 而 系 统 中 不 能 修 改 怎 么 办?...

More information

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决 上 海 市 公 共 卫 生 硕 士 专 业 学 位 论 文 基 本 要 求 和 评 价 指 标 体 系 ( 试 行 ) 上 海 市 学 位 委 员 会 办 公 室 二 O 一 二 年 三 月 一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创

More information

张 荣 芳 中 山 大 学 历 史 系 广 东 广 州 张 荣 芳 男 广 东 廉 江 人 中 山 大 学 历 史 系 教 授 博 士 生 导 师 我 们 要 打 破 以 前 学 术 界 上 的 一 切 偶 像 以 前 学 术 界 的 一 切 成 见 屏 除 我 们 要 实 地 搜 罗 材 料 到 民 众 中 寻 方 言 到 古 文 化 的 遗 址 去 发 掘 到 各 种 的 人 间 社 会 去

More information

ETF、分级基金规模、份额变化统计20130816

ETF、分级基金规模、份额变化统计20130816 ETF 分 级 基 金 规 模 份 额 变 化 统 计 截 至 上 周 末, 全 市 场 股 票 型 ETF 规 模 约 1451 亿, 份 额 约 1215 亿,ETF 总 份 额 及 规 模 的 周 变 动 值 分 别 为 -23-44 亿, 份 额 与 规 模 均 下 降 ; 分 级 基 金 规 模 约 438 亿, 份 额 572 亿, 总 份 额 及 规 模 的 周 变 动 值 分 别 为

More information

用节点法和网孔法进行电路分析

用节点法和网孔法进行电路分析 运 用 节 点 法 和 网 孔 法 进 行 电 路 分 析 众 所 周 知, 运 用 基 尔 霍 夫 定 律 和 欧 姆 定 律, 我 们 可 以 对 任 何 一 个 电 路 进 行 分 析, 以 确 定 其 运 行 条 件 ( 电 流 和 电 压 值 ) 一 般 电 路 分 析 的 难 点 在 于 用 最 少 的 联 立 方 程 描 述 电 路 的 运 行 特 性 在 这 一 讲 里, 我 们 将

More information

<4D6963726F736F667420576F7264202D2050485035C3E6CFF2B6D4CFF3A3A8B5DAC8FDD5C220C0E0CCD8D0D4A3A92E646F63>

<4D6963726F736F667420576F7264202D2050485035C3E6CFF2B6D4CFF3A3A8B5DAC8FDD5C220C0E0CCD8D0D4A3A92E646F63> 第 三 章 PHP5 面 向 对 象 高 级 类 特 性 这 一 周 来 正 好 白 天 没 课, 赶 出 来 这 章 宝 宝 出 生 将 近 一 个 月, 快 10 斤 重 了 宝 宝 快 张 大, 你 想 编 程 么? 宝 宝 妈 说, 做 这 个 行 业 太 累 了 刀 客 羽 朋 于 石 家 庄 2006-11-23 1 目 录 3.1 static 变 量 方 法...3 3.1.1 静

More information

马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # #

马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # # 马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则 马 俊 峰 在 社 会 公 正 问 题 的 大 讨 论 中 罗 尔 斯 诺 齐 克 哈 耶 克 麦 金 泰 尔 等 当 代 西 方 思 想 家 的 论 述 被 反 复 引 用 和 申 说 而 将 马 克 思 恩 格 斯 等 经 典 作 家 的 观 点 置 于 一 种 被 忽 视 甚 至 被 忘 却 的 状 态 形 成 这 种

More information

¹ º ¹ º 农 业 流 动 人 口 是 指 户 口 性 质 为 农 业 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个 月 及 以 上 的 流 动 人 口 非 农 流 动 人 口 是 指 户 口 性 质 为 非 农 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个

¹ º ¹ º 农 业 流 动 人 口 是 指 户 口 性 质 为 农 业 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个 月 及 以 上 的 流 动 人 口 非 农 流 动 人 口 是 指 户 口 性 质 为 非 农 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个 ¹ 改 革 开 放 年 来 人 口 流 动 规 模 持 续 增 加 对 我 国 社 会 经 济 的 持 续 发 展 起 到 了 重 要 作 用 为 全 面 了 解 我 国 流 动 人 口 生 存 状 况 准 确 把 握 流 动 人 口 发 展 规 律 和 趋 势 不 断 加 强 流 动 人 口 服 务 管 理 引 导 人 口 有 序 流 动 合 理 分 布 国 家 人 口 计 生 委 于 年 月 启

More information

世华财讯模拟操作手册

世华财讯模拟操作手册 第 一 部 分 : 股 票 模 拟 操 作 部 分 1. 登 录 与 主 界 面 1.1 登 录 学 生 在 桌 面 上, 打 开 世 华 文 件 夹, 直 接 双 击 文 件 夹 中 的 快 捷 图 标, 系 统 弹 出 世 华 财 讯 模 拟 股 票 交 易 系 统 ( 客 户 端 ) 窗 口, 如 图 1.1 所 示 图 1.1 请 输 入 登 录 名 称 及 密 码, 单 击 确 认 登 录

More information

4 进 入 交 互 区 设 置 的 组 件 管 理, 在 组 件 管 理 中, 教 师 可 以 选 择 课 程 空 间 中 的 所 有 组 件, 并 通 过 点 击 启 用 或 不 启 用 选 定 组 件 在 课 程 空 间 中 的 显 示 5 进 入 工 作 室 管 理 的 工 作 室 首 页,

4 进 入 交 互 区 设 置 的 组 件 管 理, 在 组 件 管 理 中, 教 师 可 以 选 择 课 程 空 间 中 的 所 有 组 件, 并 通 过 点 击 启 用 或 不 启 用 选 定 组 件 在 课 程 空 间 中 的 显 示 5 进 入 工 作 室 管 理 的 工 作 室 首 页, 网 络 教 育 新 平 台 教 师 使 用 简 易 手 册 一 登 录 教 师 工 作 室 1 打 开 西 南 科 技 大 学 网 络 教 育 教 学 教 务 新 平 台 主 页 面 :http://www.swust.net.cn/ 2 在 主 页 面 左 边 的 登 陆 区 中, 用 户 名 和 密 码 处 分 别 输 入 自 己 的 用 户 名 ( 教 师 ID 号 ) 和 密 码 ( 初 始

More information

教师上报成绩流程图

教师上报成绩流程图 教 务 管 理 系 统 使 用 说 明 学 生 端 用 户 1 在 校 内 任 何 一 台 连 接 校 园 网 的 计 算 机 上 登 录 教 务 处 主 页 教 务 处 主 页 地 址 : http://jw.stdu.edu.cn/homepage 随 后 点 击 按 钮 ( 见 下 图 所 示 ), 即 可 进 入 综 合 教 务 管 理 系 统 2 在 综 合 教 务 管 理 区 域 内 键

More information

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63>

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63> 浙 江 职 业 能 力 建 设 信 息 系 统 职 业 技 能 鉴 定 考 务 管 理 用 户 操 作 手 册 二 〇 一 五 年 八 月 目 录 0. 系 统 概 述...3 0.0. 简 要 概 述...3 0.1. 业 务 流 程 图... 3 1. 考 生 网 上 报 名... 3 1.0. 考 生 用 户 注 册 登 录... 5 1.1. 报 名 及 下 载 打 印 报 名 申 请 表...7

More information

一 开 放 性 的 政 策 与 法 规 二 两 岸 共 同 的 文 化 传 承 三 两 岸 高 校 各 自 具 有 专 业 优 势 远 见 杂 志 年 月 日

一 开 放 性 的 政 策 与 法 规 二 两 岸 共 同 的 文 化 传 承 三 两 岸 高 校 各 自 具 有 专 业 优 势 远 见 杂 志 年 月 日 河 北 师 范 大 学 学 报 新 时 期 海 峡 两 岸 高 校 开 放 招 生 问 题 探 讨 郑 若 玲 王 晓 勇 海 峡 两 岸 高 校 开 放 招 生 是 新 时 期 推 进 海 峡 两 岸 高 等 教 育 交 流 与 合 作 的 重 要 尝 试 系 统 梳 理 改 革 开 放 以 来 两 岸 招 生 政 策 与 就 学 人 数 发 展 变 化 的 历 史 进 程 可 发 现 促 进 两

More information

Template BR_Rec_2005.dot

Template BR_Rec_2005.dot ITU-R BT.1789 建 议 书 1 ITU-R BT.1789 建 议 书 在 分 组 视 频 传 输 中 利 用 传 输 误 码 信 息 重 建 接 收 视 频 的 方 法 (ITU-R 44/6 和 ITU-R 109/6 课 题 ) (2007 年 ) 范 围 本 建 议 书 对 业 务 提 供 商 重 建 接 收 视 频 的 方 法 做 了 详 细 介 绍, 以 便 利 用 传 输

More information

证券代码:000066 证券简称:长城电脑 公告编号:2014-000

证券代码:000066         证券简称:长城电脑        公告编号:2014-000 证 券 代 码 :000066 证 券 简 称 : 长 城 电 脑 公 告 编 号 :2016-092 中 国 长 城 计 算 机 深 圳 股 份 有 限 公 司 2016 年 度 第 三 次 临 时 股 东 大 会 决 议 公 告 本 公 司 及 其 董 事 会 全 体 成 员 保 证 信 息 披 露 内 容 的 真 实 准 确 完 整, 没 有 虚 假 记 载 误 导 性 陈 述 或 重 大 遗

More information

黄 金 原 油 总 持 仓 增 长, 同 比 增 幅 分 别 为 4.2% 和 4.1% 而 铜 白 银 以 及 玉 米 则 出 现 减 持, 减 持 同 比 减 少 分 别 为 9.4%,9.4% 以 及 6.5% 大 豆, 豆 粕 结 束 连 续 4 周 总 持 仓 量 增 长, 出 现 小 幅

黄 金 原 油 总 持 仓 增 长, 同 比 增 幅 分 别 为 4.2% 和 4.1% 而 铜 白 银 以 及 玉 米 则 出 现 减 持, 减 持 同 比 减 少 分 别 为 9.4%,9.4% 以 及 6.5% 大 豆, 豆 粕 结 束 连 续 4 周 总 持 仓 量 增 长, 出 现 小 幅 小 麦 净 多 持 仓 增 加, 豆 油 豆 粕 净 多 持 仓 减 少 美 国 CFTC 持 仓 报 告 部 门 : 市 场 研 究 与 开 发 部 类 型 : 量 化 策 略 周 报 日 期 :212 年 5 月 7 日 电 话 :592-5678753 网 址 :www.jinyouqh.com 主 要 内 容 : 根 据 美 国 CFTC 公 布 的 数 据, 本 报 告 中 的 11 个

More information

科 学 出 版 社 科 学 出 版 社 前 言 本 书 是 针 对 普 通 高 等 院 校 经 济 类 和 工 商 管 理 类 本 科 专 业 财 务 管 理 学 的 教 学 需 求, 结 合 教 育 部 经 济 管 理 类 本 科 财 务 管 理 学 课 程 教 学 大 纲 编 写 而 成 的 本 书 执 笔 者 都 是 长 期 工 作 在 财 务 管 理 教 学 一 线 的 专 业 教 师,

More information

Cybozu Garoon 3 管理员手册

Cybozu Garoon 3 管理员手册 附 录 D 数 据 的 输 入 样 式 数 据 的 种 类 和 输 入 字 符 的 值 等, 在 Garoon3 的 页 面 输 入 的 数 据 样 式 如 下 所 示 基 本 系 统 客 户 信 息 法 人 姓 名 字 符 串 ( 00 法 人 姓 名 ( 拼 音 ) 字 符 串 ( 00 图 标 (URL) 字 符 串 ( 255 应 用 程 序 新 名 称 字 符 串 ( 00 用 户 姓 名

More information

自 服 务 按 钮 无 法 访 问 新 系 统 的 自 服 务 页 面 因 此 建 议 用 户 从 信 网 中 心 (http://nc.tju.edu.cn) 主 页, 右 下 角 位 置 的 常 用 下 载, 或 校 园 网 用 户 自 服 务 (http://g.tju.edu.cn) 首 页

自 服 务 按 钮 无 法 访 问 新 系 统 的 自 服 务 页 面 因 此 建 议 用 户 从 信 网 中 心 (http://nc.tju.edu.cn) 主 页, 右 下 角 位 置 的 常 用 下 载, 或 校 园 网 用 户 自 服 务 (http://g.tju.edu.cn) 首 页 校 园 网 认 证 计 费 系 统 变 更 说 明 及 使 用 帮 助 为 提 高 校 园 网 的 可 靠 性 和 可 用 性, 提 升 用 户 的 上 网 体 验, 同 时 也 为 解 决 近 期 校 园 网 无 法 认 证 或 登 录 页 面 弹 出 缓 慢 的 问 题, 信 网 中 心 于 近 期 对 校 园 网 认 证 计 费 系 统 进 行 升 级 切 换 现 将 升 级 后 新 系 统

More information

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论 李 伟 李 庆 祥 江 志 红 使 用 插 值 方 法 对 已 经 过 质 量 控 制 和 均 一 化 的 年 月 年 月 中 国 全 部 基 本 基 准 站 气 温 资 料 逐 月 进 行 空 间 插 值 通 过 站 点 的 实 际 序 列 与 插 值 后 格 点 序 列 进 行 比 较 针 对 相 关 系 数 和 线 性 趋 势 等 多 个 量 来 检 验 方 法 对 气 候 资 料 插 值 的

More information

 编号:

 编号: 编 号 : 企 业 内 高 技 能 人 才 培 养 评 价 实 施 方 案 ( 仅 适 用 于 企 业 特 有 行 业 特 有 工 种 ) 实 施 单 位 ( 公 章 ) 申 报 日 期 年 _ 月 日 1 企 业 内 高 技 能 人 才 培 养 评 价 项 目 实 施 方 案 申 报 表 项 目 名 称 等 级 项 目 性 质 课 时 申 报 单 位 联 系 人 通 讯 地 址 电 话 手 机 电

More information

引言

引言 教 育 网 络 视 频 播 控 平 台 用 户 手 册 第 1 页 共 78 页 修 订 记 录 序 号 变 更 日 期 变 更 理 由 变 更 内 容 版 本 编 制 / 修 改 1 2015-1-5 初 稿 初 稿 1.0 代 盈 第 2 页 共 78 页 目 录 修 订 记 录... 2 目 录... 3 1. 引 言... 4 1.1 编 写 目 的... 4 1.2 项 目 背 景...

More information

目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化?... 11 五 如 何 向 教 师 发 送 通 知?... 13 六

目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化?... 11 五 如 何 向 教 师 发 送 通 知?... 13 六 一 刻 校 园 足 球 管 理 平 台 使 用 说 明 ( 学 校 管 理 员 版 ) 一 刻 软 件 科 技 有 限 公 司 目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化?... 11 五 如 何 向 教 师 发 送

More information

( 二 ) 现 行 统 一 高 考 制 度 不 利 于 培 养 人 的 创 新 精 神,,,,,,,,,,,,, [ ],,,,,,,,,,, :, ;,,,,,,? ( 三 ) 现 行 统 一 高 考 制 度 不 利 于 全 体 学 生 都 获 得 全 面 发 展,, [ ],,,,,,,,,,,

( 二 ) 现 行 统 一 高 考 制 度 不 利 于 培 养 人 的 创 新 精 神,,,,,,,,,,,,, [ ],,,,,,,,,,, :, ;,,,,,,? ( 三 ) 现 行 统 一 高 考 制 度 不 利 于 全 体 学 生 都 获 得 全 面 发 展,, [ ],,,,,,,,,,, ( ) ( )... 李 雪 岩, 龙 耀 (. 广 西 民 族 大 学 商 学 院, 广 西 南 宁 ;. 中 山 大 学 教 育 学 院, 广 东 广 州 ) : 高 等 教 育 是 专 业 教 育 高 考 是 为 高 等 教 育 服 务 的, 是 为 高 等 专 业 教 育 选 拔 有 专 业 培 养 潜 质 的 人 才 现 行 高 考 制 度 忽 略 专 业 潜 质 的 因 素, 过 份 强

More information

Excel basics

Excel basics Excel 基 础 知 识 Excel 是 功 能 强 大 的 电 子 表 格 和 数 据 分 析 应 用 程 序, 然 而 若 要 最 有 效 地 使 用 它, 必 须 首 先 了 解 这 些 基 础 知 识 本 教 程 介 绍 一 些 可 以 在 所 有 工 作 薄 中 使 用 的 任 务 和 功 能 开 设 之 前... 1 1. 创 建 新 空 白 工 作 薄... 2 2. 浏 览 Excel

More information

3 月 30 日 在 中 国 证 券 报 上 海 证 券 报 证 券 时 报 证 券 日 报 和 上 海 证 券 交 易 所 网 站 上 发 出 召 开 本 次 股 东 大 会 公 告, 该 公 告 中 载 明 了 召 开 股 东 大 会 的 日 期 网 络 投 票 的 方 式 时 间 以 及 审

3 月 30 日 在 中 国 证 券 报 上 海 证 券 报 证 券 时 报 证 券 日 报 和 上 海 证 券 交 易 所 网 站 上 发 出 召 开 本 次 股 东 大 会 公 告, 该 公 告 中 载 明 了 召 开 股 东 大 会 的 日 期 网 络 投 票 的 方 式 时 间 以 及 审 北 京 市 君 致 律 师 事 务 所 关 于 浪 潮 软 件 股 份 有 限 公 司 2015 年 度 股 东 大 会 的 法 律 意 见 书 致 : 浪 潮 软 件 股 份 有 限 公 司 北 京 市 君 致 律 师 事 务 所 ( 以 下 简 称 本 所 ) 受 浪 潮 软 件 股 份 有 限 公 司 ( 以 下 简 称 公 司 ) 的 委 托, 指 派 律 师 出 席 2016 年 4 月

More information

金 不 少 于 800 万 元, 净 资 产 不 少 于 960 万 元 ; (3) 近 五 年 独 立 承 担 过 单 项 合 同 额 不 少 于 1000 万 元 的 智 能 化 工 程 ( 设 计 或 施 工 或 设 计 施 工 一 体 ) 不 少 于 2 项 ; (4) 近 三 年 每 年

金 不 少 于 800 万 元, 净 资 产 不 少 于 960 万 元 ; (3) 近 五 年 独 立 承 担 过 单 项 合 同 额 不 少 于 1000 万 元 的 智 能 化 工 程 ( 设 计 或 施 工 或 设 计 施 工 一 体 ) 不 少 于 2 项 ; (4) 近 三 年 每 年 工 程 设 计 与 施 工 资 质 标 准 一 总 则 建 筑 智 能 化 工 程 设 计 与 施 工 资 质 标 准 ( 一 ) 为 了 加 强 对 从 事 建 筑 智 能 化 工 程 设 计 与 施 工 企 业 的 管 理, 维 护 建 筑 市 场 秩 序, 保 证 工 程 质 量 和 安 全, 促 进 行 业 健 康 发 展, 结 合 建 筑 智 能 化 工 程 的 特 点, 制 定 本 标

More information

2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位

2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位 新 股 网 上 网 下 发 行 实 施 细 则 问 答 上 交 所 2016-01-05 一 网 上 发 行 业 务 问 答 1. 本 次 修 改 的 主 要 内 容 是 什 么? 答 : 本 次 修 改 的 主 要 内 容 包 括 : 一 是 取 消 了 投 资 者 在 申 购 委 托 时 应 全 额 缴 纳 申 购 资 金 的 规 定, 明 确 了 投 资 者 应 根 据 最 终 确 定 的 发

More information

第二讲 数列

第二讲   数列 Togisu XueD Persolized Eduio Developme Ceer 高 考 中 不 等 式 问 题 的 解 决 方 法 通 润 达 久 王 力 前 言 : 近 年 来 不 等 式 问 题 正 越 来 越 多 的 出 现 在 调 研 题 和 高 考 试 题 中 而 且 大 多 出 现 在 江 苏 高 考 的 填 空 压 轴 题 中 是 高 考 考 察 的 重 点 和 难 点 由 于

More information

一、资质申请

一、资质申请 二 工 程 监 理 企 业 资 质 有 关 问 答 111 什 么 样 的 企 业 可 以 在 本 省 申 请 工 程 监 理 企 业 资 质? 答 : 在 鄂 取 得 法 人 营 业 执 照 或 合 伙 企 业 营 业 执 照 的 企 业, 都 可 依 法 向 工 商 注 册 所 在 省 或 市 建 设 行 政 主 管 部 门 行 政 审 批 部 门 申 请 工 程 监 理 企 业 资 质 取 得

More information

3 复 试 如 何 准 备 4 复 试 成 绩 计 算 5 复 试 比 例 6 复 试 类 型 7 怎 么 样 面 对 各 种 复 试 04 05

3 复 试 如 何 准 备 4 复 试 成 绩 计 算 5 复 试 比 例 6 复 试 类 型 7 怎 么 样 面 对 各 种 复 试 04 05 1 复 试 流 程 2 复 试 考 查 形 式 02 03 3 复 试 如 何 准 备 4 复 试 成 绩 计 算 5 复 试 比 例 6 复 试 类 型 7 怎 么 样 面 对 各 种 复 试 04 05 2 怎 样 给 导 师 留 下 良 好 的 第 一 印 象 把 握 进 门 时 机 1 面 试 中 穿 着 的 瞒 天 过 海 3 无 声 胜 有 声 的 肢 体 语 言 育 4 眼 睛 是 心

More information

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学 1 安 排 组 织 全 国 网 络 统 考 九 月 批 次 网 上 考 前 辅 导 第 一 学 期 第 一 周 统 考 考 前 半 个 月 2 下 发 全 国 网 络 统 考 九 月 批 次 准 考 证 第 一 学 期 第 一 周 导 出 下 半 年 成 人 本 科 学 士 学 位 英 语 统 一 考 试 报 考 3 信 息 第 一 学 期 第 一 周 4 教 学 计 划 和 考 试 计 划 上 网,

More information

工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 目 录 1 造 价 企 业 登 录... 1 2 企 业 基 本 信 息 查 看... 3 3 企 业 人 员 信 息 查 看... 4 4 企 业 基 本 信 息 操 作... 5 4.1 企 业 简 介... 5 4.2 企 业 章

工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 目 录 1 造 价 企 业 登 录... 1 2 企 业 基 本 信 息 查 看... 3 3 企 业 人 员 信 息 查 看... 4 4 企 业 基 本 信 息 操 作... 5 4.1 企 业 简 介... 5 4.2 企 业 章 工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 工 程 造 价 咨 询 企 业 管 理 系 统 ( 造 价 企 业 ) 用 户 手 册 工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 目 录 1 造 价 企 业 登 录... 1 2 企 业 基 本 信 息 查 看... 3 3 企 业 人 员 信 息 查 看... 4 4 企 业 基 本 信 息 操 作... 5 4.1

More information

上证指数

上证指数 上 证 与 修 正 方 法 一 ( 一 ) 计 算 公 式 1. 上 证 指 数 系 列 均 采 用 派 许 加 权 综 合 价 格 指 数 公 式 计 算 2. 上 证 180 指 数 上 证 50 指 数 等 以 成 份 股 的 调 整 股 本 数 为 权 数 进 行 加 权 计 算, 计 算 公 式 为 : 报 告 期 指 数 =( 报 告 期 样 本 股 的 调 整 市 值 / 基 期 )

More information

云信Linux SSH认证代理用户手册

云信Linux SSH认证代理用户手册 Windows 主 机 登 录 保 护 (RDP) 管 理 员 配 置 手 册 V1.0 云 信 事 业 部 飞 天 诚 信 科 技 股 份 有 限 公 司 www.cloudentify.com 章 节 目 录 第 1 章 管 理 平 台 配 置 说 明... 1 1.1 注 册... 1 1.2 登 录... 3 1.3 添 加 应 用... 4 1.4 添 加 用 户... 7 1.5 激 活

More information

操作手册

操作手册 企 业 网 上 银 行 使 用 手 册 ( 智 信 版 ) 中 国 农 业 银 行 股 份 有 限 公 司 重 庆 市 分 行 目 录 使 用 网 上 银 行 前 务 必 了 解 的 信 息... 3 1. 基 本 功 能... 3 2. 网 银 操 作 员... 3 3. 登 录 方 式... 3 4. 特 别 提 醒... 3 快 速 使 用 指 南... 4 1. 注 册 用 户... 4 2.

More information

2 2015 年 8 月 11 日, 公 司 召 开 2015 年 第 五 次 临 时 股 东 大 会, 审 议 通 过 了 关 于 公 司 <2015 年 股 票 期 权 激 励 计 划 ( 草 案 )> 及 其 摘 要 的 议 案 关 于 提 请 股 东 大 会 授 权 董 事 会 办 理 公

2 2015 年 8 月 11 日, 公 司 召 开 2015 年 第 五 次 临 时 股 东 大 会, 审 议 通 过 了 关 于 公 司 <2015 年 股 票 期 权 激 励 计 划 ( 草 案 )> 及 其 摘 要 的 议 案 关 于 提 请 股 东 大 会 授 权 董 事 会 办 理 公 证 券 代 码 :300017 证 券 简 称 : 网 宿 科 技 公 告 编 号 :2016-053 网 宿 科 技 股 份 有 限 公 司 关 于 调 整 公 司 2015 年 股 票 期 权 激 励 计 划 激 励 对 象 股 票 期 权 数 量 和 行 权 价 格 的 公 告 本 公 司 及 董 事 会 全 体 成 员 保 证 公 告 内 容 真 实 准 确 和 完 整, 没 有 虚 假 记

More information

上海证券交易所会议纪要

上海证券交易所会议纪要 附 件 上 海 市 场 首 次 公 开 发 行 股 票 网 下 发 行 实 施 细 则 第 一 章 总 则 第 一 条 为 规 范 拟 在 上 海 证 券 交 易 所 ( 以 下 简 称 上 交 所 ) 上 市 的 公 司 首 次 公 开 发 行 股 票 网 下 发 行 业 务, 提 高 首 次 公 开 发 行 股 票 网 下 申 购 及 资 金 结 算 效 率, 根 据 证 券 发 行 与 承 销

More information

论 华 兹 华 斯 塌 毁 的 茅 舍 的 主 题 与 叙 事 技 巧 的 统 一 李 增 王 云 在 塌 毁 的 茅 舍 一 诗 中 华 兹 华 斯 综 合 运 用 了 指 涉 主 题 的 叙 事 行 动 以 及 控 制 读 者 情 感 发 展 的 叙 事 节 奏 有 条 不 紊 地 引 导 读 者 经 历 了 心 灵 之 旅 最 终 与 叙 述 者 一 道 得 到 心 灵 的 训 诫 因 此 只

More information

目 录 办 公 OA 介 绍... 3 办 公 OA... 4 一. 收 件 箱 发 布 信 件 查 看 个 人 信 件... 7 二. 公 共 留 言 发 布 公 共 留 言 查 看 公 共 留 言... 9 三. 校 长 荐

目 录 办 公 OA 介 绍... 3 办 公 OA... 4 一. 收 件 箱 发 布 信 件 查 看 个 人 信 件... 7 二. 公 共 留 言 发 布 公 共 留 言 查 看 公 共 留 言... 9 三. 校 长 荐 思 库 网 Centricity2 目 录 办 公 OA 介 绍... 3 办 公 OA... 4 一. 收 件 箱... 4 1.1 发 布 信 件... 4 1.2 查 看 个 人 信 件... 7 二. 公 共 留 言... 8 2.1 发 布 公 共 留 言... 8 2.2 查 看 公 共 留 言... 9 三. 校 长 荐 读... 9 3.1 发 布 校 长 荐 读... 9 3.2

More information

反 学 校 文 化 与 阶 级 再 生 产 小 子 与 子 弟 之 比 较 周 潇 作 者 通 过 对 北 京 某 打 工 子 弟 学 校 的 田 野 调 查 后 发 现 在 农 民 工 子 弟 中 间 盛 行 着 类 似 学 做 工 中 所 描 述 的 工 人 阶 级 小 子 的 反 学 校 文 化 但 是 由 于 制 度 安 排 与 社 会 条 件 的 差 异 子 弟 与 小 子 的 反 学 校

More information

四川省农村义务教育学生

四川省农村义务教育学生 四 川 省 农 村 义 务 教 育 学 生 营 养 改 善 计 划 协 调 小 组 办 公 室 川 学 生 营 养 办 函 2015 7 号 关 于 填 报 2015 年 农 村 义 务 教 育 学 生 营 养 改 善 计 划 受 益 学 生 数 据 的 通 知 各 相 关 市 ( 州 ) 学 生 营 养 办 : 为 了 贯 彻 落 实 国 务 院 办 公 厅 关 于 实 施 农 村 义 务 教 育

More information

微 积 分 ( 二 ) 教 学 大 纲 2 (2010 版 ) 课 程 编 码 :110861 课 程 名 称 : 微 积 分 学 时 / 学 分 :36/2 先 修 课 程 : 初 等 数 学 立 体 几 何 平 面 解 析 几 何 微 积 分 ( 一 ) 适 用 专 业 : 人 力 资 源 管

微 积 分 ( 二 ) 教 学 大 纲 2 (2010 版 ) 课 程 编 码 :110861 课 程 名 称 : 微 积 分 学 时 / 学 分 :36/2 先 修 课 程 : 初 等 数 学 立 体 几 何 平 面 解 析 几 何 微 积 分 ( 一 ) 适 用 专 业 : 人 力 资 源 管 微 积 分 ( 二 ) 教 学 大 纲 2 (2010 版 ) 课 程 编 码 :110861 课 程 名 称 : 微 积 分 学 时 / 学 分 :36/2 先 修 课 程 : 初 等 数 学 立 体 几 何 平 面 解 析 几 何 微 积 分 ( 一 ) 适 用 专 业 : 人 力 资 源 管 理 等 专 业 开 课 教 研 室 : 大 学 数 学 教 研 室 执 笔 : 庄 乐 森 审 定 :

More information

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起 县 乡 两 级 的 政 治 体 制 改 革 如 何 建 立 民 主 的 合 作 新 体 制 县 乡 人 大 运 行 机 制 研 究 课 题 组 引 言 一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起 二 密 县 在 周 初 是 两 个 小 国 密 国 和 郐 国 三 密 县 的 第 一 任 县 令 卓 茂 四 明 清 时 代 的 密 县 二 从 集 中 的 动 员 体

More information

øÕªß∂À≤Ÿ◊˜ ÷≤·

øÕªß∂À≤Ÿ◊˜ ÷≤· 用 户 使 用 手 册 ( 版 本 号 :4.0) 目 录 第 一 章 软 件 安 装... 1 第 二 章 软 件 的 运 行... 4 第 三 章 新 建 文 档... 7 3.1 第 一 部 分 简 表... 7 3.1.1 基 本 信 息... 7 3.1.2 从 事 专 业 关 键 词... 8 3.1.3 教 育 经 历... 8 3.1.4 工 作 经 历... 9 3.1.5 教 育

More information

微软用户

微软用户 学 生 空 间 用 户 操 作 手 册 目 录 前 言... 2 一 登 录 学 生 空 间... 2 二 学 生 空 间 页 面... 3 三 功 能 区... 3 3.1 课 程 学 习... 5 3.2 学 务 管 理... 7 3.3 学 习 档 案... 7 3.4 资 料 管 理... 8 3.7 课 程 班 级... 11 3.8 我 要 评 价... 11 四 交 流 互 动...

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 48 第 3 章 格 式 设 置 第 3 章 格 式 设 置 需 要 掌 握 的 考 点 字 体 字 形 字 号 颜 色 下 划 线 和 其 他 效 果 的 设 置 ; 字 符 边 框 底 纹 间 距 缩 放 和 位 置 升 降 的 设 置 ; 段 落 的 缩 进 对 齐 方 式 行 间 距 段 间 距 和 段 落 的 边 框 与 底 纹 的 设 置 ; 项 目 符 号 和 编 号 的 设 置 与

More information

中 国 软 科 学 年 第 期!!!

中 国 软 科 学 年 第 期!!! 山 寨 模 式 的 形 成 机 理 及 其 对 组 织 创 新 的 启 示 山 寨 模 式 的 形 成 机 理 及 其 对 组 织 创 新 的 启 示 陶 厚 永 李 燕 萍 骆 振 心 武 汉 大 学 经 济 与 管 理 学 院 武 汉 大 学 中 国 产 学 研 合 作 问 题 研 究 中 心 湖 北 武 汉 北 京 大 学 经 济 研 究 所 光 华 天 成 博 士 后 工 作 站 北 京 本

More information

富士通将军空调机 诺可力®X系列 样本

富士通将军空调机 诺可力®X系列 样本 (URL) http://www.fujitsu-general.com/cn/mobi/support/how-to/split/inner/01_x-series/ 新 国 家 能 效 标 准 APF 级 闪 亮 登 场 完 全 取 代 柜 机, 使 空 间 更 宽 敞 完 全 取 代 柜 机, 使 空 间 更 宽 敞 节 能 运 行 凉 感 十 足 冷 风 不 直 接 吹 向 人 体 对 冷

More information

2.5 选 举 陈 晓 非 女 士 为 第 六 届 董 事 会 董 事 候 选 人 的 议 案 ; 2.6 选 举 卢 婕 女 士 为 第 六 届 董 事 会 董 事 候 选 人 的 议 案 ; 2.7 选 举 张 文 君 先 生 为 第 六 届 董 事 会 独 立 董 事 候 选 人 的 议 案

2.5 选 举 陈 晓 非 女 士 为 第 六 届 董 事 会 董 事 候 选 人 的 议 案 ; 2.6 选 举 卢 婕 女 士 为 第 六 届 董 事 会 董 事 候 选 人 的 议 案 ; 2.7 选 举 张 文 君 先 生 为 第 六 届 董 事 会 独 立 董 事 候 选 人 的 议 案 证 券 代 码 :000982 证 券 简 称 : 中 银 绒 业 公 告 编 号 :2014-83 宁 夏 中 银 绒 业 股 份 有 限 公 司 董 事 会 关 于 召 开 2014 年 第 五 次 临 时 股 东 大 会 网 络 投 票 流 程 的 提 示 公 告 本 公 司 及 董 事 会 全 体 成 员 保 证 信 息 披 露 的 内 容 真 实 准 确 完 整, 没 有 虚 假 记 载

More information

火车浏览器脚本制作教程

火车浏览器脚本制作教程 火 车 浏 览 器 脚 本 管 理 器 操 作 文 档 火 车 浏 览 器 的 脚 本 管 理 器 是 生 成 具 体 执 行 的 各 种 脚 本, 然 后 由 项 目 管 理 器 进 行 调 用 脚 本 管 理 器 中 定 义 了 执 行 脚 本 的 细 节 和 流 程, 项 目 管 理 器 可 以 通 过 修 改 脚 本 运 行 时 的 参 数 变 量, 实 现 批 量, 自 动 化 的 运 行

More information

<433A5C55736572735C6B73625C4465736B746F705CB9FABCCAD6D0D2BDD2A9D7A8D2B5B8DFBCB6BCBCCAF5D6B0B3C6C6C0C9F3C9EAC7EBD6B8C4CFA3A832303136CDA8D3C3B0E6A3A92E646F63>

<433A5C55736572735C6B73625C4465736B746F705CB9FABCCAD6D0D2BDD2A9D7A8D2B5B8DFBCB6BCBCCAF5D6B0B3C6C6C0C9F3C9EAC7EBD6B8C4CFA3A832303136CDA8D3C3B0E6A3A92E646F63> 附 件 1 国 际 中 药 专 业 高 级 技 术 职 称 评 审 条 件 及 报 名 材 料 一 系 列 ( 一 ) 中 1 高 级 专 科 ( 副 ) 高 级 专 科 ( 副 ) 1 取 得 中 专 科 职 称 后, 独 立 从 事 中 临 床 实 践 5 年 以 上 2 取 得 中 博 士 学 位 后, 临 床 实 践 2 年 以 上 3 取 得 中 硕 士 学 位 后, 临 床 实 践 7

More information

1600 1000 40 50 2030 2000 采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2

1600 1000 40 50 2030 2000 采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2 简 略 版 本 :2015 3 10 2016 2021 全 球 卫 生 部 门 病 毒 性 肝 炎 战 略 2016 2021 2015 3 12 2012 2010 2014 2015 2016 2021 140 55% 35% 5 15% 5 20% 2.4 1.3 1.5 1 1600 1000 40 50 2030 2000 采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路

More information

超 级 玛 丽 JAVA 小 游 戏 测 试 报 告 1. 导 言 1.1 编 写 目 的 该 文 档 的 目 的 是 描 述 超 级 玛 丽 JAVA 小 游 戏 的 系 统 测 试 的 总 结 报 告, 其 主 要 内 容 包 括 : 系 统 环 境 的 介 绍 功 能 的 实 现 的 测 试

超 级 玛 丽 JAVA 小 游 戏 测 试 报 告 1. 导 言 1.1 编 写 目 的 该 文 档 的 目 的 是 描 述 超 级 玛 丽 JAVA 小 游 戏 的 系 统 测 试 的 总 结 报 告, 其 主 要 内 容 包 括 : 系 统 环 境 的 介 绍 功 能 的 实 现 的 测 试 超 级 玛 丽 游 戏 测 试 报 告 目 录 1. 导 言... 2 1.1 编 写 目 的... 2 1.2 项 目 范 围... 2 1.3 参 考 资 料... 2 1.4 缩 写 说 明... 2 1.5 术 语 定 义... 2 1.6 版 本 更 新 信 息... 3 2. 测 试 设 计... 3 2.1 测 试 要 点... 3 2.2 测 试 时 间 地 点 人 员... 3 2.3

More information

·岗位设置管理流程

·岗位设置管理流程 实 施 岗 位 设 置 岗 位 设 置 编 码 受 控 状 态 执 行 心 门 行 政 人 力 资 控 制 门 总 经 办 源 各 职 能 门 行 政 人 力 资 源 总 经 办 总 经 理 根 据 公 司 发 展 战 略 进 行 职 能 分 解 和 机 构 设 置 工 作 分 析 根 据 人 力 资 源 规 划 确 定 编 制 意 见 职 责 划 分 与 岗 位 设 置 制 作 职 务 说 明 书

More information

南 昌 大 学 学 报 人 文 社 会 科 学 版 唐 美 丽 张 保 和 南 京 信 息 工 程 大 学 公 共 管 理 学 院 江 苏 南 京 南 京 师 范 大 学 公 共 管 理 学 院 江 苏 南 京 井 冈 山 大 学 政 法 学 院 江 西 吉 安 伯 恩 施 坦 以 资 本 主 义 经 济 发 展 中 的 新 材 料 为 借 口 声 称 垄 断 组 织 和 信 用 制 度 一 样 可

More information

一 六 年 级 下 册 教 科 书 总 体 说 明 ( 一 ) 教 学 内 容 本 册 教 科 书 一 共 安 排 了 5 个 教 学 单 元, 其 中 前 4 个 单 元 为 新 知 识, 第 五 单 元 是 对 整 个 小 学 阶 段 所 学 数 学 知 识 系 统 的 整 理 和 复 习

一 六 年 级 下 册 教 科 书 总 体 说 明 ( 一 ) 教 学 内 容 本 册 教 科 书 一 共 安 排 了 5 个 教 学 单 元, 其 中 前 4 个 单 元 为 新 知 识, 第 五 单 元 是 对 整 个 小 学 阶 段 所 学 数 学 知 识 系 统 的 整 理 和 复 习 西 南 师 大 版 小 学 数 学 六 年 级 下 册 教 科 书 分 析 及 教 学 建 议 重 庆 市 教 育 科 学 研 究 院 李 光 树 一 六 年 级 下 册 教 科 书 总 体 说 明 ( 一 ) 教 学 内 容 本 册 教 科 书 一 共 安 排 了 5 个 教 学 单 元, 其 中 前 4 个 单 元 为 新 知 识, 第 五 单 元 是 对 整 个 小 学 阶 段 所 学 数 学

More information

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc - 1 - - 2 - 附 件 全 国 建 筑 市 场 注 册 执 业 人 员 不 良 记 录 认 定 标 准 ( 试 行 ) 说 明 为 了 完 善 建 筑 市 场 注 册 执 业 人 员 诚 信 体 系 建 设, 规 范 执 业 和 市 场 秩 序, 依 据 相 关 法 律 法 规 和 部 门 规 章, 根 据 各 行 业 特 点, 我 部 制 订 了 全 国 建 筑 市 场 注 册 执 业 人

More information

三门峡市质量技术监督局清单公示

三门峡市质量技术监督局清单公示 附 件 4 卢 氏 县 财 政 局 行 政 职 权 运 行 流 程 图 一 行 政 处 罚 类 1. 第 1 项 一 般 程 序 流 程 图 案 件 来 源 初 步 确 认 违 法 事 实, 责 令 停 止 违 法 行 为 县 财 政 局 立 案 审 批 综 合 股 登 记 立 案 调 查 取 证 不 予 立 案 综 合 股 撰 写 调 查 终 结 报 告 移 送 有 关 部 门 综 合 股 提 出

More information

对 当 前 小 说 艺 术 倾 向 的 分 析 陈 晓 明 人 民 性 是 一 个 现 代 性 概 念 近 年 来 艺 术 上 趋 于 成 熟 的 一 批 作 家 倾 向 于 表 现 底 层 民 众 苦 难 的 生 活 这 使 他 们 的 作 品 具 有 现 实 主 义 的 显 著 特 征 在 对 苦 难 生 活 的 把 握 中 对 人 物 性 格 和 命 运 的 展 示 中 这 些 小 说 在 人

More information

乐视云视频发行平台 操作手册 V1.1

乐视云视频发行平台            操作手册 V1.1 乐 视 云 视 频 发 行 平 台 操 作 手 册 V1.1 1 登 录 视 频 发 行 用 户 可 通 过 浏 览 器 访 问 http://vrp.lecloud.com/ 即 可 快 速 进 入 视 频 发 行 一 内 容 商 平 台 : 1 首 页 在 首 页 中, 您 可 以 查 看 视 频 播 放 总 数 被 订 购 商 品 数 订 单 总 数 拥 有 商 品 拥 有 内 容 默 认 查

More information

i 1) 系 统 运 作 前 设 定 *1. [2.1 网 页 主 机 名 称 设 定 ] -- 设 定 校 务 系 统 的 主 机 IP 地 址, 以 供 其 他 个 人 电 脑 连 接 及 使 用 该 系 统 *2. [2.3.1 输 入 / 修 改 学 校 资 料 ] -- 输 入 系 统 使

i 1) 系 统 运 作 前 设 定 *1. [2.1 网 页 主 机 名 称 设 定 ] -- 设 定 校 务 系 统 的 主 机 IP 地 址, 以 供 其 他 个 人 电 脑 连 接 及 使 用 该 系 统 *2. [2.3.1 输 入 / 修 改 学 校 资 料 ] -- 输 入 系 统 使 校 务 系 统 使 用 步 骤 说 明 手 册 简 介 此 手 册 是 配 合 校 务 系 统 使 用 手 册 编 辑 的, 因 此 必 须 同 时 参 考 校 务 系 统 使 用 手 册, 以 获 知 更 详 细 的 使 用 说 明 此 手 册 主 要 记 载 几 项 较 为 复 杂 事 务 的 处 理 步 骤 及 说 明, 以 让 使 用 者 更 容 易 掌 握 及 使 用 校 务 系 统 其

More information

抗 日 战 争 研 究 年 第 期

抗 日 战 争 研 究 年 第 期 田 子 渝 武 汉 抗 战 时 期 是 国 共 第 二 次 合 作 的 最 好 时 期 在 国 共 合 作 的 基 础 上 出 现 了 抗 日 救 亡 共 御 外 侮 的 局 面 这 个 大 好 局 面 的 出 现 与 中 共 长 江 局 的 丰 功 伟 绩 是 分 不 开 的 但 长 期 以 来 由 于 有 一 个 王 明 的 右 倾 错 误 直 接 影 响 了 对 它 的 全 面 科 学 准 确

More information

学位论文文档编辑与提交

学位论文文档编辑与提交 学 位 论 文 文 档 编 辑 与 提 交 江 苏 师 范 大 学 图 书 馆 2015.11.05 一 WORD 文 档 编 辑 二 论 文 提 交 及 注 意 事 项 一 文 档 编 辑 word 文 档 的 合 成 1 通 过 添 加 分 节 符 创 建 文 档 章 节 2 在 章 节 中 创 建 不 同 的 页 眉 和 页 脚 3 目 录 创 建 一 文 档 编 辑 word 文 档 的 合

More information

课程类 别

课程类 别 美 声 演 唱 方 向 培 养 方 案 一 培 养 目 标 本 方 向 要 求 学 生 德 智 体 美 全 面 发 展, 培 养 能 在 文 艺 团 体 从 事 声 乐 演 唱 及 能 在 艺 术 院 校 从 事 本 方 向 教 学 的 高 级 门 人 才 二 培 养 规 格 本 方 向 学 生 应 系 统 掌 握 声 乐 演 唱 方 面 的 理 论 和 技 能, 具 备 较 高 的 声 乐 演 唱

More information

<4D F736F F D D323630D6D0B9FAD3A6B6D4C6F8BAF2B1E4BBAFB5C4D5FEB2DFD3EBD0D0B6AF C4EAB6C8B1A8B8E6>

<4D F736F F D D323630D6D0B9FAD3A6B6D4C6F8BAF2B1E4BBAFB5C4D5FEB2DFD3EBD0D0B6AF C4EAB6C8B1A8B8E6> 中 国 应 对 气 候 变 化 的 政 策 与 行 动 2013 年 度 报 告 国 家 发 展 和 改 革 委 员 会 二 〇 一 三 年 十 一 月 100% 再 生 纸 资 源 目 录 前 言... 1 一 应 对 气 候 变 化 面 临 的 形 势... 3 二 完 善 顶 层 设 计 和 体 制 机 制... 4 三 减 缓 气 候 变 化... 8 四 适 应 气 候 变 化... 20

More information

<4D6963726F736F667420576F7264202D20B3D6B2D6CFDEB6EEB1EDB8F1D7EED6D52E646F63>

<4D6963726F736F667420576F7264202D20B3D6B2D6CFDEB6EEB1EDB8F1D7EED6D52E646F63> 国 内 各 期 货 交 易 所 关 于 合 约 限 仓 方 面 的 规 定 上 海 期 货 交 易 所 经 纪 会 员 非 经 纪 会 员 和 客 户 的 期 货 合 约 在 不 同 时 期 限 仓 的 具 体 比 例 和 数 额 如 下 : ( 单 位 : ) 合 约 挂 牌 至 交 割 月 前 第 二 月 的 最 后 一 个 交 易 日 交 割 月 前 第 一 月 交 割 月 份 某 一 期 货

More information