首页 文章 精选 留言 我的

精选列表

搜索[文档管理],共10000篇文章
优秀的个人博客,低调大师

PopupWindow 使用详解(一) 中文API 文档 赠送 ListPopupWindow 中文 API

笔者数了数枕巾脱落的头发,发现了 Android 开发常用的类似于弹窗的悬浮窗口 大概是 PopupWindow 和 dialog。之前有还算具体的写过关于 dialog 以及自定义 dialog 甚至是 dialogActivity 的相关笔记,即:Android 系统原生dialog使用 、Android dialog Activity 使用 、android自定义相对复杂dialog 。突然感觉 PopupWindow 这个说简单不简单,说难不难的知识点也应该详细研究一下。下面回归正题,请欣赏笔者的表演: 一、创建 PopupWindow 先说一下 Google 爸爸提供的构造方法 public PopupWindow() public PopupWindow(View contentView) public PopupWindow(int width, int height) public PopupWindow(View contentView, int width, int height) public PopupWindow(View contentView, int width, int height, boolean focusable) public PopupWindow(Context context) public PopupWindow(Context context, AttributeSet attrs) public PopupWindow(Context context, AttributeSet attrs, int defStyleAttr) public PopupWindow(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) 数一数不多不少 9 个构造方法,一个无参的 8 个有参的,参数代表的意思分别为:View contentView 表示该 PopupWindow 内装载的内容,即展示各位用户的内容int width, int height表示该 PopupWindow 对象的长度和宽度,参数可以是 ViewGroup.LayoutParams.WRAP_CONTENT和ViewGroup.LayoutParams.MATCH_PARENT也可以是具体的数值了。但是 这里规定的 是 PopupWindow 内加载到的 view 对象的大小。相当于 PopupWindow 设置的值 为 xml 内最外层布局是等效的。 如果,需要控制加载展示的 view 大小,那么需要将该参数设置ViewGroup.LayoutParams.WRAP_CONTENT 并且 目标样式外再包裹一层布局,类似于: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="200dp" android:layout_height="200dp" android:layout_centerInParent="true"> <ImageView android:id="@+id/iv_home" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name" android:src="@mipmap/home" /> </RelativeLayout> </RelativeLayout> boolean focusable PopupWindow 响应内部的点击事件,例如 TextView、Button 等Context context 上下文,不多讲剩下下面的三个构造方法,不常用,但是会自定义 view 的大佬都知道啥意思。 二、常用设置方法 //设置动画特效 即 展示和消失动画 public void setAnimationStyle(int animationStyle) //主要作用是为了设置 PopupWindow 显示的时候是否会与 StatusBar 重叠(如果存在的话也包括 SystemBar ) public void setAttachedInDecor(boolean enabled) //设置 PopupWindow 的背景。该属性不设置的会,会导致 PopupWindow 出现后不会消失,即便是 点击 back 键也不起作用。这应该是 PopupWindow 较为变态的地方。 public void setBackgroundDrawable(Drawable background) //设置 PopupWindow 允许超出窗口 public void setClippingEnabled(boolean enabled) //设置 PopupWindow 内展示的内容 public void setContentView(View contentView) //设置 PopupWindow 的高度,类似于 3D 效果的阴影 public void setElevation(float elevation) //设置 PopupWindow的入场动画 public void setEnterTransition(Transition enterTransition) //有如就得有出 设置出场动画 public void setExitTransition(Transition exitTransition) //设置 popupWindow 是否可以获取焦点 public void setFocusable(boolean focusable) //设置 PopupWindow的高度 public void setHeight(int height) //脸颊事件 Events 都是有大小的当触摸点大于手指头大小时,则为 脸颊事件 ,蛮有意思的 你可以尝试一下。 public void setIgnoreCheekPress() //设置输入法的操作模式 public void setInputMethodMode(int mode) //监听 PopupWindow关闭的事件 public void setOnDismissListener(OnDismissListener onDismissListener) //设置 点击 PopupWindow意外区域,隐藏 popupWindow 然而并没有什么卵用 public void setOutsideTouchable(boolean touchable) // PopupWindow触摸时的监听回调 public void setTouchInterceptor(OnTouchListener l) //设置 PopupWindow是否可触摸 public void setTouchable(boolean touchable) //设置 popwindow 的宽度 public void setWidth(int width) //设置 PopupWindow布局类型 public void setWindowLayoutType(int layoutType) 设置 PopupWindow 显示位置 相对重要 拿出来写 //设置 PopupWindow 在某个控件的下方,某控件的左下角与 PopupWindow 的左上角对齐 public void showAsDropDown(View anchor) //设置 PopupWindow 在某个控件的下方,某控件的左下角与 PopupWindow 的左上角对齐,可以设置偏移量 向左为副 ,向右为正;向上为负,向下为正 public void showAsDropDown(View anchor, int xoff, int yoff) //设置 PopupWindow 在相当于父布局进行摆放,可以设置偏移量。 public void showAtLocation(View parent, int gravity, int x, int y) //隐藏 PopupWindow public void dismiss() 三、常用获取方法 //获取 PopupWindow 动画样式 public int getAnimationStyle() //获取 PopupWindow 背景 public Drawable getBackground() //获取 PopupWindow 设置的 view 返回一个view对象 public View getContentView() //获得 PopupWindow 的悬浮高度 public float getElevation() //获取 PopUpWindow 的入场动画 public float getElevation() //获取 PopupWindow 的出场动画 public Transition getExitTransition() //获取 PopupWindow 的高度 public int getHeight() //获取输入模式 public int getInputMethodMode() //获取 PopupWindow 是否应该与寄生(不太合理但是不知道用啥词)对象重叠 public boolean getOverlapAnchor() //获取 Popwindow 的宽度 public int getWidth() //获取 PopupWindow 的布局类型 public int getWindowLayoutType() //获取可以让 PopupWindow 设置的最大高度 public int getMaxAvailableHeight(View anchor) public int getMaxAvailableHeight(View anchor, int yOffset) //获取可以设置 PopupWindow 的最大高度,可以忽略软键盘。 public int getMaxAvailableHeight( View anchor, int yOffset, boolean ignoreBottomDecorations) 四、常用判断方法 //判断 PopupWindow 是否在超出父布局 public boolean isAboveAnchor() // 判断 PopupWindow 是否在父布局的 装饰上 public boolean isAttachedInDecor() //判读 PopupWindow 是否可以超出窗口 public boolean isClippingEnabled() //判断 PopupWindow 是否可以获取焦点 public boolean isFocusable() //判断 PopupWindow 是否相应自身以外的点击事件 public boolean isOutsideTouchable() //判断 PopupWindow 是否展示 public boolean isShowing() //判断 PopupWindow 是否支持多点触控 public boolean isSplitTouchEnabled() //判断 PopupWindow 是否支持触摸事件 public boolean isTouchable() 五、不常使用 更新位置或更新内容方法 //更新当前 PopupWindow public void update() //更新 Popwindow 到新的形态 参数:长度、宽度 public void update(int width, int height) //更新 Popwindow 到新的位置、新的形态 参数:新位置的坐标,长度、宽度 public void update(int x, int y, int width, int height) //同上 public void update(int x, int y, int width, int height, boolean force) //相对于宿主 更新体型 public void update(View anchor, int width, int height) //相对宿主更新 大小 位置 public void update(View anchor, int xoff, int yoff, int width, int height) 六、部分主要事项 1、 PopupWindow 默认是不允许超出窗口的,具体演示请看下篇笔记; 2、 PopupWindow 的 public void setOutsideTouchable(boolean touchable) 方法默认没有什么卵用 ,是否可以点击 PopupWindow 外部进行隐藏 PopupWindow ,必须设置 public void setBackgroundDrawable(Drawable background) 该方法 3、 getHeight() 和 getWidth() 方法不太好用,一般返回为 0;如果获取 PopupWindow 的长宽建议使用如下方法: devPop.getContentView().measure(0, 0); int hight=devPop.getContentView().getMeasuredHeight(); int width=devPop.getContentView().getMeasuredWidth(); 4、 将 PopupWindow 的四角设置为圆角方法,可以将事先准备的 view 的父布局加一个带有圆角的 shape background, 之后设置 PopupWindow 的 setBackgroundDrawable() 方法 设置为devPop.setBackgroundDrawable(new ColorDrawable(0x00ffffff)); 5、 一定要在显示 PopupWindow 的界面的 OnDestroy()方法内调用 dismiss()方法,否则会产生 “意想不到”的惊喜。 @Override protected void onDestroy() { super.onDestroy(); if (popupWindow != null) { popupWindow.dismiss(); } } 6、 笔者遇到的注意事项,感觉目前就这么多了,之后如果遇到还会补充; 七、附赠 ListPopupWindow 相关汉语 API 1、效果展示 或许各位很多人都知道 PopupWindow 但是 少有人知道 ListPopupWindow ,故 展示效果如下,具体应用 请留意之后的 笔记。 2、相关 API 继承结构 (1)、构造方法 public ListPopupWindow( Context context) public ListPopupWindow( Context context, AttributeSet attrs) public ListPopupWindow( Context context, AttributeSet attrs,int defStyleAttr) public ListPopupWindow(Context context, AttributeSet attrs,int defStyleAttr, int defStyleRes) 构造方法就这四种,笔者常用的是第一种。 (2)、设置类方法 //为列表设置 适配器 public void setAdapter( ListAdapter adapter) //设置锚点 view 寄生的view public void setAnchorView(@Nullable View anchor) //为 ListPopupWindow 设置动画样式 public void setAnimationStyle( int animationStyle) //为 ListPopupWindow 设置背景 public void setBackgroundDrawable( Drawable d) //设置 ListPopupWindow 的宽度 单位:像素 public void setContentWidth(int width) //设置下拉列表的对齐方式 public void setDropDownGravity(int gravity) //设置 ListPopupWindow 的高度 单位:像素 public void setHeight(int height) //设置横向偏移量 单位:像素 public void setHorizontalOffset(int offset) //设置 Drawable 为列表的选择器 public void setListSelector(Drawable selector) //将 ListPopupWindow 设置为模态框 public void setModal(boolean modal) //设置 ListPopupWindow 提示位置 public void setPromptView( View prompt) //设置 ListPopupWindow 的选定位置 public void setSelection(int position) //设置 ListPopupWindow 输入区域的输入模式 public void setSoftInputMode(int mode) //设置 ListPopupWindow 的竖直方向偏移量 public void setVerticalOffset(int offset) //设置 ListPopupWindow 的宽度 public void setWidth(int width) //设置 ListPopupWindow 的布局类型 public void setWindowLayoutType(int layoutType) // 可将返回对象 添加到 源视图中,进而实现拖动并打开。 public OnTouchListener createDragToOpenListener(View src) //展示 ListPopupWindow public void show() (3)、监听器 //设置 ListPopupWindow 关闭的 时的监听 public void setOnDismissListener(PopupWindow.OnDismissListener listener) //设置 ListPopupWindow 的 item 单击时的监听回调 public void setOnItemClickListener(AdapterView.OnItemClickListener clickListener) //设置 ListPopupWindow item 被选择 时的监听回调 public void setOnItemSelectedListener(OnItemSelectedListener selectedListener) (4)、获取方法 //获取 ListPopupWindow 的锚点 view public View getAnchorView() //获取 ListPopupWindow 的动画样式 public int getAnimationStyle() //获取 ListPopupWindow 的背景 public Drawable getBackground() //获取 ListPopupWindow 的高度 public int getHeight() //获取 ListPopupWindow 的横向偏移量 public int getHorizontalOffset() //获取 ListPopupWindow 的 列表 public ListView getListView() //获取可选的 ListPopupWindow 的位置 public int getPromptPosition() //获取 ListPopupWindow 内被选中的 item public Object getSelectedItem() //获取被选中的 item 的 id public long getSelectedItemId() //获取被选中的 item 的位置 public int getSelectedItemPosition() //获取被选中的 view public View getSelectedView() //获取 垂直方向的偏移量 单位:像素 public int getVerticalOffset() //获取 ListPopupWindow 的宽度 public int getWidth() (5)、判断方法 //判断是否为 模态框样式 public boolean isModal() //判断是否为显示状态 public boolean isShowing() //过了关键按键 点击事件 public boolean onKeyDown(int keyCode, KeyEvent event) //过滤关键按键 点击抬起事件 public boolean onKeyUp(int keyCode, KeyEvent event) //判断 是否 在指定 item 下执行点击事件 public boolean performItemClick(int position) (6)、其他的重要方法 //执行相关 对 ui 线程的操作 public void postShow() //删除 当前列表的所有选择 public void clearListSelection() //关闭 ListPopupWindow public void dismiss() 3、关于 ListPopupWindow 的其它 杂谈 当发现这个 ListPopupWindow 算是控件的工具值,笔者舍去很多地方的 ListView 和部分AutoCompleteTextView 和 Spinner 控件使用,因为 ListPopupWindow 搭配 TextView 或者搭配 EditText 极其好用。 今天学习就到这里,笔者希望可以帮助各位在伙伴,欢迎大佬指点、批评还有建议;之后的几篇笔者尽快写出来,只是一些 关于 ListPopupWindow 和 PopupWindow 的具体用法,相关源码会上传 github ;不介意各位读者,帮忙点个心或者是加个关注哈 (︶.̮︶) !

