




已阅读5页,还剩320页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android应用开发课程 中关村软件园人才服务平台 1 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所写的插件 系统架构 AndoidRuntime 应用开发语言 JavaDalvik虚拟机指令 DalvikExcutableJava标准库把java代码编译为Dalvik可执行文件 dexformat 开发环境 JDKIDE EclipseEclipseplug in ADTSoftwareDevelopmentKit SDK AndroidEmulatorDebuger AndroidSDK AndroidSDK包括一系列的开发工具以帮助开发者开发和调试应用程序 包含以下几部分 Android应用程序框架API Android模拟器 辅助工具 ADB 调试工具 AAPT 生成APK DX 编译工具 DDMS 调试窗口 Android开发文档 GettingStart 开发环境搭建 安装Android的sdk和eclipse插件开发环境 JDK5或JDK6Eclipse3 5下载ADT的Eclipse插件 第一个Android应用程序 打开eclipse 新建android工程打开Eclipse 新建项目 点击File New Project 在项目列表中展开Android目录 选择AndroidProject 如图 应用程序的名称 包名称 启动类名称 兼容的最低版本 在项目上右键点击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 layout weight权重 默认为0 android 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 程序中 getResources 得到Resources对象用于将资源的id值转为相应的对象如getTextgetColorgetDrawable 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之间的关系 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两个属性来指定组件的位置 AbsoluteLayout 事件处理模型 基于回调的事件处理基于监听接口的事件处理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架构模式 自定义适配器 继承BaseAdaptergetCount 返回数据个数getView 返回某一行的显示组件例如 对于ListView需要返回一个水平排列的LinearLayout 作为某一行的组件对于Gallery需要返回一个ImageView 作为画廊中的某个图片 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 SimpleAdapter 构造参数ContextdataAListofMap 每个Map代表一行数据 key为String 表示列名 对于图片的列值 存放的是图片的id 对于字符串的列值 存放的是字符串值Layout的id 代表每行的显示组件 可以是内置的Layout 也可以自定义布局文件的idString from列名数组 对应Map中的keyint to数据映射到Layout中的TextView组件id 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 网格视图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 TabHost选项卡 创建方法一 在main xml中定义FrameLayout为根节点 其中放入若干LinearLayoutJava代码中继承TabActivity 不使用setContentView 而使用 LayoutInflaterinflater LayoutInflater from this inflater inflate R layout main getTabHost getTabContentView true TabHost选项卡 创建方法二 在main xml中定义TabHost为根节点 放入LinearLayout 垂直 其中放入TabWidget 宽度fill parent 和FrameLayout FrameLayout中放入若干LinearLayout注意组件的id限制 TabHostid android id tabhostTabWidgetid android id tabs 必须是这个 FrameLayoutid android id tabcontent 同上 Java代码继承TabActivity 通过getTabHost 拿到TabHost对象 TabHost选项卡 使用方法 对TabHost对象调用newTabSpec Tag 方法创建一个TabHost TabSpec对象对Spec对象调用setIndicator 方法 设置标签头 可以设置选项卡标题 选项卡图标对spec对象调用setContent方法设置内容 参数为该选项卡对应的LinearLayout的id 对TabHost对象调用addTab 方法 添加spec对象可以对TabHost对象设置监听TabHost OnTabChangeListener publicclassTabHostActivityextendsTabActivity publicvoidonCreate BundlesavedInstanceState super onCreate savedInstanceState TabHosttabHost this getTabHost LayoutInflater from this inflate R layout main tabHost getTabContentView true TabHost TabSpecspec1 tabHost newTabSpec x1 创建标签为 选项卡1 的选项卡 指定选项卡的标签和小图标spec1 spec1 setIndicator 选项卡1 getResources getDrawable R drawable png1 指定选项卡的内容spec1 spec1 setContent R id linearLayout01 将选项卡添加到TabHost中tabHost addTab spec1 TabHost TabSpecspec2 tabHost newTabSpec x2 spec2 spec2 setIndicator 选项卡2 getResources getDrawable R drawable png2 spec2 spec2 setContent R id linearLayout02 tabHost addTab spec2 TabHost TabSpecspec3 tabHost newTabSpec x3 spec3 spec3 setIndicator 选项卡3 getResources getDrawable R drawable png3 spec3 spec3 setContent R id linearLayout03 tabHost addTab spec3 TabHost选项卡 OptionsMenu 按Menu键就会显示 Activity类中的方法 onCreateOptionsMenu Menumenu 创建optionsmenu 这个函数只会在menu第一次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 氟利昂制冷机组操作原理及维护指南
- 初中语文考试试题分析报告
- 教师信息技术应用能力提升专项培训
- 婚礼父亲致辞简短得体范文
- 高职院校产教融合教学模式探讨
- 医院信息宣传考核方案与标准
- 2025-2030动力电池负极材料技术路线对比研究
- 2025-2030动力电池梯次利用场景拓展与经济性测算专项报告
- 2025-2030动力电池梯次利用商业模式创新与政策障碍突破报告
- 2025-2030动力电池梯次利用商业模式与循环经济价值评估报告
- 职业技术学院《财务大数据分析》课程标准
- 大数据分析方法与应用 课件全套 耿秀丽 第1-9章 大数据概述-神经网络
- 2024公安机关人民警察高级执法资格考试题(解析版)
- 质量为纲-华为公司质量理念与实践
- 放射科诊断报告改进措施
- 医疗健康人工智能辅助诊疗与护理技术培训
- 《工程建设标准强制性条文电力工程部分2023年版》
- 航天禁(限)用工艺目录(2021版)-发文稿(公开)
- 临床医学职业规划
- 江苏中职学业水平(会计类)专业综合理论历年考试真题题库汇总及答案
- EPC项目设计管理机构的构成和设计力量的配备
评论
0/150
提交评论