Android-应用开发课件.ppt_第1页
Android-应用开发课件.ppt_第2页
Android-应用开发课件.ppt_第3页
Android-应用开发课件.ppt_第4页
Android-应用开发课件.ppt_第5页
已阅读5页,还剩223页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android应用开发课程 贵州职业技术学院 1 手机OS简介 手机简介 1902年 由一个 内森 斯塔布菲尔德 的美国人在肯塔基州默里的乡下住宅内制成了第一个无线电话装置 1973年由摩托罗拉公司工程技术员 马丁 库帕 发明了民用的手机 所以 马丁 库帕 被称为现代手机之父 手机的发展 手机网络的发展1G网络 模拟通讯网络 2G网络 数字通讯网络 3G网络 处理图象 视频流 方便的访问国际互联网 智能手机要求 有自己的OS 1 用户可以GSM或CDMA无线网络的方式接入互联网 2 可以具备PDA设备的诸多功能 例如 日程管理 多媒体播放等功能 3 具备独立的手机操作系统 可以由用户根据自己的需要任意扩充更多的第三方应用程序 手机的OS Symbian操作系统 PLAM操作系统 BlackBerry操作系统 ios操作系统 WindowsMobile操作系统 Linux操作系统 Android操作系统 Android简介 Android一词本意是指 机器人 是Google在2007年11月5日公布的基亍Linux内核的操作系统 早期由Google开发 后由开放手机联盟开发 市场上第一款支持Android的手机是在2008年9月22日发布的由HTC制造幵由T Mobile供应的G1 Android市场份额 Android开发人员薪资调查 特点1 开放的平台应用程序相互平等 其组件也可以更换 Dalvik虚拟机针对移动设备进行了优化 优化的图形能力支持2D 3D图形 OpenGLES1 0 集成了基于开源WebKit引掣的浏览器 SQLite作为结构化数据存储 特点2 多媒体支持多种音频 视频格式 支持蓝牙Bluetooth 3G和WiFi支持照相机 GPS 指南针和加速度仪等传感器硬件依托Java丰富的编程资源丰富的开发环境 包括模拟机 调试工具 内存运行检测 以及为EclipseIDE所写的插件 IOS和android的比较 AndoidRuntime 应用开发语言 JavaDalvik虚拟机指令 DalvikExcutableJava标准库把java代码编译为Dalvik可执行文件 dexformat 1 应用程序层Android平台不仅仅是操作系统 也包含了许多应用程序 诸如SMS短信客户端程序 电话拨号程序等应用程序 这些应用程序都是用Java语言编写的 并且这些应用程序都是可以被开发人员开发的其他应用程序所替换2 应用程序框架层应用程序框架层是我们从事Android开发的基础 很多核心应用程序也是通过这一层来实现其核心功能的 该层简化了组件的重用 开发人员可以直接使用其提供的组件来进行快速的应用程序开发 也可以通过继承而实现个性化的拓展 3 系统运行库层系统运行库层可以分成两部分 分别是系统库和Android运行时 android虚拟机 4 Linux内核层Android是基于Linux2 6内核 其核心系统服务如安全性 内存管理 进程管理 网路协议以及驱动模型都依赖于Linux内核 开发环境 JDKIDE EclipseEclipseplug in ADTSoftwareDevelopmentKit SDK AndroidEmulatorDebuger AndroidSDK AndroidSDK包括一系列的开发工具以帮助开发者开发和调试应用程序 包含以下几部分 Android应用程序框架API Android模拟器 辅助工具 ADB 调试工具 AAPT 生成APK DX 编译工具 DDMS 调试窗口 Android开发文档 GettingStart 开发环境搭建 安装Android的ADT和JDK即可下载AndroidSDK 开发环境搭建 下载JDK 第一个Android应用程序 打开eclipse 新建android工程打开Eclipse 新建项目 点击File New Project 在项目列表中展开Android目录 选择AndroidProject 如图 应用程序名称 项目名称 包名称 Androidsdk的版本要求及其他 然后一路Next 就可以新建一个项目 新建android模拟器 打开Eclipse 新建项目 点击Window androidvirtudeviceManager 在项目列表中展开Android目录 选择AndroidProject 新建android模拟器 在项目上右键点击runas Androidapplication 如下图 Android程序架构 src java原代码存放目录gen 自动生成目录gen目录中存放所有由Android开发工具自动生成的文件 目录中最重要的就是R java文件 这个文件由Android开发工具自动产生的 Android开发工具会自动根据你放入res目录的xml界面文件 图标与常量 同步更新修改R java文件 正因为R java文件是由开发工具自动生成的 所以我们应避免手工修改R java R java在应用中起到了字典的作用 它包含了界面 图标 常量等各种资源的id 通过R java 应用可以很方便地找到对应资源 另外编绎器也会检查R java列表中的资源是否被使用到 没有被使用到的资源不会编绎进软件中 这样可以减少应用在手机占用的空间 res 资源 Resource 目录在这个目录中我们可以存放应用使用到的各种资源 如xml界面文件 图片或数据 AndroidManifest xml功能清单文件这个文件列出了应用程序所提供的功能 在这个文件中 你可以指定应用程序使用到的服务 如电话服务 互联网服务 短信服务 GPS服务等等 另外当你新添加一个Activity的时候 也需要在这个文件中进行相应配置 只有配置好后 才能调用此Activity default properties项目环境信息 一般是不需要修改此文件 R java publicfinalclassR publicstaticfinalclassattr publicstaticfinalclassdrawable publicstaticfinalinticon 0 x7f020000 publicstaticfinalclassid publicstaticfinalintlayout 0 x7f050000 publicstaticfinalclasslayout publicstaticfinalintmain 0 x7f030000 publicstaticfinalclassstring publicstaticfinalintapp name 0 x7f040001 publicstaticfinalinthello 0 x7f040000 Activity importandroid app Activity importandroid os Bundle publicclassHelloActivityextendsActivity Calledwhentheactivityisfirstcreated OverridepublicvoidonCreate BundlesavedInstanceState super onCreate savedInstanceState setContentView R layout main Activity的运用 Activity的主要作用创建Activity的方法在AndroidManifest xml文件中注册Activity方法在Activity中添加控件的方法 Activity是android应用程序的用户接口 一个Activity中可以放置很多控件 Activity也可以理解为控件的容器 如图 1 一个Activity就是一个类 并且这个类要继承于Activity 2 重写onCreate方法 publicvoidonCreate BundlesavedInstanceState super onCreate savedInstanceState setContentView R layout main 3 每一个Activity都需要在AndroidMainfest xml中文件当中进行配置4 为Activity添加必要的控件 同过findViewById 控件的id 可以得到所要显示的控件 例如 取得TextView的控件TextViewtextView TextView findViewById R id Test 布局文件 重要属性 android layout width宽度android layout height高度fill parent wrap contentandroid id唯一标识用于在程序或配置文件中引用 资源文件 HelloWorld HelloActivity Hello应用 资源文件 除string之外 还可以定义color dimen 大小 string array 子标记为item 每种资源都需要定义name属性资源文件放在res values目录下 可以是单独的文件 也可以分类放在不同文件中 文件名任意 其他资源 任意XML文件 放入res xml目录 程序中用R xml 文件名访问原始资源 放入res raw目录 程序中用Resources对象 openRawResource R raw XXX 获得一个输入流 原始资源不会被编译为二进制资产 放入assets目录 系统不会自动生成id 程序中用Resources对象 getAssets open 文件名 获得输入流 资源目录中不能随意创建子目录 资产目录则可以随意创建子目录 引用资源 程序中 利用R 资源类型 资源名访问如 R layout mainR id abcXML文件中 利用 资源类型 资源名访问如 id abc而 id abc表示添加一个id资源 abc Log android util Log类的静态方法来查找错误和打印系统日志消息 Log常用的方法有以下5个 Log v Stringtag Stringmsg VERBOSE Log d Stringtag Stringmsg DEBUG Log i Stringtag Stringmsg INFO Log w Stringtag Stringmsg WARN Log e Stringtag Stringmsg ERROR Log 当利用DDMS进行调试时 它们的区别并不大 只是显示的颜色不同 根据规范建议Log v Log d信息应当只存在于开发过程中 最终版本只可以包含Log i Log w Log e这三种日志信息 DDMS 全称是DalvikDebugMonitorService DDMS为IDE和emultor及真正的android设备架起来了一座桥梁 AndroidDDMS将捕捉到终端的ID 并通过adb建立调试器 从而实现发送指令到测试终端的目的 Activity Activity是什么 Activity是用户唯一可以看得到的东西 也可以理解为就是一个界面 几乎所有的activity都与用户进行交互 所以Activity主要负责的就是创建显示窗口 你可以在这些窗口里使用setContentView View 来显示你自己的UI 多个Activity之间的关系 ActivityA ActivityB startActivity Intent 启动新的Activity 不传递参数 在一个Activity中可以使用系统提供的startActivity Intentintent 方法打开新的Activity 在打开新的Activity前 你可以决定是否为新的Activity传递参数 第一种 打开新的Activity 不传递参数publicclassMainActivityextendsActivity protectedvoidonCreate BundlesavedInstanceState Buttonbutton Button this findViewById R id button button setOnClickListener newView OnClickListener 点击该按钮会打开一个新的ActivitypublicvoidonClick Viewv 新建一个显式意图 第一个参数为当前Activity类对象 第二个参数为你要打开的Activity类startActivity newIntent MainActivity this NewActivity class 启动新的Activity 并传递参数 publicclassMainActivityextendsActivity protectedvoidonCreate BundlesavedInstanceState button setOnClickListener newView OnClickListener 点击该按钮会打开一个新的ActivitypublicvoidonClick Viewv Intentintent newIntent MainActivity this NewActivity class Bundlebundle newBundle 该类用作携带数据bundle putString name tom bundle putInt age 4 intent putExtras bundle 附带上额外的数据startActivity intent 在新的Activity中接收前面Activity传递过来的参数 publicclassNewActivityextendsActivity protectedvoidonCreate BundlesavedInstanceState Bundlebundle this getIntent getExtras Stringname bundle getString name intage bundle getInt age 为Intent附加数据的两种写法 第一种写法 用于批量添加数据到Intent Intentintent newIntent Bundlebundle newBundle bundle putString name tom intent putExtras bundle 第二种写法 这种写法的作用等价于上面的写法 只不过这种写法是把数据一个个地添加进Intent 这种写法使用起来比较方便 而且只需要编写少量的代码 Intentintent newIntent intent putExtra name tom Intent提供了各种常用类型重载后的putExtra 方法 如 putExtra Stringname Stringvalue putExtra Stringname longvalue 在putExtra 方法内部会判断当前Intent对象内部是否已经存在一个Bundle对象 如果不存在就会新建Bundle对象 以后调用putExtra 方法传入的值都会存放于该Bundle对象 下面是Intent的putExtra Stringname Stringvalue 方法代码片断 publicclassIntentimplementsParcelable privateBundlemExtras publicIntentputExtra Stringname Stringvalue if mExtras null mExtras newBundle mExtras putString name value returnthis 得到Activity返回的数据 如果你想在Activity中得到新打开Activity关闭后返回的数据 你需要使用系统提供的startActivityForResult Intentintent intrequestCode 方法打开新的Activity 新的Activity关闭后会向前面的Activity传回数据 为了得到传回的数据 你必须在前面的Activity中重写onActivityResult intrequestCode intresultCode Intentdata 方法 publicclassMainActivityextendsActivity OverrideprotectedvoidonCreate BundlesavedInstanceState Buttonbutton Button this findViewById R id button button setOnClickListener newView OnClickListener publicvoidonClick Viewv 第二个参数为请求码 可以根据业务需求自己编号startActivityForResult newIntent MainActivity this NewActivity class 1 第一个参数为请求码 即调用startActivityForResult 传递过去的值第二个参数为结果码 OverrideprotectedvoidonActivityResult intrequestCode intresultCode Intentdata Stringresult data getExtras getString result 得到新Activity关闭后返回的数据 当新Activity关闭后 新Activity返回的数据通过Intent进行传递 android平台会调用前面Activity的onActivityResult 方法 把存放了返回数据的Intent作为第三个输入参数传入 在onActivityResult 方法中使用第三个输入参数可以取出新Activity返回的数据 得到Activity返回的数据 使用startActivityForResult Intentintent intrequestCode 方法打开新的Activity 新Activity关闭前需要向前面的Activity返回数据需要使用系统提供的setResult intresultCode Intentdata 方法实现 publicclassNewActivityextendsActivity OverrideprotectedvoidonCreate BundlesavedInstanceState button setOnClickListener newView OnClickListener publicvoidonClick Viewv Intentintent newIntent 数据是使用Intent返回intent putExtra result hello 把返回数据存入IntentNewActivity this setResult RESULT OK intent 设置返回数据NewActivity this finish 关闭Activity setResult 方法的第一个参数值可以根据业务需要自己定义 上面代码中使用到的RESULT OK是系统Activity类定义的一个常量 值为 1 Activity生命周期 重要数据都写在onPause 里面 最后一个安全生命周期方法 Activity生命周期分类 完整生命周期 onCreate onDestroy 可视生命周期 onStart onStop 前台生命周期 onResume onPause Activity生命周期 onCreate Bundlebundle onStart onRestart onResume onPause onStop onDestory 以上七个生命周期函数 是Activity处于不同状态时调用不同的函数 启动第一个Activity FirstActivity onCreate onStart onResume 从第一个Activity启动第二个Activity FirstActivity onPauseSecondActivity onCreate onStart onResumeFirstActivity onStop 第二个Activity返回 SecondActivityonPause FirstActivityonRestart onStart onResume SecondActivityonStop onDestroy Task的概念 压栈弹栈 第一个Activity 第二个Activity 第三个Activity Task运行过程 一 应用程序启动后 运行第一个Activity之后 该Activity对象被压入到Stack之中 FirstActivity Task运行过程 二 点击按钮后启动第二个Activity 该对象被压入到Stack中 FirstActivity secondActivity Task运行过程 三 点击第二个Activity按钮启动 该对象被压入到Stack中 FirstActivity secondActivity threeActivity 当点击第三Activity中的按钮启动之后 启动第四个Activity FirstActivity secondActivity threeActivity SMSActivity 点击Back之后 这时SMSActivity从堆栈中弹出 后面的对象都是一样 所有的Activity在同一个Task 被组织称同一个单元 FirstActivity secondActivity threeActivity SMSActivity AndroidUI设计 View和ViewGroup View 所有组件的父类ViewGroup View的子类所有容器的父类与Swing不同 容器负责组件的布局 不再需要特定的布局管理器两种声明布局的方式 声明布局的两种方式 在XML文件中申明UI组件Android提供了基于xml的节点元素 这些节点元素对应代码中的UI组件 优点 直观简洁 可读性强 实现了UI界面和逻辑代码的分离 在代码中构造组件 优点 动态布局 缺点 抽象模糊 可读性比较差 耦合性强 数据的表现和逻辑错杂很难 XML布局文件 Java代码 LinearLayoutl LinearLayout this findViewById R id layout TextViewtv newTextView this tv setLayoutParams newLinearLayout LayoutParams LinearLayout LayoutParams FILL PARENT LinearLayout LayoutParams WRAP CONTENT tv setText hello l addView tv 布局管理器 LinearLayoutTableLayoutRelativeLayoutFrameLayoutAbsoluteLayout LinearLayout LinearLayout是一种Android中最常用的布局 它将自己包含的子元素按照一个方向进行排列 方向有两种 水平Android orientation horizontal 子元素从左到右一个一个的水平排列 竖直Android orientation vertical 子元素从上到下一个接着一个的竖直排列 TableLayout TableLayout是一种表格式的布局 这种布局会把包含的元素以行和列的形式进行排列 表格的列数为每一行的最大列数 当然表格里边的单元格是可以为空 使用TableRow代表一行 每行可以包含一个或多个Cell 每个Cell代表一个View组件 RelativeLayout 允许通过指定显示对象相对于其他显示对象或父级对象的相对位置来布局 取值为像素的属性android layout marginLeft左侧留白android layout marginRight右侧留白android layout Top上方留白android layout marginBottom下方留白 RelativeLayout 取值为其他控件idandroid layout toRightOf本控件位于给出id控件的右侧android layout toLeftOf本控件位于给出id控件的左侧android layout above本控件位于给出id控件的上方android layout below本控件位于给出id控件的下方android layout alignTop本控件上边界与给出id控件上边界对齐android layout alignBottom本控件下边界与给出id控件下边界对齐android layout alignLeft本控件左边界与给出id控件左边界对齐android layout alignRight本控件右边界与给出id控件右边界对齐 RelativeLayout 取值为booleanandroid layout centerHorizontal位于父组件横向中间android layout centerVertical位于父组件纵向中间android layout centerInParent位于父组件中央android layout alignParentBottom底端与父组件底端对齐android layout alignParentLeft左端与父组件左端对齐android layout alignParentRight右端与父组件右端对齐android layout alignParentTop顶端与父组件顶端对齐android layout alignWithParentIfMissing参照组件不存在时参照父组件 RelativeLayout FrameLayout FrameLayout对象就好比一块在屏幕上提前预订好的空白区域 然后你可以填充一些元素到里边 注意 所有的元素都被放置在FrameLayout区域最左上的区域 而且无法为这些元素指定一个确切的位置 如果一个FrameLayout里边有多个子元素 那么后边的子元素的显示会重叠在前一个元素上 AbsoluteLayout 绝对布局容器不负责组件的位置开发人员通过android layout x android layout y两个属性来指定组件的位置 事件处理模型 基于回调的事件处理基于监听接口的事件处理Handler 基于回调的事件处理 在Activity和View类中 定义了若干回调方法 可以覆盖这些方法来实现事件处理返回boolean值 true表示事件处理完了onKeyDown intkeyCode KeyEventevent onKeyUp intkeyCode KeyEventevent onTouchEvent MotionEventevent event getAction MotionEvent ACTION DOWNevent getAction MotionEvent ACTION UPevent getAction MotionEvent ACTION MOVE 基于监听接口的事件处理 对View调用setOnXXXListener listener View类中若干内部接口 OnClickListener 点击事件OnLongClickListener 长时点击OnFocusChangeListener 焦点改变OnKeyListener键盘事件OnTouchListener触摸事件OnCreateContextMenuListener上下文菜单显示事件 Handler android os包用于线程间传递消息线程间需要共享同一个Handler对象handlerMessage Messagemsg 处理消息 需要在接收消息的线程中覆盖该方法sendEmptyMessage intwhat 发送空消息 在handlerMessage中 通过msg what查看what值sendMessage Messagemsg 发送消息 Handler示例 HandlermyHandler newHandler 创建一个Handler对象publicvoidhandleMessage Messagemsg 重写接收消息的方法switch msg what 判断what的值case0 what值为0时myImageView setImageResource R drawable bbta break case1 what值为1时myImageView setImageResource R drawable bbtb break case2 what值为2时myImageView setImageResource R drawable bbtc break case3 what值为3时myImageView setImageResource R drawable bbtd break super handleMessage msg Handler示例 intwhat 1 publicvoidrun 重写的run方法while true 循环activity myHandler sendEmptyMessage what 4 发送消息try Thread sleep 2000 睡眠 catch Exceptione 捕获异常e printStackTrace 打印异常信息 AndroidUI组件 组件特性组件的继承关系组件的XML属性XML属性遵从组件的继承关系组件的方法每个XML属性会有相应的Java方法组件可以添加的监听接口 TextView 文本视图不可编辑android autoLink将指定格式的文本显示为链接取值 none web email phone map allandroid gravity 在x轴和y轴的显示方向android heightandroid width高度和宽度以像素为单位android hint当内容为空时显示的文本 输入框提示 android text文本内容android textColor文本颜色android textSize字体大小android typeface文本字体android ellipsize显示内容超出长度时如何省略取值none start middle end marquee EditText TextView的子类文本输入框android lines 固定的行数android maxLinesandroid minLines最大和最小行数android password是否显示为密码android phoneNumber内容只能是电话号码android scrollHorizontally是否可以水平滚动android selectAllOnFocus当获得焦点时自动选中全部内容android singleLine单行模式android maxLength最大宽度 ImageView图片组件 属性 android src要显示的图片android maxHeight最大高度android maxWidth最大宽度方法 setImageResource intresid 设置图片setImageURI Uriuri 设置图片为指定的URIsetImageBitmap Bitmapbm 设置图片为指定的Bitmap对象setImageDrawable Drawabled 设置图片为指定的Drawable 按钮组件 ButtonTextView的子类可以添加View OnClickListenerToggleButtonButton的子类状态按钮android textOff按钮未被选中时显示的文本android textOn按钮被选中时显示的文本可以添加监听 CompoundButton OnCheckedChangeListener ToggleButton示例 灯泡开关 ToggleButtonbutton ToggleButton this findViewById R id mybutton button setOnCheckedChangeListener newOnCheckedChangeListener publicvoidonCheckedChanged CompoundButtonbuttonView booleanisChecked setBulbState isChecked publicvoidsetBulbState booleanstate ImageViewview ImageView this findViewById R id myview if state view setImageResource R drawable bulb on elseview setImageResource R drawable bulb off ToggleButton示例 灯泡开关 ImageButton图片按钮 Button的子类不能定义text属性XML属性 android src设置按钮上的图片技巧不同的按钮状态显示不同的图片在res drawable mdpi中定义myselector xml在ImageButton的定义中 设置android src drawable myselector RadioButton单选按钮 Button的子类XML属性android checked初始时是否选中RadioGroupLinearLayout的子类同组的RadioButton在声明时要放在RadioGroup标签中RadioGroup注册监听 RadioGroup OnCheckedChangeListener可以获得被选中的RadioButton的idRadioButton注册监听 CompoundButton OnCheckedChangeListener CheckBox多选按钮 Button的子类XML属性android checked初始时是否选中CheckBox注册监听 CompoundButton OnCheckedChangeListener 时钟组件 AnalogClock模拟时钟DigitalClock数字时钟TextView的子类 DatePicker日期选择器 XML属性android startYear起始年份android endYear终止年份方法getDayOfMonth 获取日期天数getMonth 获取日期月份getYear 获取日期年份setEnabled booleanenabled 控制控件是否可用updateDate intyear intmonth intday 更新控件属性值init intyear intmonth intday DatePicker OnDateChangedListenerl 初始化属性 设置监听器 TimePicker时间选择器 方法 getCurrentHour 获得当前小时getCurrentMinute 获得当前分钟is24HourView 是否是24小时制setIs24HourView booleanb 设置24小时制setCurrentHour inth 设置小时setCurrentMinute intm 设置分钟setOnTimeChangedListener TimePicker OnTimeChangedListenerl 监听 ScrollView FrameLayout的子类为组件提供滚动功能只能包含一个View AdapterView 以下组件均包含多行数据 需要适配器的配合通过setAdapter 方法设置AutoCompleteTextViewListViewGridViewGallerySpinner Adapter适配器 数据与UI组件分离MVC架构模式 SimpleAdapter 构造参数ContextdataAListofMap 每个Map代表一行数据 key为String 表示列名 对于图片的列值 存放的是图片的id 对于字符串的列值 存放的是字符串值Layout的id 代表每行的显示组件 可以是内置的Layout 也可以自定义布局文件的idString from列名数组 对应Map中的keyint to数据映射到Layout中的TextView组件id ArrayAdapter 通过构造方法创建对象构造参数 Context Layout的id 数据Layout用于显示数据 常用内置的Layout数据可以是数组 也可以是List从外部数组资源中获取数据 通过静态方法createFromResource创建对象参数 Context R array XXX Layout的id SimpleCursorAdapter 用于组织从数据库中查询到的数据数据封装在Cursor对象中构造参数 ContextLayout的id常用内置LayoutCursor查数据库返回的对象String fromCursor中的数据列名int to数据映射到Layout中的TextView组件id 自定义适配器 继承BaseAdaptergetCount 返回数据个数getView 返回某一行的显示组件例如 对于ListView需要返回一个水平排列的LinearLayout 作为某一行的组件对于Gallery需要返回一个ImageView 作为画廊中的某个图片 AutoCompleteTextView 自动完成的文本输入框XML属性 android completionThreshold需要用户输入的字符数android dropDownHeightdropDownWidth下拉列表的高度 宽度常见的内置Layout android R layout simple dropdown item 1line ListView 将Adapter提供的组件显示在垂直可滚动的列表中常见的内置Layout的idandroid R layout simple list item 1其中的TextView组件的id android R id text1设置监听AdapterView OnItemSelectedListener键盘选择AdapterView OnItemClickListener触摸屏选择 ListView 如果一个Activity只含有一个ListView 可以直接继承ListActivity那个ListView的id必须为 android id list 注意 调用getListView 方法获得组件在ListActivity的子类中 覆盖onListItemClick ListViewl Viewv intposition longid 其中v是被点击的组件 position是索引 可以将Cursor移动到position位置上 来获取数据 id是对应数据项的id带多选框的ListView GridView demo直接参考sdk例子即可 网格视图XML属性android columnWidth列宽android horizontalSpacingverticalSpacing单元格之间水平 垂直距离常用SimpleAdapter来提供数据设置监听AdapterView OnItemSelectedListener键盘选择AdapterView OnItemClickListener触摸屏选择 Spinner 下拉列表常用内置的Layout的idandroid R layout simple spinner item设置下拉箭头的样式adapter setDropDownViewResource android R layout simple spinner dropdown item 设置监听AdapterView OnItemSelectedListener Gallery画廊 继承BaseAdapter getView方法返回一个ImageView设置监听AdapterView OnItemSelectedListenerXML属性android animationDuration动画过渡时间android unselectedAlpha未选中图片的透明度android spacing图片间空白大小 ProgressBar进度条 常常用单独的线程来设置进度XML属性android max最大进度android progress当前进度style android style Widget ProgressBar 或是 android style Widget ProgressBar Horizontal android secondaryProgress在进度条中的一个进度标记setProgress 设置当前进度 SeekBarRatingBar SeekBarProgressBar的子类拖拉条添加监听SeekBar OnSeekBarChangeListenerRatingBarProgressBar的子类星级滑块XML属性android max全部星块数量android rating初始星块数量添加监听RatingBar OnRatingBarChangeListener OptionsMenu 按Menu键就会显示 Activity类中的方法 onCreateOptionsMenu Menumenu 创建optionsmenu 这个函数只会在menu第一次显示时调用 该方法必须返回true onPrepareOptionsMenu Menumenu 更新改变optionsmenu的内容 这个函数会在menu每次显示时调用 onOptionsItemSelected MenuItemitem 处理选中的菜单项 Menu View MenuItemadd intgroupId intitemId intorder Stringtitle title也可以是String资源的id添加菜单项SubMenuaddSubMenu intgrouId intitemId intorder Stringtitle 添加子菜单每个菜单 包括MenuItem和SubMenu 都有一个itemId 每个菜单也有个groupId 定义其属于哪个组 Menu中定义了一些与Group有关的方法 如removeGroup setGroupCheckable setGroupVisible setGroupEnabled等 MenuItem View setIcon Drawabled 设置图标setIntent Intentt 绑定Intent对象 选中时触发其他Activity 这个逻辑定义在父类的onOptionsItemSelected方法中 如果覆盖了该方法 则必须调用super onOptionsItemSelected 保证系统会调用startActivity方法setOnMenuItemClickListener MenuItem OnMenuItemClickListener 监听很少使用 SubMenu View Menu的子类Su

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论