优秀的个人博客,低调大师

解析Java代码,自动生成文档工具使用说明

页面布局 左侧为菜单,菜单分为两级,一级表示模块,二级表示接口信息 右侧为接口详细信息,主要包括:模拟测试功能,接口详细信息说明,请求参数说明,响应参数说明,自动一个演示的例子表明接口的使用方式 如下图(图片拼接左侧菜单可能模糊或重影,凑合看): 演示页面布局 页面操作 左侧二级菜单可以双击修改,失去焦点时自动保存 image.png 左侧一级,二级菜单可以拖拽排序 所有带 “编辑”按钮的地方都可以编辑保存,textarea编辑时可以带回车换行,自动记录你的文本格式 请求参数和响应参数,本身是一个树结构,所有编辑的时候跟普通的编辑树一样操做,包括添加一级数据,添加子数据,修改,删除,保存等等,鼠标移入会有提示,如下图 5.如果需要给接口提供默认值,修改参数的默认值后,会自动重构json参数,方便测试 代码使用 在你的controller类上增加注解@Api("这里写模块名称"),这里一个@Api对应页面的一个一级菜单,即模块,模块可以由多个类组成,只需设置每个类的模块名称一样,程序会自动把模块名称一样的class组装成同一模块。

优秀的个人博客,低调大师

