- 浏览: 677208 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (252)
- Html/Div+CSS (12)
- Js/Jquery (34)
- Flex (2)
- Ajax (3)
- Java (35)
- C# (15)
- Spring (16)
- Hibernate (13)
- Struts2 (12)
- Struts1 (7)
- DWR (1)
- iBatis/myBatis (9)
- Tag(JSTL、EL) (1)
- Android (44)
- SQL (7)
- SEO (7)
- Exception (3)
- Tool (10)
- Other (3)
- WebService (9)
- Apache (7)
- Ext (0)
- Utils (12)
- thinking in programme (2)
- Hadoop (0)
- ActiveMQ (0)
- HTML5/CSS3 (0)
- WPF (1)
- NodeJs (1)
- 设计模式 (0)
- 程序人生 (1)
- 随笔 (1)
- Linux (1)
- Load Balance (0)
最新评论
-
drinkjava2:
太复杂了而且不通用,利用ThreadLocal可完美解决这一问 ...
JDBC的多条件动态查询 -
u013107014:
multipartRequest.getFiles(" ...
多文件上传 by MultipartFile and Multiple -
liyys:
可惜没讲你mysql数据库的表的设计
iBatis入门 -
Mapple_leave:
效果还是挺不错的,谢谢了。
中文简体与繁体的转换 -
arcpad:
JS禁用浏览器退格键
在 Android 操作系统中,除了所有的显示组件之外,还需要进行布局管理器及事件的处理。
这里先介绍基本组件的使用形式进行一个总结。而更加复杂的组件在后面总结玩布局管理器和事件处理之后再来总结。
总结内容:
1 、了解 View 组件的主要作用;
2 、了解常用组件名称及继承关系;
Android 中的 View 组件包含了几乎所有的图形显示组件,如 Button 、 TextView 都是 View 的子类。大家在 Android.widget 包中基本上有多少个类,就有对应了多少种组件。
一、 TextView (文本显示组件)
继承关系
java.lang.Object ↳ android.view.View ↳ android.widget.TextView
res/layout/textview.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textViewId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#FFFF00" android:textSize="20px" android:layout_margin="30px" android:text="@string/hello" /> <!-- 注意这里的文字大小必须有大小单位 --> <!-- 这里margin和Css一致 --> <TextView android:id="@+id/textViewId2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/james" android:textColor="#000000" android:textStyle="bold" android:text="图片背景文字内容" /> <!-- 注意这里的资源名称必须为[a-z0-9_.] --> <TextView android:id="@+id/textViewId3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:autoLink="all" android:textColor="#FFFF00" android:textSize="25px" android:text="博客地址:www.xdwangiflytek.iteye.com" /> <!-- android:autoLink="all"如果是网址信息,可以将其变为链接 --> <!-- 注意这里需要是英文冒号 --> <!-- 通过上面的Demo我们可以发现如果一个项目中定义了多个文本组件,那么这可能会存在着许多 重复的配置属性,这样的话对于开发维护就很麻烦,所以在Android操作系统中也可以使用样式表文 件进行统一的属性配置,样式表定义与values中的string.xml一致,且文件必须在valuse文 件夹之中 --> <TextView android:id="@+id/textViewId4" style="@style/msg_style" android:text="@string/hello" /> <!-- style定义组件显示的样式风格 --> </LinearLayout>
res/layout/ textview_style.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- 定义样式表的配置,其中 “msg_style”为名称--> <style name="msg_style"> <item name="android:textSize">25px</item> <item name="android:textColor">#FFFF00</item> <item name="android:autoLink">all</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> </style> </resources>
二、 Button (按钮组件)
继承关系
java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.Button
通过API发现Button是TextView的子类,所有按钮可以理解为一个特殊的文本显示组件,而按钮主要是完成某些事件功能的,这里主要先总结一下按钮的基本配置。
res/layout/button.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/buttonId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#FFFF00" android:textSize="14px" android:layout_margin="30px" android:text="@string/user"/> </LinearLayout>
三、 EditText (编辑框组件)
继承关系
java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.EditText
res/layout/edittext.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/editId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/user" android:selectAllOnFocus="true"/> <!-- android:selectAllOnFocus被默认全选 --> <EditText android:id="@+id/editId2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/user" android:enabled="false"/> <!-- 不可编辑 --> <EditText android:id="@+id/editId3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/user" android:password="true"/> <!-- 采用密码形式进行数据回显,此时是密文 --> <EditText android:id="@+id/editId3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numeric="integer"/> <!-- 数字输入 --> </LinearLayout>
四、 RadioGroup 、 RadioButton (单选按钮组件)
RadioGroup 继承关系
java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.LinearLayout ↳ android.widget.RadioGroup
RadioGroup类的常用方法
No. |
方法 |
描述 |
1 |
Public void check(int id) |
设置要选中的单选按钮编号 |
2 |
Public void clearCheck() |
清空选中状态 |
3 |
Public int getCheckedRadioButtonId() |
取得选中按钮的 RadioButton 的 ID |
4 |
setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener listener) |
设置单选按钮选中的操作事件 |
对于很多的语言,单选按钮直接定义即可,但是在Android中,RadioGroup定义的只是一个单选按钮的容器,在这个容器之中要加入多个单选项,而这个单选项就是RadioButton
RadioButton继承关系
java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.Button ↳ android.widget.CompoundButton ↳ android.widget.RadioButton
res/layout/ radiogroup.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/txId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="20px" android:text="请选择语言:" /> <RadioGroup android:id="@+id/rgId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:checkedButton="@+id/rbCNId"> <!--vertical:垂直 android:checkedButton表示默认选中的单选 --> <RadioButton android:id="@+id/rbCNId" android:text="中文"/> <RadioButton android:id="@+id/rbENId" android:text="英文"/> </RadioGroup> <TextView android:id="@+id/txId2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="20px" android:text="性别:" /> <RadioGroup android:id="@+id/rgId2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:checkedButton="@+id/rbManId"> <RadioButton android:id="@+id/rbManId" android:text="男"/> <RadioButton android:id="@+id/rbWomanId" android:text="女"/> </RadioGroup> </LinearLayout>
五、 CheckBox (复选框组件)
继承关系
java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.Button ↳ android.widget.CompoundButton ↳ android.widget.CheckBox
res/layout/ checkbox.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tvId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="爱好:" /> <CheckBox android:id="@+id/cbId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="上网"/> <CheckBox android:id="@+id/cbId2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="看书"/> <CheckBox android:id="@+id/cbId3" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
Activity
package com.iflytek.ViewDemo; import android.app.Activity; import android.os.Bundle; import android.widget.CheckBox; public class ViewProjectActivity extends Activity { private CheckBox checkBox; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.checkbox); this.checkBox=(CheckBox)super.findViewById(R.id.cbId3); this.checkBox.setChecked(true); this.checkBox.setText("唱歌"); } }
六、 Spinner (下拉列表框组件)
继承关系
java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.AdapterView<T extends android.widget.Adapter> ↳ android.widget.AbsSpinner ↳ android.widget.Spinner
Spinner类常用方法
No. |
方法 |
描述 |
1 |
public CharSequence getPrompt() |
取得提示文字 |
2 |
public void setPrompt(CharSequence prompt) |
设置组件的提示文字 |
3 |
public void setAdapter(SpinnerAdapter adapter) |
设置下拉列表项 |
4 |
public void setOnItemClickListener(AdapterView.OnItemClickListener l) |
设置选项单击事件 |
SpinnerAdapter的功能就是一个适配器,会将所需要的数据进行包装并放在Spinner之中。
在Android中,可以直接在配置文件中定义<Spinner>节点,但是在定义此元素的时候却不能直接设置其显示的列表项,其配置方式有两种:
1、直接通过资源文件配置;
2、通过android.widget.ArrayAdapter类读取资源文件或者是指定具体设置的数据;
法一,直接通过资源文件配置:
对于Spinner的内容可以直接在Values文件夹之中定义若干个资源文件,例如定义一个城市下拉选项city_spinner_data.xml
res/ values/ city_spinner_data.xml:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="city_data"> <item>安徽</item> <item>江苏</item> <item>北京</item> </string-array> </resources>
res/layout/ spinner.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tvId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请选择喜欢的城市" /> <Spinner android:id="@+id/spinnerId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/city_prompt" android:entries="@array/city_data"/> <!-- android:entries配置所有下拉列表框中的显示内容 --> <!-- android:prompt提示信息 --> </LinearLayout>
法二,通过android.widget.ArrayAdapter类:
A、配置文件读取方式:
通过ArrayAdapter类中进行读取res/layout/ spinner.xml配置文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tvId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请选择喜欢的城市" /> <Spinner android:id="@+id/spinnerId2" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
Activity:
package com.iflytek.ViewDemo; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Spinner; public class ViewProjectActivity extends Activity { private Spinner spinner; private ArrayAdapter<CharSequence> arrayAdapter = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.spinner); this.spinner = (Spinner) super.findViewById(R.id.spinnerId2); this.spinner.setPrompt("请选择您喜欢的城市"); this.arrayAdapter = ArrayAdapter.createFromResource(this, R.array.city_data, android.R.layout.simple_spinner_item); this.arrayAdapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// 换下拉框风格 this.spinner.setAdapter(arrayAdapter);// 设置显示信息 } }
B、指定具体设置的数据方式:
此时不需要任何的资源文件,都是通过程序代码生成的列表内容
res/layout/ spinner.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tvId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请选择喜欢的城市" /> <Spinner android:id="@+id/spinnerId3" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
Activity
package com.iflytek.ViewDemo; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Spinner; public class ViewProjectActivity extends Activity { private Spinner spinner; private ArrayAdapter<CharSequence> arrayAdapter = null; private List<CharSequence> datas = null;//定义一个集合数据 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //通过ArrayAdapter读取配置文件的方式 setContentView(R.layout.spinner); this.datas = new ArrayList<CharSequence>(); this.datas.add("北京"); this.datas.add("安徽"); this.datas.add("江苏"); this.spinner = (Spinner) super.findViewById(R.id.spinnerId3); this.arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item,this.datas); this.arrayAdapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// 换下拉框风格 this.spinner.setAdapter(arrayAdapter);// 设置显示信息 } }
七、 ImageView (图片视图组件)
继承关系
java.lang.Object ↳ android.view.View ↳ android.widget.ImageView
res/layout/ imageview.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ImageView android:id="@+id/imageViewId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/james"/> <!-- 需要注意的是ImageView中的所有图片需要保存在drawable文件夹之中 --> </LinearLayout>
八、 ImageButton (图片按钮组件)
继承关系
java.lang.Object ↳ android.view.View ↳ android.widget.ImageView ↳ android.widget.ImageButton
res/layout/ imagebutton.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ImageButton android:id="@+id/imagebtnId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher"/> </LinearLayout>
九、 TimePicker (时间选择器组件)
继承关系
java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.FrameLayout ↳ android.widget.TimePicker
res/layout/ timepicker.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TimePicker android:id="@+id/tpId" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
十、 DatePicker (日期选择器组件)
继承关系
java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.FrameLayout ↳ android.widget.DatePicker
res/layout/ datepicker.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <DatePicker android:id="@+id/dpId" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
发表评论
-
This version of ADT requires android SDK
2013-07-25 16:45 1604Windows系统下用Eclipse开发工具开发An ... -
Android学习13-----网络通信(4) WebView组件
2012-11-27 09:18 2524WebView 是一个开发的浏览 ... -
Android学习13-----网络通信(3) 与Web Service进行通讯
2012-11-26 09:40 1901这里我们的WebService使用xFire开发。 ... -
Android学习13-----网络通信(2) 与Socket交换数据
2012-11-23 09:11 3313对于网络开发而言,最常用的交互模式:WebService、We ... -
Android学习13-----网络通信(1) 与WEB服务器交换数据
2012-11-22 09:11 2199与Web服务器交互: 如果手机要想与 web ... -
Android学习11-----多媒体技术(5) 媒体录制
2012-11-16 08:10 1899在Android中通过android.media ... -
Android学习11-----多媒体技术(4) 使用摄像头拍照,多点触控
2012-11-15 08:37 2897一、摄像头拍照 前面说媒体播放 时了解了 ... -
Android学习11-----多媒体技术(3) 媒体播放
2012-11-14 08:25 1423在 Androi ... -
Android学习11-----多媒体技术(2) Animation
2012-11-13 08:47 2003一、渐变动画, Tweened Animation ... -
Android学习11-----多媒体技术(1) 绘制简单图形,Bitmap,Matrix
2012-11-12 08:48 1632一、绘制简单图 ... -
Android学习12-----手机服务(4) 传感器
2012-11-19 09:13 2026传感器一般用于游戏中,在 Android 系统中为 ... -
Android学习12-----手机服务(1) 取得电池电量和声音服务:AudioManager
2012-11-18 11:18 3517一、取得电池电量信息 ... -
Android学习10-----Android组件通信 (8) 桌面显示组件:AppWidget
2012-11-02 08:36 2044一、 AppWidget 在使用 Androi ... -
Android学习10-----Android组件通信 (7) 广播机制:Broadcast
2012-11-01 08:43 1523一、 广播: 广播也是一种信息的发送机制,在 ... -
Android学习10-----Android组件通信 (6) PendingIntent
2012-10-31 08:20 2276Intent 的主要功能是表示用 ... -
Android学习10-----Android组件通信 (5) Service
2012-10-30 08:25 1748Service 基本组成: ... -
Android学习10-----Android组件通信 (4) 消息机制
2012-10-29 08:22 1560在 Android 操作系统中存在着消息队列的操作 ... -
Android学习10-----Android组件通信 (3) ActivityGroup
2012-10-26 08:23 2341导航栏在 Android 中的应用是很常见的,前面 ... -
Android学习10-----Android组件通信 (2) Activity生命周期
2012-10-25 08:16 1293Activity 是整个 Android 平台的基 ... -
Android学习10-----Android组件通信 (1) Intent
2012-10-24 08:43 2029在一个项目之中,会由多个 Activity ...
相关推荐
在Android开发中,自定义控件是提升应用用户体验和界面独特性的重要手段。本文将深入探讨如何创建一个自定义的联系人列表,并实现A-Z字母排序功能。首先,我们需要理解Android系统的视图(View)和视图组(ViewGroup)...
5、Android05--Android服务通信 6、Android06--Android广播接收器 7、Android07--Android日志系统 8、Android08--Android权限系统 用户界面 9、Android09--Fragment初探 10、Android09--Android程序界面 11、...
在Android开发中,有时我们需要创建一些独特形状的视图,以实现特定的界面设计或交互效果。...通过研究其源码,我们可以学习到如何在Android中实现自定义视图的绘制和事件监听,进一步提升我们的Android开发技能。
`appcompat-v7`库的使用方法通常是将其导入到项目中,然后将Activity继承自`AppCompatActivity`,并使用`android.support.v7.widget`包下的控件来替代原生的Android控件,这样就能在所有支持的Android版本上享受到新...
总之,`android-support-v4.jar`是Android开发中不可或缺的一部分,它为开发者提供了广泛的API兼容性和功能扩展,确保了应用程序能够在广泛的不同Android设备上运行。理解并有效利用这个库,可以帮助开发者创建更...
《Android Times-Square:打造出色的日历控件》 在移动应用开发中,日历控件是不可或缺的一部分,它能够帮助用户方便地选择日期,进行时间管理。Square公司开源的`android-times-square`库,正是为Android平台量身...
以上介绍了Android UI中常用的几种基本控件及其使用方法。这些控件是构建用户界面的基础,熟练掌握它们的使用可以帮助开发者快速搭建出美观实用的应用界面。希望本文能为初学者提供一定的帮助。
Android-Chat-Widget 是像微信、WhatsApp、Line一样的聊天控件。 Demo 如何使用? 1.在Layout中 android:id="@ id/messageInputToolBox" android:layout_width="match_parent" ...
在Android平台上,ListView是一种常用的控件,用于显示大量的列表数据。然而,为了使应用更加生动、交互性更强,开发者通常会引入“拉动刷新”功能,让用户在滚动到列表顶部时能够手动触发新数据的加载。"Android-...
综上所述,`ImageView`、`DatePicker` 和 `TimePicker` 是 Android 应用开发中经常使用的控件。通过合理利用这些控件,开发者可以轻松地为应用增添丰富的交互功能。同时,熟练掌握这些控件的基本用法和高级特性对于...
`android-support-v4`库常常与AppCompat库一起使用,后者提供了对Android Material Design的支持,包括主题、颜色、控件样式等,即使在旧版本的Android系统上也能提供一致的用户体验。AppCompat库还包含一个兼容的...
它还提供了自定义视图和控件的工具,比如`android.support.v7.widget.CardView`和`android.support.v7.widget.RecyclerView`,这些都在早期版本的Android上提供原生支持。 总之,`android-support-v7-appcompat`是...
本文将详细解析"Android-Android自定义控件-签到日历"这一主题,以及如何根据提供的源码进行修改以适应特定项目。 首先,签到日历控件通常用于健康管理、学习跟踪或者日常任务管理类应用,让用户能够直观地查看和...
•Android---UI篇---Tab Layout(选项卡布局) • •Andorid---UI篇---TableLayout(表格布局) • •Android---UI篇---RelativeLayout(相对布局) • •Android---UI篇---GridView(网格布局) • •Android---UI篇-...
在Android开发中,`android-support-v7-appcompat.jar` 和 `android-support-v4.jar` 是两个非常重要的库文件,它们提供了对旧版本Android系统的重要支持和功能扩展。 首先,`android-support-v7-appcompat.jar` 是...
在Android开发中,UI设计和用户体验是至关重要的因素之一,特别是在构建日历应用时。"android-collapse-...对于任何希望提升其Android应用界面交互体验的开发者来说,理解和使用这个控件都将是一次宝贵的学习经历。
在Android开发中,自定义控件是提升用户体验和界面独特性的重要手段。"Android--粘性控件"这个主题,通常指的是实现一种特殊效果的组件,这种组件可以在用户滚动列表时保持在屏幕顶部,直到其他内容覆盖它或者到达其...
在Android开发中,`android-support-v4.jar`和`android-support-v7.jar`是两个非常重要的库文件,它们属于Google的Android Support Library。这个库是为了兼容Android的不同版本而设计的,尤其是在处理旧版本API时,...