Ubuntu14.04+Nginx+PHP+MySQL+EduSoho[推荐-标准环境-文档]

版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396609 参考原文:http://www.qiqiuyu.com/course/20/task/794/show注意: 本教程基于Ubuntu系统 14.04版本并且需要以root用户操作机器,请在确保您的环境是否符合以上两个条件之后,再进行后续的操作。切记:我们的edusoho访问目录是edusoho/web,只有在nginx或者Apache配置里面把根目录定位到web目录下,才不会出现奇怪的问题,否则就会出现图片不能显示或者文件无法上传的问题。本教程主要分为一下几个步骤:更新系统、安装并配置Nginx、安装MySQL、安装并配置PHP、 安装并配置EduSoho,测试Edusoho。 1、更新系统 sudo apt-get update sudo apt-get upgrade 2、安装Nginx 2.1 安装nginx sudo apt-get install nginx 2.2 配置Nginx sudo vim /etc/nginx/nginx.conf 然后 在http{} 字段里添加 client_max_body_size 1024M; 3、安装并配置MySQL 3.1 安装mysql apt-get install mysql-server 在这个过程过程中会要求您输入MySQL数据库的root密码,请认真填写。 3.2 创建数据库 mysql -uroot -p 然后你需要输入MySQL数据库的root密码。 进入数据库命令行模式后,创建edusoho数据库,执行: CREATE DATABASE `edusoho` DEFAULT CHARACTER SET utf8 ; GRANT ALL PRIVILEGES ON `edusoho`.* TO 'esuser'@'localhost' IDENTIFIED BY 'edusoho'; quit; 注意:这里为edusoho数据库创建了一个用户名,用户名为:esuser,密码为edusoho,在后面安装的第三步需要用到,不建议直接填写root账户。 4、安装PHP 4.1 安装PHP sudo apt-get install php5 php5-cli php5-curl php5-fpm php5-intl php5-mcrypt php5-mysqlnd php5-gd 4.2 修改PHP上传文件的大小限制 sudo vim /etc/php5/fpm/php.ini 添加一下三行配置文字 post_max_size = 1024M memory_limit = 1024M upload_max_filesize = 1024M 4.3 配置PHP-FPM 编辑配置文件: vim /etc/php5/fpm/pool.d/www.conf,找到: ;listen.owner = www-data ;listen.group = www-data ;listen.mode = 0660 去除最前面的分号。 然后重启PHP-FPM: sudo /etc/init.d/php5-fpm restart 5 配置安装EduSoho 5.1 下载/解压程序 mkdir /var/www cd /var/www wget http://download.edusoho.com/edusoho-VERSION.tar.gz (注:将VERSION替换为当前EduSoho最新版本号,可从官网www.edusoho.com查询获取) tar -zxvf edusoho-VERSION.tar.gz chown www-data:www-data edusoho/ -Rf 注:这里的下载地址可以在http://www.edusoho.com/中可以获取到,VERSION为下载来之后压缩包后面的版本号。 5.2 配置nginx的虚拟主机 sudo vim /etc/nginx/sites-enabled/edusoho 输入以下内容: server { listen 80; # [改] 网站的域名 server_name www.example.com example.com; #301跳转可以在nginx中配置 # 程序的安装路径 root /var/www/edusoho/web; # 日志路径 access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; location / { index app.php; try_files $uri @rewriteapp; } location @rewriteapp { rewrite ^(.*)$ /app.php/$1 last; } location ~ ^/udisk { internal; root /var/www/edusoho/app/data/; } location ~ ^/(app|app_dev)\.php(/|$) { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS off; fastcgi_param HTTP_X-Sendfile-Type X-Accel-Redirect; fastcgi_param HTTP_X-Accel-Mapping /udisk=/var/www/edusoho/app/data/udisk; fastcgi_buffer_size 128k; fastcgi_buffers 8 128k; } # 配置设置图片格式文件 location ~* \.(jpg|jpeg|gif|png|ico|swf)$ { # 过期时间为3年 expires 3y; # 关闭日志记录 access_log off; # 关闭gzip压缩,减少CPU消耗,因为图片的压缩率不高。 gzip off; } # 配置css/js文件 location ~* \.(css|js)$ { access_log off; expires 3y; } # 禁止用户上传目录下所有.php文件的访问,提高安全性 location ~ ^/files/.*\.(php|php5)$ { deny all; } # 以下配置允许运行.php的程序,方便于其他第三方系统的集成。 location ~ \.php$ { # [改] 请根据实际php-fpm运行的方式修改 fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS off; fastcgi_param HTTP_PROXY ""; } } 配置文件中的example.com 为您需要指定的域名,为了确保您的域名能被他人访问得到, 您需要将这个域名和您当前的机器IP地址做DNS解析工作。 5.3 重启nginx sudo /etc/init.d/nginx restart 最后一步: 浏览器中打开:http://YOU_DOMAIN 安装,当然这里的YOU_DOMAIN是您的域名。

优秀的个人博客,低调大师

Android 3.0 r1 API中文文档(107) —— AsyncPlayer

正文 一、结构 public classAsyncPlayer extendsObject java.lang.Object android.media.AsyncPlayer 二、概述 播放一个连续 ( 多个 ) 的音频 URLs ,但那些任务较重的工作在另外的线程中完成,所以任何预处理或加载的延迟都不阻碍线程调用。 三、构造函数 publicAsyncPlayer(String tag) 构造一个AsyncPlayer对象。 参数 tag用于调试的字符串 四、公共方法 public voidplay(Context context, Uri uri, boolean looping, int stream) 开始播放声音。可在某个点上开始播放。这里不保证可能有延迟。在另一个音频文件播放时调用这个方法将导致当前音频停止播放并开始播放新的音频。 参数 context 应用程序上下文 uri 播放的URI (参见setDataSource(Context, Uri)) looping是否无限循环播放声音。(参见setLooping(boolean)) stream音频流(AudioStream)类型(参见setAudioStreamType(int))(译者注:例如AudioManager.STREAM_MUSIC) public voidstop() 停止之前播放的声音。不能在某点上暂停然后接着播放。多次调用没有不良影响。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582378,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android 3.0 r1 API中文文档(113) ——SlidingDrawer

正文 一、结构 public classSlidingDrawer extendsViewGroup java.lang.Object android.view.View android.view.ViewGroup android.widget.SlidingDrawer 二、概述 SlidingDrawer (滑动式抽屉)隐藏屏外的内容,并允许用户拖拽一个 handle 以显示隐藏的内容。 SlidingDrawer 可以在垂直或者水平使用。它由两个子视图组成:一个是用户拖拽的 handle (柄),另一个是随着拖动变化的 content (内容)。 SlidingDrawer 应当作为内部布局的覆盖来使用,也就是说 SlidingDrawer 内部应该使用 FrameLayout 或 RelativeLayout 布局。 SlidingDrawer 的大小决定了其内容显示时所占空间的大小,所以它的尺寸一般定义为 match_parent 。在 XML 布局中 SlidingDrawer 必须指定 handle 和 content 的 id : 三、内部类 interface SlidingDrawer.OnDrawerCloseListener 当drawer(抽屉)关闭时调用 interface SlidingDrawer.OnDrawerOpenListener 当drawer(抽屉)打开时调用 interface SlidingDrawer.OnDrawerScrollListener 当drawer(抽屉)滑动(滚动)时调用 四、XML属性 属性名称 描述 android:allowSingleTap 指示是否可通过单击handle打开或关闭(如果是false,刚用户必须通过拖动,滑动或者使用轨迹球,来打开/关闭抽屉。)默认的是true。 android:animateOnClick 指示当用户点击handle的时候,抽屉是否以动画的形式打开或关闭。默认的是true。 android:bottomOffset Handle距离SlidingDrawer底部的额外距离 android:content 标识SlidingDrawer的内容 android:handle 标识SlidingDrawer的handle(译者注:如按钮) android:orientation SlidingDrawer的方向。必须是下面的一个值: 常量 值 描述 horizontal 0 水平方向对齐 vertical 1 竖直方向对齐 android:topOffset Handle距离SlidingDrawer顶部的额外距离 五、常量 public static final intORIENTATION_HORIZONTAL (译者注:水平方向对齐) 常量值:0 (0x00000000) public static final intORIENTATION_VERTICAL (译者注:垂直方向对齐) 常量值:1 (0x00000001) 六、构造函数 publicSlidingDrawer(Context context, AttributeSet attrs) 用xml中设置的属性来创建一个新的SlidingDrawe 参数 context上下文 attrs XML中定义的属性 public SlidingDrawer (Context context, AttributeSet attrs, int defStyle) 用xml中设置的属性来创建一个新的SlidingDrawe 参数 context上下文 attrs XML中定义的属性 defStyle要应用到这个组件上的样式 七、公共方法 public voidanimateClose() 动画效果关闭抽屉。 参见 close() open() animateOpen() animateToggle() toggle() public voidanimateOpen() 动画效果打开抽屉。 参见 close() open() animateOpen() animateToggle() toggle() public voidanimateToggle() 在打开和关闭抽屉之间动画切换 参见 close() open() animateOpen() animateToggle() toggle() public voidclose() 立即关闭抽屉 参见 open() toggle() animateClose() public ViewgetContent() 返回抽屉的内容(content) 返回值 返回在抽屉内容的视图,它在XML中是用“content”id标识的 public ViewgetHandle() 返回抽屉的handle 返回值 返回在抽屉handle的视图,它在XML中是用“handle”id标识的 public booleanisMoving() 抽屉是否在滚动或滑动。 返回值 如果在滚动或滑动,返回true,否则返回false public booleanisOpened() 当前抽屉是否被完全打开 返回值 如果是打开的,返回true,否则返回false。 public voidlock() 锁定SlidingDrawer,忽略触摸事件 参见 unlock() public booleanonInterceptTouchEvent(MotionEvent event) 实现这个方法可以拦截所有的触屏事件,它在事件被传到子类之前拦截,并获得当前手势的所有权。 使用这个方法时要注意,因为它与View.onTouchEvent(MotionEvent)有一个相当复杂的交互,使用它需要用正确的方法来实现。事件会按照下列顺序接受: 1.down事件会被首先传到本方法中。 2.这个down事件会被当前viewgroup的onTouchEvent()方法或者其各个子视图处理,也就是说你应该实现onTouchEvent()方法并返回true,你会继续看到剩下事件的传递(而不是找一个parent view处理它)。同样的,从onTouchEvent()中返回true,你不会在onInterceptTouchEvent()中接受到任何接下来的事件,并且所有的事件都会被onTouchEvent()处理。 3.如果当前方法返回false,所有接下来的事件(截止到最后包含注册的事件)首先都会被继续传到这里,然后一起传递给目标的onTouchEvent()方法。截至及包括最后注册。 4.如果在这里返回true,将不会收到以下任何事件:目标view将收到同样的事件但是是伴随ACTION_CANCEL事件,并且所有的更进一步的事件将会传递到你自己的onTouchEvent()方法中而不会再在这里出现。 (译者著:这里实在是太麻烦了,很不好懂,我自己看着都头晕,在网上找到一篇很不错的总结,才知道是怎么回事,这里总结一下,记住这个原则你就会很清楚了: 1、onInterceptTouchEvent()是用于处理事件(类似于预处理,当然也可以不处理)并改变事件的传递方向,也就是决定是否允许Touch事件继续向下(子控件)传递,一但返回True(代表事件在当前的viewGroup中会被处理),则向下传递之路被截断(所有子控件将没有机会参与Touch事件),同时把事件传递给当前的控件的onTouchEvent()处理;如果返回false,则把事件交给子控件的onInterceptTouchEvent()处理 2、onTouchEvent()用于处理事件,返回值决定当前控件是否消费(consume)了这个事件,也就是说在当前控件在处理完Touch事件后,是否还允许Touch事件继续向上(父控件)传递,一但返回True,则父控件不用操心自己来处理Touch事件。 相关文章这里1、这里2) 参数 event分层次的动作事件 返回值 如果将运动事件从子视图中截获并且通过onTouchEvent()发送到当前ViewGroup,返回true。当前目标将会收到ACTION_CANCEL事件,并且不再会有其他消息传递到此。 public booleanonTouchEvent(MotionEvent event) 实现触摸屏幕事件的方法 参数 event当前事件 返回值 如果事件被处理就返回true,否则返回false public voidopen() 立即打开抽屉 参见 toggle() close() animateOpen() public voidsetOnDrawerCloseListener(SlidingDrawer.OnDrawerCloseListener onDrawerCloseListener) 给抽屉的关闭事件绑定监听器 参数 onDrawerCloseListener抽屉关闭时的监听器 public voidsetOnDrawerOpenListener(SlidingDrawer.OnDrawerOpenListener onDrawerOpenListener) 给抽屉的打开事件绑定监听器 参数 onDrawerOpenListener抽屉打开时的鉴别器 public voidsetOnDrawerScrollListener(SlidingDrawer.OnDrawerScrollListener onDrawerScrollListener) 给抽屉的滚动(收缩)事件绑定监听器,轻滑(fling)也被当作一个滚动(收缩)事件,同时它可以触发抽屉关闭或者打开事件。 参数 onDrawerScrollListener当滚动(收缩)开始或者停止时通知的监听器 public voidtoggle() 在抽屉打开或关闭状态之间切换。事件会立即产生。 参见 close() open() animateOpen() animateToggle() toggle() public voidunlock() 解锁SlidingDrawer使触摸事件能被处理 参见 lock() 八、补充 文章精选 Android高手进阶教程(二)之----Android Launcher抽屉类SlidingDrawer的使用 SlidingDrawer抽屉类{Android学习指南} MotionEvent事件在onInterceptTouchEvent()、onTouchEvent()中的传递顺序 http://hi.baidu.com/j_fo/blog/item/7321c91324203437dc54017d.html http://www.cnblogs.com/rocky_yi/archive/2011/01/21/1941522.html# 示例代码 < SlidingDrawer android:id ="@+id/drawer" android:layout_width ="match_parent" android:layout_height ="match_parent" android:handle ="@+id/handle" android:content ="@+id/content" > < ImageView android:id ="@id/handle" android:layout_width ="88dip" android:layout_height ="44dip" /> < GridView android:id ="@id/content" android:layout_width ="match_parent" android:layout_height ="match_parent" /> </ SlidingDrawer > SlidingDrawer.OnDrawerCloseListener 译者署名:xiaoQLu 译者链接:http://www.cnblogs.com/xiaoQLu 版本:Android 3.0 r1 结构 继承关系 public static interfaceSlidingDrawer.OnDrawerCloseListener android.widget.SlidingDrawer.OnDrawerCloseListener 类概述 当抽屉被关闭时调用的回调。 公共方法 public abstract voidonDrawerClosed() 当抽屉被完全关闭时调用 补充 文章精选 Android控件之SlidingDrawer(滑动式抽屉)详解与实例 SlidingDrawer.OnDrawerOpenListener 译者署名:xiaoQLu 译者链接:http://www.cnblogs.com/xiaoQLu 版本:Android 3.0 r1 结构 继承关系 public static interfaceSlidingDrawer.OnDrawerOpenListener android.widget.SlidingDrawer.OnDrawerOpenListener 类概述 当抽屉被打开时调用 公共方法 public abstract voidonDrawerOpened() 当抽屉被完全打开时调用 SlidingDrawer.OnDrawerScrollListener 译者署名:xiaoQLu 译者链接:http://www.cnblogs.com/xiaoQLu 版本:Android 3.0 r1 结构 继承关系 public static interfaceSlidingDrawer.OnDrawerScrollListener android.widget.SlidingDrawer.OnDrawerScrollListener 类概述 当抽屉被滚动时调用 公共方法 public abstract voidonScrollEnded() 当用户停止拖曳/滑动抽屉的handle时调用 public abstract voidonScrollStarted() 当用户开始拖曳/滑动抽屉的handle时调用 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582369,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android 3.0 r1 API中文文档(106) —— SimpleCursorAdapter

正文 一、结构 public classSimpleCusrorAdapter extendsResourceCusorAdpater java.lang.Object android.widget.BaseAdapter android.widget.CursorAdapter android.widget.ResourceCusorAdapter android.widget.SimpleCusorAdapter 二、概述 这是一个用起来很方便的适配器类,它主要将Cursor与TexiView或ImageView进行映射。比如,你想设定要展示三列,那么当做好绑定之后,视图就会展示你设定好的那些列;当然了,视图的外观是定义在XML文件里面的,你只需用这个类与视图做好绑定就可以了。与视图绑定有两个阶段。第一阶段:如果SimpleCursorAdapter.ViewBinder可用,将会调用setViewValue(android.view.View, android.database.Cursor, int)方法。该方法返回true就说明绑定成功,否则返回false,这就到了第二阶段,SimpleCursorAdapter内部开始自行绑定,过程是这样的,若绑定到TextView上,调用setViewText();若绑定到ImageView上,调用setViewImage();如果视图不是TextView或ImageView则抛出IllegalStateException异常。当使用带有过滤器的适配器时,例如,在APIDemo中有个AutoCompleteTextView的例子,我们能使用SimpleCursorAdapter.CursorToStringConverter和接口FilterQueryProvider来控制过滤过程。更多信息请参考convertToString(android.database.Cursor)和runQueryOnBackgroundThread(CharSequence)。 三、内部类 public interfaceSimpleCusorAdapter.ViewBinder 这个内部接口可以在外部通过SimpleCursorAdapter.ViewBinder的方式进行Cursor与View的绑定。 public interfaceSimpleCusorAdapter.CursorToStringConverter 这个内部接口可以在外部通过 SimpleCursorAdapter.CursorToStringConverter 的方式 定义怎样将 Cursor 转换成字符串。 四、构造函数 publicSimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) 构造函数启动自动重新查询(auto-requery)。 这个构造器已被标记为弃用(@Deprecated)。 该方法不推荐使用,Cursor查询操作是执行在应用程序的UI线程当中,那么会导致无响应的情况。另一种方式是使用LoaderManager和CursorLoader来进行。 (译者注:3.0已不推荐使用该构造方法) 参数 context应用程序上下文,具体来说就是ListView所在的上下文当中。 layout布局文件的资源定位标识符,也就是说标识了ListView中的item。那么这个布局文件至少包含了参数“to”中的传进来值。 c 数据库游标,如果游标不可用则为null。 from列名字列表,表示着你要绑定到UI上的列。如果游标不可用则为null。 to展示参数“from”中的列,也就是说ListView中的视图显示的是参数“from”的列值,这些视图应该都是TextView。如果游标不可用则为null。 publicSimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[]to,int flags) 该适配器类标准的构造函数。(译者注:3.0新添的构造方法) 参数 context应用程序上下文,具体来说就是ListView所在的上下文当中。 layout布局文件的资源定位标识符,也就是说标识了ListView中的item。那么这个布局文件至少包含了参数“to”中的传进来值。 c数据库游标,如果游标不可用则为null。 from列名字列表,表示着你要绑定到UI上的列。如果游标不可用则为null。 to展示参数“from”中的列,也就是说ListView中的视图显示的是参数“from”的列值,这些视图应该都是TextView。如果游标不可用则为null。 flags 这个标志用来决定该适配器的行为。 ( 译者注: Android3.0 推荐我们传递 CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER 。设置标志用来添加一个监听器,监听着参数 cursor 的数据是否有更变。 ) 四、公共方法 public voidbindView(View view, Context context, Cursor cursor) 绑定所有构造函数中的参数from(字段名)一一绑定到参数to(视图资源ID)。与视图绑定有两个阶段。第一阶段:如果SimpleCursorAdapter.ViewBinder可用,将会调用setViewValue(android.view.View, android.database.Cursor, int)方法。该方法返回true就说明绑定成功,否则返回false,这就到了第二阶段,SimpleCursorAdapter内部开始自行绑定,过程是这样的,若绑定到TextView上,调用setViewText();若绑定到ImageView上,调用setViewImage();如果视图不是TextView或ImageView则抛出IllegalStateException异常。 参数 view已存在的视图(View)对象,也就是早先new出来的。 context应用程序上下文。 cursor 数据库游标。该游标已经移动到指定位置上。 异常 IllegalStateException如果绑定的视图中不是TextView或是ImageView则会抛出这个异常。 参见 bindView(android.view.View, android.content.Context, android.database.Cursor) getViewBinder() setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder) setViewImage(ImageView, String) setViewText(TextView, String) public voidchangeCursorAndColumns(Cursor c, String[] from, int[] to) 同时更改Cursor与View的映射关系。 参数 c数据库游标,如果游标不可用则为null。 from列名字列表,表示着你要绑定到UI上的列。如果游标不可用则为null。 to展示参数“from”中的列,也就是说ListView中的视图显示的是参数“from”的列值,这些视图应该都是TextView。如果游标不可用则为null。 public CharSequenceconvertToString(Cursor cursor) 通过CursorToStringConverter接口实现并返回一个CharSequence类型的值,以表示指定的Cursor。如果没有设置CursorToStringConverter,那么就会用另外的方式进行转换。如果列数为-1,或者cursor为null返回空串,否则返回cursor.toString()。 参数 cursor 转换为CharSequence的数据库游标。 返回值 返回一个不为null的CharSequence类型来表示参数cursor。 public SimpleCursorAdapter.CursorToStringConvertergetCursorToStringConverter() 返回自定义的SimpleCursorAdapter.CursorToStringConverter的实现。 返回值 如果没有设置SimpleCursorAdapter.CursorToStringConverter,则为null。 参考 setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) getStringConversionColumn() setStringConversionColumn(int) convertToString(android.database.Cursor) public intgetStringConversionColumn() 返回转换成String类型的列位置。 返回值 返回列位置,如果没有则返回-1。 参考 convertToString(android.database.Cursor) setStringConversionColumn(int) setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) getCursorToStringConverter() public SimpleCursorAdapter.ViewBindergetViewBinder() 返回SimpleCursorAdapter.ViewBinder引用,这个ViewBinder用来将数据绑定到视图上的。 返回值 如果ViewBinder不存在,则返回null。 参考 bindView(android.view.View, android.content.Context, android.database.Cursor) setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder) public voidsetCursorToStringConverter(SimpleCursorAdapter.CursorToStringConverter cursorToStringConverter) 设置String转换器。 参数 cursorToStringConverterString转换器,设置为null就意味着移除。 参考 setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) getStringConversionColumn() setStringConversionColumn(int) convertToString(android.database.Cursor) public voidsetStringConversionColumn(int stringConversionColumn) 设置Cursor中的列要转换成String类型的位置。不过仅当未设置CursorToStringConverter时,这个列才会进行默认转换。 参数 stringConversionColumn列位置,如果参数为-1,则使用默认转换机制。 参考 convertToString(android.database.Cursor) getStringConversionColumn() setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) getCursorToStringConverter() public voidsetViewBinder(SimpleCursorAdapter.ViewBinder viewBinder) 设置视图绑定器。 参数 viewBinder视图绑定器,可用为null删除现有的绑定器。 参考 bindView(android.view.View, android.content.Context, android.database.Cursor) getViewBinder() public voidsetViewImage(ImageView v, String value) 仅当ViewBinder不存在或是当ViewBinder不为ImageView绑定时(也就是setViewValue()返回false),则这个方法会被bindView()调用,以便为ImageView设置图片。默认情况下,参数value作为图片资源ID来看待,否则,会视为图片的Uri。另外还可以通过过滤器来获得更灵活的设置。 参数 v图片控件引用 value图片资源ID,是从Cursor获取到的。 public voidsetViewText(TextView v, String text) 仅当ViewBinder不存在或是当ViewBinder不为TextView绑定时(也就是setViewValue()返回false),则这个方法会被bindView()调用,以便为TextView设置文本。可用重写适配器从数据库中检索过滤字符串。 参数 v文本控件引用 value为文本控件设置的文本信息(译者注:是从Cursor获取到的)。 public CursorswapCursor(Cursor c) 交换两个Cursor的列以及它们的数据,并最终返回的还是旧的Cursor。不同于changeCursor(Cursor)的是,旧的Cursor非但不会关闭,而且还会返回出去。(译者注: 3.0新添的方法) 参数 c新的Cursor对象。 返回值 返回旧的 Cursor 引用,如果参数 cursor 不可用,则返回 null 。如果参数 cursor 与原来的 Cursor 引用相同,那么也返回 null 。 五、补充 文章精选 ArrayAdapter和SimpleCursorAdapter例子 Android API : SimpleCursorAdapter() 示例代码 Demo_SimpleCursorAdapter(深夜未眠).rar SimpleCursorAdapter.CursorToStringConverter 译者署名:深夜未眠 译者链接:http://chris1012f.javaeye.com/ 版本:Android 3.0 r1 正文 一、结构 public static interfaceSimpleCusrorAdapter.CursorToStringConverter java.lang.Object android.widget.SimpleCursorAdapter.CursorToStringConverter 二、概述 这个内部接口可以在外部通过SimpleCursorAdapter.CursorToStringConverter的方式定义怎样将Cursor转换成字符串。 参见 convertToString(android.database.Cursor) 三、公共方法 public abstract CharSequenceconvertToString(Cursor cursor) 返回CharSequence类型的值,用来表示参数cursor。 参数 cusor需要转换成CharSequence类型的数据库游标。 返回值 返回代表参数cursor的非空字符串。 SimpleCursorAdapter.ViewBinder 译者署名:深夜未眠 译者链接:http://chris1012f.javaeye.com/ 版本:Android 3.0 r1 正文 一、结构 public static interfaceSimpleCusrorAdapter.ViewBinder java.lang.Object android.widget.SimpleCursorAdapter.ViewBinder 二、概述 这个内部接口可以在外部通过SimpleCursorAdapter.ViewBinder的方式进行Cursor与View的绑定。Android推荐我们采用这种方式进行绑定操作,而不是沿用SimpleCursorAdapter内部的方式。 参见 bindView(android.view.View, android.content.Context, android.database.Cursor) setViewImage(ImageView, String) setViewText(TextView, String) 三、公共方法 public abstract booleansetViewValue(View view, Cursor cursor, int columnIndex) 将指定的列数据绑定到指定的视图上。当ViewBinder处理时,这个方法必须返回true。如果这个方法返回false,SimpleCursorAdapter将用自己的方式进行绑定操作。 参数 view被绑定的视图。 cursor数据库游标,绑定数据从它这里获取 columnIndex列位置,能够在数据库游标中寻找到。 返回值 返回true意味着数据与视图已经绑定上,否则为未绑定上。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582379,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android 3.0 r1 API中文文档(108) —— ExpandableListAdapter

正文 一、结构 public interfaceExpandableListAdapter android.widget.ExpandableListAdapter 间接子类 BaseExpandableListAdapter,CursorTreeAdapter,ResourceCursorTreeAdapter, SimpleCursorTreeAdapter, SimpleExpandableListAdapter 二、概述 这个适配器在 ExpandableListView 和底层数据之间起到了一个衔接的作用。该接口的实现类提供了访问子元素(以组的形式将它们分类)的数据;同样,也提供了为子元素和组创建相应的视图。 三、公共方法 public abstract booleanareAllItemsEnabled() ExpandableListAdapter里面的所有条目都可用吗?如果是yes,就意味着所有条目可以选择和点击了。 返回值 返回True表示所有条目均可用。 参见 areAllItemsEnabled() public abstract CursorgetChild(int groupPosition, int childPosition) 获取指定组中的指定子元素数据。 参数 groupPosition组位置(该组内部含有子元素) childPosition子元素位置(相对于其它子元素) 返回值 返回指定子元素数据。 public abstract longgetChildId(int groupPosition, int childPosition) 获取指定组中的指定子元素ID,这个ID在组里一定是唯一的。联合ID(参见getCombinedChildId(long, long))在所有条目(所有组和所有元素)中也是唯一的。 参数 groupPosition组位置(该组内部含有子元素) childPosition子元素位置(相对于其它子元素) 返回值 子元素关联ID。 public abstract ViewgetChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) 获取一个视图对象,显示指定组中的指定子元素数据。 参数 groupPosition组位置(该组内部含有子元素) childPosition子元素位置(决定返回哪个视图) isLastChild子元素是否处于组中的最后一个 convertView重用已有的视图(View)对象。注意:在使用前你应该检查一下这个视图对象是否非空并且这个对象的类型是否合适。由此引伸出,如果该对象不能被转换并显示正确的数据,这个方法就会调用getChildView(int, int, boolean, View, ViewGroup)来创建一个视图(View)对象。 parent 返回的视图(View)对象始终依附于的视图组。 返回值 指定位置上的子元素返回的视图对象 public abstract intgetChildrenCount(int groupPosition) 获取指定组中的子元素个数 参数 groupPosition组位置(决定返回哪个组的子元素个数) 返回值 指定组的子元素个数 public abstract longgetCombinedChildId(long groupId, long childId) 从列表所有项(组或子项)中获得一个唯一的子ID号。可折叠列表要求每个元素(组或子项)在所有的子元素和组中有一个唯一的ID。本方法负责根据所给的子ID号和组ID号返回唯一的ID。此外,若hasStableIds()是true,那么必须要返回稳定的ID。 参数 groupId包含该子元素的组ID childId子元素的ID 返回值 列表所有项(组或子项)中唯一的(和可能稳定)的子元素ID号。(译者注:ID理论上是稳定的,不会发生冲突的情况。也就是说,这个列表会有组、子元素,它们的ID都是唯一的。) public abstract CursorgetGroup(int groupPosition) 获取指定组中的数据 参数 groupPosition组位置 返回值 返回组中的数据,也就是该组中的子元素数据。 public abstract intgetGroupCount() 获取组的个数 返回值 组的个数 public abstract longgetGroupId(int groupPosition) 获取指定组的ID,这个组ID必须是唯一的。联合ID(参见getCombinedGroupId(long))在所有条目(所有组和所有元素)中也是唯一的。 参数 groupPosition组位置 返回值 返回组相关ID public abstract ViewgetGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) 获取显示指定组的视图对象。这个方法仅返回关于组的视图对象,要想获取子元素的视图对象,就需要调用getChildView(int, int, boolean, View, ViewGroup)。 参数 groupPosition组位置(决定返回哪个视图) isExpanded 该组是展开状态还是伸缩状态 convertView重用已有的视图对象。注意:在使用前你应该检查一下这个视图对象是否非空并且这个对象的类型是否合适。由此引伸出,如果该对象不能被转换并显示正确的数据,这个方法就会调用getGroupView(int, boolean, View, ViewGroup)来创建一个视图(View)对象。 parent返回的视图对象始终依附于的视图组。 返回值 返回指定组的视图对象 public abstract booleanhasStableIds() 组和子元素是否持有稳定的ID,也就是底层数据的改变不会影响到它们。 返回值 返回一个Boolean类型的值,如果为TRUE,意味着相同的ID永远引用相同的对象。 public abstract booleanisChildSelectable(int groupPosition, int childPosition) 是否选中指定位置上的子元素。 参数 groupPosition组位置(该组内部含有这个子元素) childPosition子元素位置 返回值 是否选中子元素 public abstract booleanisEmpty() 返回值 如果当前适配器不包含任何数据则返回True。经常用来决定一个空视图是否应该被显示。一个典型的实现将返回表达式getCount() == 0的结果,但是由于getCount()包含了头部和尾部,适配器可能需要不同的行为。 参见 isEmpty() public abstract voidonGroupCollapsed(int groupPosition) 当组收缩状态的时候此方法被调用。 参数 groupPosition收缩状态的组索引 public abstract voidonGroupExpanded(int groupPosition) 当组展开状态的时候此方法被调用。 参数 groupPosition展开状态的组位置 public abstract voidregisterDataSetObserver(DataSetObserver observer) 注册一个观察者(observer),当此适配器数据修改时即调用此观察者。 参数 observer当数据修改时通知调用的对象。 public abstract voidunregisterDataSetObserver(DataSetObserver observer) 取消先前通过registerDataSetObserver(DataSetObserver)方式注册进该适配器中的观察者对象。 参数 observer 取消这个观察者的注册 四、补充 文章精选 android可展开(收缩)的列表ListView(ExpandableListView) android CursorAdapter的监听事件 ExpandableListView.OnChildClickListener 译者署名:情敌贝多芬 译者链接:http://liubey.javaeye.com/ 版本:Android 3.0 r1 结构 继承关系 public static interfaceExpandableListView.OnChildClickListener java.lang.Object android.widget.ExpandableListView.OnChildClickListener 子类及间接子类 间接子类 ExpandableListActivity 类概述 这是一个定义了当可折叠列表(expandable list)里的子元素(child)发生点击事件时调用的回调方法的接口。 公共方法 public abstract booleanonChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) 用当可折叠列表里的子元素(child)被点击的时候被调用的回调方法。 参数 parent 发生点击动作的ExpandableListView v 在expandable list/ListView中被点击的视图(View) groupPosition 包含被点击子元素的组(group)在ExpandableListView中的位置(索引) childPosition被点击子元素(child)在组(group)中的位置 id 被点击子元素(child)的行ID(索引) 返回值 当点击事件被处理时返回 true ExpandableListView.OnGroupClickListener 译者署名:情敌贝多芬 译者链接:http://liubey.javaeye.com/ 版本:Android 3.0 r1 结构 继承关系 public static interfaceExpandableListView.OnGroupClickListener java.lang.Object android.widget.ExpandableListView.OnGroupClickListener 类概述 这是一个定义了当可折叠列表(expandable list)里的组(group)发生点击事件时调用的回调方法的接口。 公共方法 public abstract booleanonGroupClick(ExpandableListView parent, View v, int groupPosition, long id) 用当可折叠列表里的组(group)被点击的时候被调用的回调方法。 参数 parent发生点击事件的ExpandableListConnector v 在expandable list/ListView中被点击的视图(View) groupPosition被点击的组(group)在ExpandableListConnector中的位置(索引) id 被点击的组(group)的行ID(索引) 返回值 当点击事件被处理的时候返回true ExpandableListView.OnGroupCollapseListener 译者署名:深夜未眠 译者链接:http://chris1012f.javaeye.com/ 版本:Android 3.0 r1 结构 继承关系 public interfaceExpandableListView.OnGroupCollapseListener java.lang.Object android.widget.ExpandableListView.OnGroupCollapseListener 子类及间接子类 间接子类 ExpandableListActivity 类概述 当收缩某个组时,就会发出通知。 公共方法 public abstract void onGroupCollapse (int groupPosition) 每当收缩当前可伸缩列表中的某个组时,就调用该方法。 参数 groupPosition组位置,也就是收缩的那个组的位置。 ExpandableListView.OnGroupExpandListener 译者署名:深夜未眠 译者链接:http://chris1012f.javaeye.com/ 版本:Android 3.0 r1 结构 继承关系 public interfaceExpandableListView.OnGroupExpandListener java.lang.Object android.widget.ExpandableListView.OnGroupExpandListener 子类及间接子类 间接子类 ExpandableListActivity 类概述 当展开某个组时,就会发出通知。 公共方法 public abstract void onGroupExpand (int groupPosition) 每当展开当前可伸缩列表中的某个组时,就调用该方法。 参数 groupPosition 组位置,也就是展开的那个组的位置。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582376,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册