首页 文章 精选 留言 我的

精选列表

搜索[API集成],共10000篇文章
优秀的个人博客,低调大师

Android中文 API (31) —— TimePicker

正文 一、结构 public classTimePickerextendsFrameLayout java.lang.Object android.view.View android.view.ViewGroup android.widget.FrameLayout android.widget.TimePicker 二、概述 用于选择一天中时间的视图,支持24小时及上午/下午模式。小时,分钟及上午/下午(如果可用)都可以用垂直滚动条来控制。用键盘来输入小时。两个数的小时数可以通过输入两个数字来实现,例如在一定时间内输入‘1’和‘2’即选择了12点。分钟能显示输入的单个数字。在AM/PM模式下,用户可以输入'a', 'A"或'p', 'P'来选取。对于对话框视图,参见TimePickerDialog。 三、公共方法 public int getBaseline () 返回窗口空间的文本基准线到其顶边界的偏移量。如果这个部件不支持基准线对齐,这个方法返回-1/。 返回值 基准线的偏移量,如果不支持基准线对齐则返回-1。 public Integer getCurrentHour () 获取当前时间的小时部分。 返回值 当前小时(0-23) public Integer getCurrentMinute () 获取当前时间的分钟部分。 返回值 当前分钟。 public boolean is24HourView () 获取当前系统设置是否是24小时制。 返回值 如果是24小时制返回true,否则返回false。 public void setCurrentHour (Integer currentHour) 设置当前小时。 public void setCurrentMinute (Integer currentMinute) 设置当前分钟(0-59)。 public void setEnabled (boolean enabled) 设置可用的视图状态。可用的视图状态的解释在子类中改变。 参数 enabled如果可用为true,否则为false。 public void setIs24HourView (Boolean is24HourView) 设置是24小时还是上午/下午制。 参数 is24HourView True表示24小时制. False表示上午/下午制. public void setOnTimeChangedListener (TimePicker.OnTimeChangedListener onTimeChangedListener) 设置时间调整事件的回调函数。 参数 onTimeChangedListener回调函数,不能为空。 四、受保护方法 protected void onRestoreInstanceState (Parcelable state) 允许一个视图回复到之前用onSaveInstanceState()保存的状态,state参数不能为空。 参数 state之前调用onSaveInstanceState()返回的状态。 protected Parcelable onSaveInstanceState () 用来允许一个视图保存当前的内部状态,之后可以创建新的实例应用相同的状态。状态信息不能包含常量或在之后重新构造。例如,你永远不能保存在屏幕上的当前位置,因为当创建一个新的视图时,它将会被放置到它的层次结构中,它的位置会被重新计算。 你可以存储到这里的一些例子:一个文本框中当前光标的位置(但通常不是文字本身,文字通常保存在内容提供者(content provider)或其他持久的储存中),一个列表视图中的当前选中项。 返回值 返回一个包含视图当前状态的Parcelable对象,或没有什么状态保存时返回null。默认实现返回null。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582644,如需转载请自行联系原作者

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

Android 中文 API (21) —— DigitalClock

正文 一、结构 public classDigitalClockextendsTextView java.lang.Object android.view.View android.widget.TextView android.widget.DigitalClock 二、 概述 像AnalogClock(),但是是数字的。显示秒。修正:分开显示小时/分钟/秒,均衡的字体不能够摆动显示。(译者注:根据字体按比例显示小时/分钟/秒,无法像AnalogClock转动显示) 三、 受保护方法 protected void onAttachedToWindow () 视图(DigitalClock)附在一个窗体上时调用。在这个点的表面进行绘制。注意这个方法保证在onDraw(Canvas)以前调用,但是它可以在第一次调用onDraw以前任何时间调用——包括onMeasure(int, int)之前或之后。 protected void onDetachedFromWindow () 视图(DigitalClock)从窗体上分离(移除)时调用。在这个点的表面不再有画面绘制。 四、补充 4.1 [Android1.5]DigitalClock自定义日期输出格式 4.2 使用代码 < DigitalClock android:id = " @+id/DigitalClock " android:layout_width = " wrap_content " android:layout_height = " wrap_content " /> 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582669,如需转载请自行联系原作者

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

Android中文API(99)—— RelativeLayout

正文 一、结构 public classRelativeLayout extendsViewGroup java.lang.Object android.view.View android.view.ViewGroup android.widget.RelativeLayout 直接子类 DialerFilter, TwoLineListItem 二、概述 RelativeLayout顾名思义,相对布局,在这个容器内部的子元素们可以使用彼此之间的相对位置或者和容器间的相对位置来进行定位。 注意,不能在RelativeLayout容器本身和他的子元素之间产生循环依赖,比如说,不能将RelativeLayout的高设置成为WRAP_CONTENT的时候将子元素的高设置成为ALIGN_PARENT_BOTTOM。 (译者注:这点额外要注意,当然这也很好理解,如果容器是不定高的,那么子元素当然无法对齐容器的底边^_^)。 可以参考官方 SDK 中的 RelativeLayout 教学贴 Relative Layout tutorial 三、常量 数据类型 常量名称 描述 int ABOVE 定义将元素的底边对齐另一个元素的顶边 int ALIGN_BASELINE 定义将元素基线的对齐另一个元素的基线 int ALIGN_BOTTOM 定义将元素底边的对齐另一个元素的底边 int ALIGN_LEFT 定义将元素的左边对齐另一个元素的左边 int ALIGN_PARENT_BOTTOM 定义将元素的底边对齐其父容器(RelativeLayout)的底边 int ALIGN_PARENT_LEFT 定义将元素的左边对齐其父容器(RelativeLayout)的左边 int ALIGN_PARENT_RIGHT 定义将元素的右边对齐其父容器(RelativeLayout)的右边 int ALIGN_PARENT_TOP 定义将元素的顶边对齐其父容器(RelativeLayout)的顶边 int ALIGN_RIGHT 定义将元素的右边对齐另一个元素的右边 int ALIGN_TOP 定义将元素的顶边对齐另一个元素的顶边 int BELOW 定义将元素的顶边对齐另一个元素的底边 int CENTER_HORIZONTAL 定义让元素在容器(RelativeLayout)内水平居中 int CENTER_IN_PARENT 定义让元素位于容器(RelativeLayout)的中心 int CENTER_VERTICAL 定义让元素在容器(RelativeLayout)内垂直居中 int LEFT_OF 定义将元素的右边对齐另一个元素的左边 int RIGHT_OF 定义将元素的左边对齐另一个元素的右边 int TRUE 四、内部类 Class RelativeLayout.LayoutParams 和RelativeLayout相关联的布局信息. 五、XML属性 属性名称 描述 android:gravity 设置容器中的内容该如何定位。对象本身的x和y轴。 android:ignoreGravity 设置容器中的哪个子元素会不受Gravity的影响. (译者注:接收参数:子元素的Id,如果设置成为0,则全部子元素都会受到影响) 六、公共方法 public booleandispatchPopulateAccessibilityEvent(AccessibilityEvent event) 分发AccessibilityEvent事件到该View的子视图中。 参数 event 事件本身. 返回值 如果事件分发完成,返回真。 public RelativeLayout.LayoutParamsgenerateLayoutParams(AttributeSet attrs) 返回一个新的已设置属性集合的布局参数。 参数 attrs 构建layout布局参数的属性集合. 返回值 一个RelativeLayout.LayoutParams的实例或者他的一个子类 public intgetBaseline() 返回窗口空间的文本基准线到其顶边界的偏移量。如果这个部件不支持基准线对齐,这个方法返回-1。 返回值 基准线的偏移量,如果不支持基准线对齐则返回-1 public voidrequestLayout() 当容器中的某个视图发生改变,会影响整个布局时,就调用这个方法,他会改变整个视图树的布局。 public voidsetGravity(int gravity) 描述子视图该如何摆放,默认值是Gravity.LEFT | Gravity.TOP(译者注:说明RelativeLayout的元素如果不设置位置,会从左上角开始堆叠)。 参数 gravity 位置值,可以参考Gravity 相关的XML属性 android:gravity 参见 setHorizontalGravity(int) setVerticalGravity(int) public voidsetHorizontalGravity(int horizontalGravity) public voidsetVerticalGravity(int verticalGravity)) public voidsetIgnoreGravity(int viewId) 定义容器中的那个VIew会忽略容器设置的Gravity,如果容器设置的Gravity是Gravity.LEFT | Gravity.TOP时,定义这个属性没有任何效果。 参数 viewId将要忽略容器Gravity的视图的id,设置为0则不会有任何View忽略Gravity. 相关的XML属性 android:ignoreGravity 参见 setGravity(int) 七、受保护方法 protected booleancheckLayoutParams(ViewGroup.LayoutParams p) (译者注:检测是不是AbsoluteLayout.LayoutParams的实例) protected ViewGroup.LayoutParams generateDefaultLayoutParams() 返回一组宽度为WRAP_CONTENT,高度为WRAP_CONTENT,坐标是(0,0)的布局参数。 返回值 一组默认的布局参数或null值。 protected ViewGroup.LayoutParamsgenerateDefaultLayoutParams( ViewGroup .LayoutParams p) 返回一组合法的受支持的布局参数。当一个ViewGroup传递一个布局参数没有通过checkLayoutParams(android.view.ViewGroup.LayoutParams)检测的视图时,此方法被调用。此方法会返回一组新的适合当前ViewGroup的布局参数,可能从指定的一组布局参数中复制适当的属性。 参数 p 被转换成一组适合当前ViewGroup的布局参数. 返回值 一个ViewGroup.LayoutParams的实例或者其中的一个子节点 protected voidonLayout(boolean changed, int l, int t, int r, int b) 在此视图view给他的每一个子元素分配大小和位置时调用。派生类可以重写此方法并且重新安排他们子类的布局。 参数 changed这是当前视图view的一个新的大小或位置 l相对于父节点的左边位置 t相对于父节点的顶点位置 r相对于父节点的右边位置 b相对于父节点的底部位置 public voidonMeasure(int widthMeasureSpec, int heightMeasureSpec) 测量视图以确定其内容宽度和高度。此方法被measure(int, int)调用。需要被子类重写以提供对其内容准确高效的测量。 约定:当重写此方法时,你必须调用setMeasuredDimension(int, int)来保存当前视图view的宽度和高度。不成功调用此方法将会导致一个IllegalStateException异常,是由measure(int, int)抛出。所以调用父类的onMeasure(int, int)方法是必须的。 父类的实现是以背景大小为默认大小,除非MeasureSpec(测量细则)允许更大的背景。子类可以重写onMeasure(int,int)以对其内容提供更佳的尺寸。 如果此方法被重写,那么子类的责任是确认测量高度和测量宽度要大于视图view的最小宽度和最小高度(getSuggestedMinimumHeight() and getSuggestedMinimumWidth()),使用这两个方法可以取得最小宽度和最小高度。 参数 widthMeasureSpec 强加于父节点的横向空间要求。要求是使用View.MeasureSpec进行编码。 heightMeasureSpec强加于父节点的纵向空间要求。要求是使用View.MeasureSpec进行编码。 八、补充 文章精选 [Android学习指南]相对布局RelativeLayout Android RelativeLayout属性 RelativeLayout排版_免寫程式[blogspot] 示例代码 <? xmlversion="1.0"encoding="utf-8" ?> < RelativeLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < TextView android:id ="@+id/label" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="Typehere:" /> < EditText android:id ="@+id/entry" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:background ="@android:drawable/editbox_background" android:layout_below ="@id/label" /> < Button android:id ="@+id/ok" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_below ="@id/entry" android:layout_alignParentRight ="true" android:layout_marginLeft ="10dip" android:text ="OK" /> < Button android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_toLeftOf ="@id/ok" android:layout_alignTop ="@id/ok" android:text ="Cancel" /> </ RelativeLayout > 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582395,如需转载请自行联系原作者

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

Android中文API(95)——SimpleExpandableListAdapter

正文 一、结构 public abstract classSimpleExpandableListAdapter extendsBaseExpandableListAdapter java.lang.Object android.widget.BaseExpandableListAdapter android.widget.SimpleExpandableListAdapter 二、概述 一个使用Map存储组元素和子元素的静态数据,使用XML资源文件定义组元素和子元素View如何显示的简单适配器。你可以区分指定组元素返回的数据是List<Map>类型。在ArrayList中的每个实体对应ExpandalbeList中的一个组。实体中的Map列表包含了组下的每行数据。你也可以指定一个XML文件来定义用于在组元素的View的显示。此时Map中的键值将与指定的View(XML中定义的view id)对应起来。子元素的处理情况类似。注意当可折叠的深度若不只1层,返回的数据将被指定为List类型。首个List对应子元素中所代表的组,第二个List对应孙子元素在子元素组中的位置。Map亦将支持这样的特殊元素。(子元素嵌套组元素的情况) (译者注: ExpandableList 支持深度大于 1 的情况。在 andorid 自带的 ApiDomos 的例子中有这个的代码: App/View/ExpandableList3 )。 三、构造函数 publicSimpleExpandableListAdapter(Contextcontext,List<?extendsMap<String,?>> groupData, int groupLayout,String[]groupFrom, int[] groupTo,List<?extendsList<?extendsMap<String,?>>> childData, int childLayout,String[]childFrom, int[] childTo) 构造函数 参数 context 与SimpleExpandableListAdapter关联的ExpandableListView的上下文。 groupData一个Maps列表(List)。集合中的每个字典项与可折叠列表中的每个组元素一致。字典项提供了组元素包含的所有数据,并包含所有在"groupFrom"中指定的记录。 groupLayout 显示组元素的资源文件。该资源文件定义了如何显示组元素。该布局文件必须至少包括groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到) groupFrom一个键值列表。对应与组相关联的Map中的键值。 grouptTo组View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个groupFrom参数获得列元素的数据。 childData 一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。 childLayout显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View。(即childTo中的view id数组必须都在该布局文件中找到) childFrom 定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。 childTo子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。 publicSimpleExpandableListAdapter(Contextcontext,List<?extendsMap<String,?>> groupData, int expandedGroupLayout, int collapsedGroupLayout,String[]groupFrom, int[] groupTo,List<?extendsList<?extendsMap<String,?>>> childData, int childLayout,String[]childFrom, int[] childTo) 构造函数。 参数 context 与SimpleExpandableListAdapter关联的ExpandableListView的上下文。 groupData一个Maps列表(List)。集合中的每个字典项与可折叠列表中的每个组元素一致。字典项提供了组元素包含的所有数据,并包含所有在"groupFrom"中指定的记录。 expandedGroupLayout定义组展开时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到) collapasedGroupLayout定义组折叠时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到) groupFrom一个键值列表。对应与组相关联的Map中的键值。 grouptTo组View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个groupFrom参数获得列元素的数据。 childData 一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。 childLayout显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View。(即childTo中的view id数组必须都在该布局文件中找到) childFrom 定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。 childTo子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。 publicSimpleExpandableListAdapter(Contextcontext,List<?extendsMap<String,?>> groupData, int expandedGroupLayout, int collapsedGroupLayout,String[]groupFrom, int[] groupTo,List<?extendsList<?extendsMap<String,?>>> childData, int childLayout, int lastChildLayout,String[]childFrom, int[] childTo) 构造函数。 参数 context 与SimpleExpandableListAdapter关联的ExpandableListView的上下文。 groupData一个Maps列表(List)。集合中的每个字典项与可折叠列表中的每个组元素一致。字典项提供了组元素包含的所有数据,并包含所有在"groupFrom"中指定的记录。 expandedGroupLayout 定义组展开时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到) collapasedGroupLayout 定义组折叠时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到) groupFrom一个键值列表。对应与组相关联的Map中的键值。 grouptTo 组View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个groupFrom参数获得列元素的数据。 childData 一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。 childLayout显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View。(即childTo中的view id数组必须都在该布局文件中找到) lastChildLayout定义每组中最后一个子元素的View资源布局情况。该布局文件应当至少包括所有在childTo中所定义的View。(即childTo中的View id数组必须都在该布局文件中找到) childFrom 定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。 childTo子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。 四、公共方法 publicObjectgetChild(int groupPosition, int childPosition) public longgetChildId(int groupPosition, int childPosition) (译者注:获取与在给定组给予孩子相关的数据。) publicViewgetChildView(int groupPosition, int childPosition, boolean isLastChild,ViewconvertView,ViewGroupparent) (译者注:获取子项) public intgetChildrenCount(int groupPosition) (译者注:返回在指定Group的Child数目。) publicObjectgetGroup(int groupPosition) public intgetGroupCount() (译者注:返回Group的总数目。) public longgetGroupId(int groupPosition) publicViewgetGroupView(int groupPosition, boolean isExpanded,ViewconvertView,ViewGroupparent) (译者注:获取父项) public booleanhasStableIds() public booleanisChildSelectable(int groupPosition, int childPosition) (译者注:是否让child获得焦点) publicViewnewChildView(boolean isLastChild,ViewGroupparent) 新建一个子元素View。 参数 isLastChild该child是否是组中的最后一个元素 parent 新的View的最终父亲。 返回 新的子元素View对象。 publicViewnewGroupView(boolean isExpanded,ViewGroupparent) 新建一个组元素View。 参数 isExpanded该组元素是否当前处于折叠状态 parent新View的最终父亲。 返回 新的组元素View对象。 五、补充 文章精选 ExpandableListActivity和SimpleExpandableListAdapter的使用方法 Expandable lists[blogspot] 示例代码: List < Map < String,String >> groupData = new ArrayList < Map < String,String >> (); List < List < Map < String,String >>> childData = new ArrayList < List < Map < String,String >>> (); for ( int i = 0 ;i < 20 ;i ++ ){ Map < String,String > curGroupMap = new HashMap < String,String > (); groupData.add(curGroupMap); curGroupMap.put(NAME, " Group " + i); curGroupMap.put(IS_EVEN,(i % 2 == 0 ) ? " Thisgroupiseven " : " Thisgroupisodd " ); List < Map < String,String >> children = new ArrayList < Map < String,String >> (); for ( int j = 0 ;j < 15 ;j ++ ){ Map < String,String > curChildMap = new HashMap < String,String > (); children.add(curChildMap); curChildMap.put(NAME, " Child " + j); curChildMap.put(IS_EVEN,(j % 2 == 0 ) ? " Thischildiseven " : " Thischildisodd " ); } childData.add(children); } // Setupouradapter mAdapter = new SimpleExpandableListAdapter( this , groupData, android.R.layout.simple_expandable_list_item_1, new String[]{NAME,IS_EVEN}, new int []{android.R.id.text1,android.R.id.text2}, childData, android.R.layout.simple_expandable_list_item_2, new String[]{NAME,IS_EVEN}, new int []{android.R.id.text1,android.R.id.text2} ); 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582403,如需转载请自行联系原作者

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

Android 中文 API (93) —— BaseExpandableListAdapter

正文 一、结构 public abstract classBaseExpandableListAdapter extendsObject implementsExpandableListAdapter,HeterogeneousExpandableList java.lang.Object android.widget.BaseExpandableListAdapter 直接子类 CursorTreeAdapter,SimpleExpandableListAdapter 间接子类 ResourceCursorTreeAdapter,SimpleCursorTreeAdapter 二、概述 BaseExpandableListAdapter是ExpandableListAdapter的抽象基类,从一些数据中提供数据和视图给可折叠列表视图。 所有继承本类的Adapters需要保证实现的getCombinedChildId(long, long)和getCombinedGroupId(long)方法能正确地从View组或View子元素的ID中生成唯一的ID号。 (译者注:组元素表示可折叠的列表项,子元素表示列表项展开后看到的多个子元素项。由于可折叠列表单纯寻找组元素和子元素的ID不是很方便,因此使用联合ID的方式来解决。于是有了getCombinedChildId()和getCombinedGroupId()方法。在andorid自带的ApiDomos的例子中有这个的代码:App/View/ExpandableList1)。 三、公共方法 public booleanareAllItemsEnabled() 是否启用所有元素。 public intgetChildType(int groupPosition, int childPosition) 获取由getChildView(int, int, boolean, View, ViewGroup)方法创建的指定子元素类型。 参数 groupPosition子元素所在的组位置 childPosition子元素所在的位置 返回值 0表示任意一个子元素类型,因此此时应当只声明一种子元素类型。 publicintgetChildTypeCount() 获取由getChildView(int, int, boolean, View, ViewGroup)创建的所有子元素类型个数。每种类型表示一个能被getChildView(int, int, boolean, View, ViewGroup)转换的(任意组中的)View集合。如果适配器总是从所有的子元素中返回同一种类型,本方法将返回1。 本方法将仅仅在AdapterView设置适配器时被调用。 返回值 BaseExpandableListAdapter默认返回1。 public longgetCombinedChildId(long groupId, long childId) 若你预见以下默认实现的IDs可能出现冲突,请重写本方法。 实现返回一个long型: *第0位:不管ID指向的是一个子元素(未设置)还是一个组(已设置),对于本方法bit值为1. *第1-31位:小于31位的组ID。 *第32-63位:小于32位的子元素ID。 从列表所有项(组或子项)中获得一个唯一的子ID号。可折叠列表要求每个元素(组或子项)在所有的子元素和组中有一个唯一的ID。本方法负责根据所给的子ID号和组ID号返回唯一的ID。此外,若hasStableIds()是true,那么必须要返回稳定的ID。 参数 groupID包含该子元素的组ID childID子元素的ID号 返回 列表所有项(组或子项)中唯一的(和可能稳定)的子元素ID号。 public longgetCombinedGroupId(long groupId) 若你预见以下默认实现产生IDs冲突的话,请重写本方法。 实现返回一个long型: *第0位:不管ID指向的是一个子元素(未设置)还是一个组(已设置),对于本方法bit值为1. *第1-31位:小于31位的组ID。 *第32-63位:小于32位的子元素ID。 从列表所有项(组或子项)中获得一个唯一的子ID号。可折叠列表要求每个元素(组或子项)在所有的子元素和组中有一个唯一的ID。本方法负责根据所给的子ID号和组ID号返回唯一的ID。此外,若hasStableIds()是true,那么必须要返回稳定的ID。 参数 groupID包含该子元素的组ID 返回 列表所有项(组或子项)中唯一的(和可能稳定)的子元素ID号。 public intgetGroupType(int groupPosition) 获得由getGroupView(int, boolean, View, ViewGroup)方法创建的组元素类型。为设置的组元素。 参数 groupPosition应返回类型所在组的位置 返回 0表示任意组位置,因此此时应当只申明了一种组类型。 public intgetGroupTypeCount() 返回由getGroupView(int, boolean, View, ViewGroup)方法创建的组视图类型个数。每个类型表示一个能被getGroupView(int, boolean, View, ViewGroup)转换的View集合。如果适配器总是返回同一种组类型,则此时本方法将返回1. 本方法将仅当适配器被AdapterView设置时调用。 返回 BaseExpandableListAdapter默认返回1. public booleanisEmpty() (译者注:如果适配器没有任何数据,返回真。参见Adapter) public voidnotifyDataSetChanged() (译者注:当后台数据集发生改变时,调用此方法响应数据集的更改。) 参见 notifyChanged() public voidnotifyDataSetInvalidated() (译者注:当后台数据集不被验证的时候,调用此方法。) 参见 notifyInvalidated() public voidonGroupCollapsed(int groupPosition) 当组折叠的时候被调用。 参数 groupPosition要折叠的组所在位置 public voidonGroupExpanded(int groupPosition) 当组展开的时候被调用。 参数 groupPosition要折叠的组所在位置 public voidregisterDataSetObserver(DataSetObserverobserver) (译者注:注册当用该适配器修改数据时调用的观察器。) public voidunregisterDataSetObserver(DataSetObserverobserver) (译者注:注销之前通过registerDataSetObserver(DataSetObserver)方法注册到该适配器的观察器。) 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582413,如需转载请自行联系原作者

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

android中文api(89)——ViewManager

正文 一、结构 public interfaceViewManager android.view.ViewManager 间接子类 AbsListView, AbsSpinner, AbsoluteLayout, AdapterView<T extends Adapter>, AppWidgetHostView, DatePicker, DialerFilter, ExpandableListView, FrameLayout, Gallery, GestureOverlayView, GridView, HorizontalScrollView, ImageSwitcher, LinearLayout, ListView, MediaController, RadioGroup, RelativeLayout, ScrollView, SlidingDrawer, Spinner, TabHost, TabWidget, TableLayout, TableRow, TextSwitcher, TimePicker, TwoLineListItem, ViewAnimator, ViewFlipper, ViewGroup, ViewSwitcher, WebView, WindowManager, ZoomControls 二、概述 此接口使你可以向一个Activity中添加和移除子视图。调用Context.getSystemService(),你可以得到该类的一个实例。(译者注:ViewManager是个接口,没有任何实现,抽象类ViewGroup对该接口的三个方法进行了具体实现。) 三、公共方法 public abstract voidaddView(View view, ViewGroup.LayoutParams params) (译者注:增添一个视图对象,并指定其布局参数 参数 view 制定添加的子视图 params子视图的布局参数) public abstract voidremoveView(View view) (译者注:移除指定的视图 参数 view指定移除的子视图) public abstract voidUpdateViewLayout(View view, ViewGroup.LayoutParams params) (译者注:更新一个子视图 参数 view 指定更新的子视图 params 更新时所用的布局参数) 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582418,如需转载请自行联系原作者

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

Android中文API(96)——SoundEffectConstants

正文 一、结构 public classSoundEffectConstantsextendsObject java.lang.Object android.view.SoundEffectConstants 二、概述 playSoundEffect(int)所需的播放声效设定常量。 三、常量 public static final int CLICK (译者注:单击事件)常量,取值0 (0x00000000) public static final int NAVIGATION_DOWN (译者注:View.FOCUS_DOWN)常量,取值4 (0x00000004) public static final int NAVIGATION_LEFT (译者注:View.FOCUS_LEFT)常量,取值1 (0x00000001) public static final int NAVIGATION_RIGHT (译者注:View.FOCUS_RIGHT)常量,取值3 (0x00000003) public static final int NAVIGATION_UP (译者注:View.FOCUS_UP)常量,取值2 (0x00000002) 四、公共方法 public static intgetContantForFocusDirection(int direction) 针对不同声音方向,获得相应的发声常数。 参数 direction参数取值为以下常量之一:FOCUS_UP,FOCUS_DOWN,FOCUS_LEFT,FOCUS_RIGHT,FOCUS_FORWARD,FOCUS_BACKWARD. 返回值 合适的发声常数 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582401,如需转载请自行联系原作者

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

Android 中文api (88)——SharedPreferences

正文 一、结构 public interfaceSharedPreferences android.content.SharedPreferences 二、概述 用于访问和修改getSharedPreferences(String, int)返回偏好设置数据(preference data)的一个接口。对于任何一组特殊的preferences,所有的客户端共享一个此类单独的实例。 修改Preferences必须通过一个SharedPreferences.Editor对象,以确保当他们提交存储数据的操作时,preference值保持一致的状态。 注意:当前此类不支持多线程访问。后续将添加。 (译者注:这里译为”偏好设定”,类似于ini文件,用于保存应用程序的属性设置) 参见 getSharedPreferences(String, int) 三、内部类 interface SharedPreferences.Editor 用于修改SharedPreferences对象设定值的接口。 interface SharedPreferences.OnSharedPreferenceChangeListener 接口定义一个用于在偏好设定(shared preference)改变时调用的回调函数。 四、公共方法 public abstract booleancontains(String key) 判断preferences是否包含一个preference。 参数 key想要判断的preference的名称 返回值 如果preferences中存在preference,则返回true,否则返回false。 public abstract SharedPreferences.Editoredit() 针对preferences创建一个新的Editor对象,通过它你可以修改preferences里的数据,并且原子化的将这些数据提交回SharedPreferences对象。(译者注:原子化——作为一个整体提交,原子性) 注意:如果你想要在SharedPreferences中实时显示,刚通过Editor对象进行的修改,那么你必须调用commit()方法。 返回值 返回一个SharedPreferences.Editor的新实例,允许你修改SharedPreferences对象里的值。 public abstract Map<String, ?>getAll() 取得preferences里面的所有值 返回值 返回一个map,其中包含一列preferences中的键值对 异常 空指针异常(NullPointerException) public abstract boolean getBoolean (String key, boolean defValue) 从preferences中获取一个boolean类型的值。 参数 key 获取的preference的名称 defValue当此preference不存在时返回的默认值 返回值 如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个boolean类型,则抛出ClassCastException。 异常 ClassCastException public abstract float getFloat (String key, float defValue) 从preferences中获取一个float类型的值。 参数 key 获取的preference的名称 defValue当此preference不存在时返回的默认值 返回值 如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个float类型,则抛出ClassCastException。 异常 ClassCastException public abstract intgetInt(String key, int defValue) 从preferences中获取一个int类型的值。 参数 key 获取的preference的名称 defValue当此preference不存在时返回的默认值 返回值 如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个int类型,则抛出ClassCastException。 异常 ClassCastException public abstract longgetLong(String key, long defValue) 从preferences中获取一个long类型的值。 参数 key 获取的preference的名称 defValue当此preference不存在时返回的默认值 返回值 如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个long类型,则抛出ClassCastException。 异常 ClassCastException public abstract StringgetString(String key, String defValue) 从preferences中获取一个String类型的值。 参数 key 获取的preference的名称 defValue当此preference不存在时返回的默认值 返回值 如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个String类型,则抛出ClassCastException。 异常 ClassCastException public abstract voidregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) 注册一个回调函数,当一个preference发生变化时调用。 参数 listener将会被调用的回调函数 参见 unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener) public abstract voidunregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) 注销一个之前(注册)的回调函数 参数 listener要被注销的回调函数 参见 registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener) 五、补充 文章精选 SharedPreferences [Android开发者指南]第十八讲:Android SharedPreferences和File SharedPreferences用法 Android程式設計(十五)使用SharedPreferences 示例代码 译注:Shared Preferences保存位置:/data/data/app_name/shared_prefs/*.xml private boolean flag = false ; // 取得活动的Preferences对象 SharedPreferencessettings = getPreferences(Activity.MODE_PRIVATE); // 取得值 flag = settings.getBoolean(“flag”, false ); // 取得活动的Preferences对象 SharedPreferencessettings = getPreferences( 0 ); // 取得编辑对象 SharedPreferences.Editoreditor = settings.edit(); // 添加值 editor.putBoolean(“ true ”,flag); // 提交保存 editor.commit(); 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582420,如需转载请自行联系原作者

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

Android中文API (39) —— AbsSpinner

正文 一、结构 public abstract classAbsSpinnerextendsAdapterView<T extends Adapter> java.lang.Object android.view.View android.view.ViewGroup android.widget.AdapterView<T extends android.widget.Adapter> android.widget.AbsSpinner 二、概述 下拉列表的基类。Sdk可能不再使用到该类(译者注:我认为是过时了) 三、XML属性 属性名称 描述 android:entries 引用一个数据源填充Spinner这是一种比编程填充Spinner更简单的方式。 四、公共方法 public SpinnerAdapter getAdapter () 返回与当前部件相关联的适配器 返回值 该适配器用于提供视图内容 public int getCount () 返回值 与此相关的适配器AdapterView所拥有的项目数量。(这个数据项,可能比显示的视图数据量还大。) public View getSelectedView () 返回值 这个视图对应当前选择的项,或者如果不选择视图则为null public void onRestoreInstanceState (Parcelable state) 允许视图重新应用以前通过onSaveInstanceState()生成代表内部的状态。这个函数决不能以一个空值状态被调用。 参数 state 返回以前调用onSaveInstanceState()保存下来的状态。 public Parcelable onSaveInstanceState () 允许视图生成一个代表内部的状态,以后可用于创建一个与之相同的新的实例。这个状态只可包含那些暂时的或不能被重建的信息。例如,你无法将你目前的位置保存在屏幕上,因为当有一个新的对象出现在这个视图层次上就会自动重新计算。 以下有些实例:当光标停留在一个文本视区上(但是通常来说不能是实文档,因为那个是己储存在内容提供者或者其它长久储存器中),当前所选的项位于一个列表视图中 返回值 返回一个Parcelable对象包含了当前视图动态状态,或者返回null如果没有保存,默认返回值为null。 public int pointToPosition (int x, int y) 映射到列表中的一个坐标(译者注:根据这个坐标可以确定点击的是哪一个item,看这里) 参数 x局部坐标X(译者注:列表范围内的坐标X) y局部坐标Y(译者注:列表范围内的坐标Y) 返回值 返回这个位置包含的指定点(译者注:返回坐标(item)在列表中的顺序),如果这2个点不相交返回INVALID_POSITION public void requestLayout () 重写以防止布局视图时出现大量布局要求。(译者注:这个方法通常在视图认为它自己不再合适它当前的边界的情况下被调用) public void setAdapter (SpinnerAdapter adapter) 该适配器用于提供数据支持这个Spinner。他还提供了改变基于他们选择的相对位置的选定项 参数 adapter该SpinnerAdapter用于下拉列表 public void setSelection (int position, boolean animate) 直接跳到数据适配器中指定项 public void setSelection (int position) 设置当前选中项,为了支持可访问的子类重写此方法,必须首先调用父类的方法。 参数 position索引,被选中的数据项(从0开始) 五、受保护方法 protected ViewGroup.LayoutParams generateDefaultLayoutParams () 返回默认设置的布局参数。这些参数是在请求传递给addView(View)还没有布局的时候已经设置好了的。如果是返回null,则从addView抛出一个异常 返回值 参数的默认布局或null 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582625,如需转载请自行联系原作者

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

Android 中文API (61) —— ViewSwitcher

正文 一、结构 public classViewSwitcher extendsViewAnimator java.lang.Object android.view.View android.view.ViewGroup android.widget.FrameLayout android.widget.ViewAnimator android.widget.ViewSwitcher 已知直接子类 ImageSwitcher,TextSwitcher 二、概述 在两个视图间转换时显示动画,有一个可以创建这些视图的工厂类。你可以用工厂来创建这些视图,也可以自己创建。一个ViewSwitcher只允许包含两个子视图,且一次仅能显示一个。 (译者注:与ViewFlipper类相似,但该类不常用,常用其两个子类ImageSwitcher:转换图片时增加动画效果;TextSwitcher:转换文字时增加动画效果;其实例见apidemos中ImageSwitcher实例和TextSwitcher实例) 三、内部类 interface ViewSwitcher.ViewFactory 在一个ViewSwitcher里创建视图 四、构造函数 publicViewSwitcher(Context context) 构造一个新的空的视图转换器(ViewSwitcher)。 参数 context 应用环境(译者注:应用程序上下文) publicViewSwitcher(Context context, AttributeSet attrs) 构造一个指定上下文、属性集合的空的视图转换器(ViewSwitcher)。 参数 context 应用环境(译者注:应用程序上下文) attrs属性集合 五、公共方法 public voidaddView(View child, int index, ViewGroup.LayoutParams params) 添加一个指定布局参数的子视图 参数 child添加的子视图 index添加的子视图的索引 params子视图的布局参数 异常 IllegalStateException如果切换器中已经包含了两个视图时。 public ViewgetNextView() 返回下一个要显示的视图 返回 视图切换之后将要显示出的下一个视图 public voidreset() 重置视图转换器(ViewSwitcher)来隐藏所有存在的视图,并使转换器达到一次动画都还没有播放的状态。 public voidsetFactory(ViewSwitcher.ViewFactory factory) 设置用来生成将在视图转换器中切换的两个视图的工厂。也可以调用两次addView(android.view.View, int, android.view.ViewGroup.LayoutParams)来替代使用工厂的方法。 参数 factory用来生成转换器内容的视图工厂 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582545,如需转载请自行联系原作者

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

Android中文API(126) —— Message

结构 继承关系 public final classMessage extendsObjectimplementsParcelable java.lang.Object android.os.Message 类概述 定义一个包含任意类型的描述数据对象,此对象可以发送给Handler。对象包含两个额外的int字段和一个额外的对象字段,这样可以使得在很多情况下不用做分配工作。 尽管Message的构造器是公开的,但是获取Message对象的最好方法是调用Message.obtain()或者Handler.obtainMessage(),这样是从一个可回收对象池中获取Message对象。 字段 public static final Creator<Message>CREATOR public intarg1 如果只需要存储几个整型数据,arg1和arg2是setData()的低成本替代品。 public intarg2 如果只需要存储几个整型数据,arg1和arg2是setData()的低成本替代品。 public Objectobj 发送给接收器的任意对象。当使用Message对象在线程间传递消息时,如果它包含一个Parcelable的结构类(不是由应用程序实现的类),此字段必须为非空(non-null)。其他的数据传输则使用setData(Bundle)方法。 注意Parcelable对象是从FROYO版本以后才开始支持的。 public MessengerreplyTo 指明此message发送到何处的可选Messenger对象。具体的使用方法由发送者和接受者决定。 public intwhat 用户自定义的消息代码,这样接受者可以了解这个消息的信息。每个handler各自包含自己的消息代码,所以不用担心自定义的消息跟其他handlers有冲突。 公共构造器 public Message() 构造器(但是获取Message对象的最好方法是调用Message.obtain())。 公共方法 public voidcopyFrom(Message o) 使此message跟参数o相似。浅拷贝数据域。不拷贝源message的链表字段,时间戳和目标/回调。 public intdescribeContents() 描述了包含在Parcelable对象排列信息中的特殊对象的类型。 返回值 一个标志位,表明Parcelable对象特殊对象类型集合的排列。 public RunnablegetCallback() 获取回调对象,此对象会在message处理时执行。此对象必须实现Runnable接口。回调由接收此消息并分发的目标handler调用。如果没有设置回调,此消息会分发到接收handler的handleMessage(Message)。 public BundlegetData() 获取附加在此事件上的任意数据的Bundle对象,需要时延迟创建。通过调用setData(Bundle)来设置Bundle的值。需要注意的是,如果通过Messenger对象在进程间传递数据时,需要调用Bundle类的Bundle.setClassLoader()方法来设置ClassLoader,这样当接收到消息时可以实例化Bundle里的对象。 参考 peekData() setData(Bundle) public HandlergetTarget() 获取将接收此消息的Handler对象。此对象必须要实现Handler.handleMessage()方法。每个handler各自包含自己的消息代码,所以不用担心自定义的消息跟其他handlers有冲突。 public longgetWhen() 返回此消息的传输时间,以毫秒为单位。 public static Messageobtain(Handler h, int what, int arg1, int arg2, Object obj) 与obtain()一样,但是设置了target, what, arg1, arg2和obj的值。 参数 h设置的target值 what设置的what值 arg1设置的arg1值 arg2设置的arg2值 obj设置的obj值 返回值 从全局池中分配的一个Message对象。 public static Messageobtain(Handler h, int what, Object obj) 与obtain()一样,但是设置了target, what和obj的值。 参数 h设置的target值 what 设置的what值 obj设置的obj值 返回值 从全局池中分配的一个Message对象。 public static Messageobtain(Handler h, int what) 与obtain()一样,但是设置了target和what的值。 参数 h target的值 what what的值 返回值 从全局池中分配的一个Message对象。 public static Messageobtain(Handler h) 与obtain()一样,但是设置了target的值 参数 h消息对象的target成员的值 返回值 从全局池中分配的一个Message对象。 public static Messageobtain(Handler h, Runnable callback) 与obtain(Handler)一样,但是设置回调函数,在Message返回时调用。 参数 h消息对象的target成员的值 callback当消息处理时会调用的回调函数 返回值 从全局池中分配的一个Message对象。 public static Messageobtain() 从全局池中返回一个新的Message实例。在大多数情况下这样可以避免分配新的对象。 public static Messageobtain(Handler h, int what, int arg1, int arg2) 与obtain()一样,但是设置了target, what, arg1和arg2的值 参数 h设置的targe值 what设置的what值 arg1设置的arg1值 arg2设置的arg2值 返回值 从全局池中分配的一个Message对象。 public static Messageobtain(Message obj) 同obtain(),但是从一个已存在的消息中拷贝值(包括它的目标)。 参数 orig要拷贝的源消息 返回值 从全局池中分配的一个Message对象。 public BundlepeekData() 与getData()相似,但是并不延迟创建Bundle。如果Bundle对象不存在返回null。更多信息见getData()。 参考 getData() setData(Bundle) public voidrecyle() 向全局池中返回一个Message实例。一定不能在调用此函数后再使用Message——它会立即被释放。 public voidsendToTarget() 向Handler发送此消息,getTarget()方法可以获取此Handler。如果这个字段没有设置会抛出个空指针异常。 public voidsetData(Bundle data) 设置一个任意数据值的Bundle对象。如果可以,使用arg1和arg2域发送一些整型值以减少消耗。 参考 getData() peekData() public voidsetTarget(Handler target) 设置将接收此消息的Handler对象。 public StringtoString() 返回一个Message对象简单的,可读懂的描述信息。鼓励子类重写此方法,实现时最好把对象的类型的数据考虑进去。默认的实现等同与以下表达式: 如果需要实现toString方法,参考Writing a useful toString method。 返回值 一个代表此对象的可打印字符串 public voidwriteToParcel(Parcel dest, int flags) 将类的数据写入外部提供的Parcel中 参数 dest对象被写入的Parcel flags对象如何被写入的附加标志,可能是0或PARCELABLE_WRITE_RETURN_VALUE。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/595409,如需转载请自行联系原作者

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

Android中文API(124) —— DialerFilter

结构 继承关系 public static interfaceView.OnClickListner android.view.View.OnClickListener 子类及间接子类 间接子类 CharacterPickerDialog, KeyboardView, QuickContactBadge 类概述 (译者注:拨号器过滤,暂时不清楚使用方法和场景。) 常量 public static final int DIGITS_AND_LETTERS 该模式包含两行。 常量值:1 (0x00000001) public static final int DIGITS_AND_LETTERS_NO_DIGITS DIGITS_AND_LETTERS模式开始后,过滤器移除了所有匹配的数字,只剩字母行时的模式。 常量值:2 (0x00000002) public static final int DIGITS_AND_LETTERS_NO_LETTERS DIGITS_AND_LETTERS模式开始后,过滤器移除了所有匹配的字母,只剩数字行时的模式。 常量值:3 (0x00000003) public static final int DIGITS_ONLY 该模式只有数字行。 常量值:4 (0x00000004) public static final int LETTERS_ONLY 该模式只有字母行。 常量值:5 (0x00000005) 公共方法 public voidappend(String text) public voidclearText() 清除数值和过滤器文本。 public CharSequencegetDigits() public CharSequencegetFilterText() public CharSequencegetLetters() public intgetMode() public booleanisQwertyKeyboard() public booleanonKeyDown(int keyCode, KeyEvent event) KeyEvent.Callback.onKeyMultiple()的默认实现.如果视图可用并可按,当按下KEYCODE_DPAD_CENTER或KEYCODE_ENTER时执行视图的按下事件. 参数 keyCode表示按下的键的、在KEYCODE_ENTER中定义的键盘代码. event KeyEvent对象,定义了按钮动作. 返回值 如果处理了事件,返回真.如果允许下一个事件接受器处理该事件,可以返回假. public booleanonKeyUp(int keyCode, KeyEvent event) KeyEvent.Callback.onKeyMultiple()的默认实现.当释放KEYCODE_DPAD_CENTER或KEYCODE_ENTER时执行视图的单击事件. 参数 keyCode表示按下的键的、在KEYCODE_ENTER中定义的键盘代码. event KeyEvent对象,定义了按钮动作. 返回值 如果处理了事件,返回真.如果允许下一个事件接受器处理该事件,可以返回假. public voidremoveFilterWatcher(TextWatcher watcher) public voidsetDigitsWatcher(TextWatcher watcher) public voidsetFilterWatcher(TextWatcher watcher) public voidsetLettersWatcher(TextWatcher watcher) public voidsetMode(int newMode) 改变小部件的模式。 参数 newMode变更的目标模式。 受保护方法 protected voidonFinishInflate() 根据XML生成视图工作完成.该函数在生成视图的最后调用,在所有子视图添加完之后。 即使子类覆盖了onFinishInflate方法,也应该调用父类的方法,使该方法得以执行。 protected voidonFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) 如果有图标,只是在得到焦点时显示图标视图。 参数 focused 如果视图具有焦点,值为真;否则为假. direction当调用requestFocus()为该视图设置焦点时,该值为焦点移动的方向.其值为FOCUS_UP、FOCUS_DOWN、FOCUS_LEFT或者FOCUS_RIGHT.当使用无参数的requestFocus()时,可能无值. previouslyFocusedRect失去焦点的视图的矩形坐标,使用该视图的坐标系统.如果指定了,它将传入可以知道焦点来自哪里的详细信息(作为对direction的补充).否则,其值为null。 protected voidonModeChange(int oldMode, int newMode) 在模式变更后调用,为子类提供可以用于重新更改风格的等附加操作的机会。 补充 示例代码 <?xmlversion="1.0"encoding="utf-8"?> <DialerFilterandroid:id="@+id/dialer_filter" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <EditTextandroid:id="@android:id/hint" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:drawable/editbox_background"/> <EditTextandroid:id="@android:id/primary" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@android:id/hint"/> </DialerFilter> 测试代码 DialerFilterTest.java 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/587330,如需转载请自行联系原作者

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

Android中文API(128) —— HandlerThread

结构 继承关系 public classHandleThread extendsThread java.lang.Object java.lang.Thread android.os.HandlerThread 类概述 用于方便的创建一个含有looper的线程类。looper用来创建handler类。请注意,仍然需要调用start()方法。 构造函数 public HandlerThread (String name) 构造一个HandlerThread publicHandlerThread(String name, int priority) 构造一个HandlerThread 参数 priority运行线程的优先级,这个值是由Android.os.Process提供而不是来自java.lang.Thread. 公共方法 public LoopergetLooper() 这个方法返回与此线程相关的Looper。如果该线程不能启动或是由于某种原因isAlive()方法返回false,则这个方法返回null,假如这个线程已经启动,那么此方法将阻塞,直到looper被初始化。 返回值 Looper public intgetThreadId() 返回线程的标志。详见:Process.myTid() public booleanquit() 查看当前运行的looper是否已经退出。假如线程这未启动或者已经结束(即getLooper()方法返回null),这个方法将返回false。否则looper被要求退出并返回true。 public voidrun() 调用设置Runnable对象的run()方法。如果没有设置Runnable,什么也不做。 受保护方法 protected voidonLooperPrepared() 如果需要在Looper循环之前执行一些设置,可明确继承该回调方法。 (译者注:如下代码: void run(){ mTid = Process.myTid(); Looper.prepare(); // 创建一个Looper实例,并且存储在ThreadLocal中,ThreadLocal中维护一个HashMap,键是线程号 synchronized ( this ){ mLooper = Looper.myLooper(); // 得到当前线程的Looper,就是刚才perpare方法中创建并存储的那个Looper实例 Process.setThreadPriority(mPriority); notifyAll(); } onLooperPrepared(); Looper.loop(); // 开始轮询 mTid = - 1 ; ) 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/613749,如需转载请自行联系原作者

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

android 中文 api (64) —— Scroller

正文 一、结构 public classScrollerextendsObject java.lang.Object android.widget.Scroller 二、概述 这个类封装了滚动操作。滚动的持续时间可以通过构造函数传递,并且可以指定滚动动作的持续的最长时间。经过这段时间,滚动会自动定位到最终位置,并且通过computeScrollOffset()会得到的返回值为false,表明滚动动作已经结束。 三、构造函数 publicScroller(Contextcontext) 使用缺省的持续持续时间和动画插入器创建一个Scroller。(译者注:interpolator这里翻译为动画插入器,见这里。) publicScroller(Contextcontext,Interpolatorinterpolator) 根据指定的动画插入器创建一个Scroller,如果指定的动画插入器为空,则会使用缺省的动画插入器(粘滞viscous)创建。 四、公共方法 public voidabortAnimation() 停止动画。与forceFinished(boolean)相反,Scroller滚动到最终x与y位置时中止动画。 参见 forceFinished(boolean) public booleancomputeScrollOffset() 当想要知道新的位置时,调用此函数。如果返回true,表示动画还没有结束。位置改变以提供一个新的位置。 public voidextendDuration(int extend) 延长滚动动画时间。此函数允许当使用setFinalX(int)orsetFinalY(int)时,卷动动作持续更长时间并且卷动更长距离。 参数 extend卷动事件延长的时间,以毫秒为单位 参见 setFinalX(int) setFinalY(int) public voidfling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY) 在fling(译者注:快滑,用户按下触摸屏、快速移动后松开)手势基础上开始滚动。滚动的距离取决于fling的初速度。 参数 startX滚动起始点X坐标 startY滚动起始点Y坐标 velocityX当滑动屏幕时X方向初速度,以每秒像素数计算 velocityY当滑动屏幕时Y方向初速度,以每秒像素数计算 minX X方向的最小值,scroller不会滚过此点。 maxX X方向的最大值,scroller不会滚过此点。 minY Y方向的最小值,scroller不会滚过此点。 maxY Y方向的最大值,scroller不会滚过此点。 public final voidforceFinished(boolean finished) 强制终止的字段到特定值。(译者注:立即停止滚动?) 参数 finished新的结束值 public final intgetCurrX() 返回当前滚动X方向的偏移 返回值 距离原点X方向的绝对值 public final intgetCurrY() 返回当前滚动Y方向的偏移 返回值 距离原点Y方向的绝对值 public final intgetDuration() 返回滚动事件的持续时间,以毫秒计算。 返回值 滚动持续的毫秒数 public final intgetFinalX() 返回滚动结束位置。仅针对“fling”手势有效 返回值 最终位置X方向距离原点的绝对距离 public final intgetFinalY() 返回滚动结束位置。仅针对“fling”操作有效 返回值 最终位置Y方向距离原点的绝对距离 public final intgetStartX() 返回滚动起始点的X方向的偏移 返回值 起始点在X方向距离原点的绝对距离 public final intgetStartY() 返回滚动起始点的Y方向的偏移 返回值 起始点在Y方向距离原点的绝对距离 public final booleanisFinished() 返回scroller是否已完成滚动。 返回值 停止滚动返回true,否则返回false public voidsetFinalX(int newX) 设置scroller的X方向终止位置 参数 newX新位置在X方向距离原点的绝对偏移。 参见 extendDuration(int) setFinalY(int) public voidsetFinalY(int newY) 设置scroller的Y方向终止位置 参数 newY新位置在Y方向距离原点的绝对偏移。 参见 extendDuration(int) setFinalY(int) public voidstartScroll(int startX, int startY, int dx, int dy) 以提供的起始点和将要滑动的距离开始滚动。滚动会使用缺省值250ms作为持续时间。 参数 startX水平方向滚动的偏移值,以像素为单位。负值表明滚动将向左滚动 startY垂直方向滚动的偏移值,以像素为单位。负值表明滚动将向上滚动 dx水平方向滑动的距离,负值会使滚动向左滚动 dy垂直方向滑动的距离,负值会使滚动向上滚动 public voidstartScroll(int startX, int startY, int dx, int dy, int duration) 以提供的起始点和将要滑动的距离开始滚动。 参数 startX水平方向滚动的偏移值,以像素为单位。负值表明滚动将向左滚动 startY垂直方向滚动的偏移值,以像素为单位。负值表明滚动将向上滚动 dx水平方向滑动的距离,负值会使滚动向左滚动 dy垂直方向滑动的距离,负值会使滚动向上滚动 duration滚动持续时间,以毫秒计。 public inttimePassed() 返回自滚动开始经过的时间 返回值 经过时间以毫秒为单位 五、补充 文章精选 Scroller粗浅理解 ScrollTextView - scrolling TextView for Android 示例代码 创建工程MyScroler,或者将下类名“MyScroler”改为自己创建的工程,将下面代码直接覆盖生成的.java文件运行即可: package my.Scroller; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Scroller; public class MyScroler extends Activity{ /** Calledwhentheactivityisfirstcreated. */ LinearLayoutlay1,lay2,lay; private ScrollermScroller; private boolean s1,s2; @Override public void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); mScroller = new Scroller( this ); lay1 = new LinearLayout( this ){ @Override public void computeScroll(){ if (mScroller.computeScrollOffset()){ scrollTo(mScroller.getCurrX(), 0 ); postInvalidate(); } } }; lay2 = new LinearLayout( this ){ @Override public void computeScroll(){ if (mScroller.computeScrollOffset()){ // mScrollX=mScroller.getCurrX(); scrollTo(mScroller.getCurrX(), 0 ); postInvalidate(); } } }; lay1.setBackgroundColor( this .getResources().getColor(android.R.color.darker_gray)); lay2.setBackgroundColor( this .getResources().getColor(android.R.color.white)); lay = new LinearLayout( this ); lay.setOrientation(LinearLayout.VERTICAL); LinearLayout.LayoutParamsp0 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT); this .setContentView(lay,p0); LinearLayout.LayoutParamsp1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT); p1.weight = 1 ; lay.addView(lay1,p1); LinearLayout.LayoutParamsp2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT); p2.weight = 1 ; lay.addView(lay2,p2); Buttontx = new Button( this ); Buttontx2 = new Button( this ); tx.setText( " Button1 " ); tx2.setText( " Button2 " ); tx.setOnClickListener( new OnClickListener(){ @Override public void onClick(Viewv){ if ( ! s1){ mScroller.startScroll( 0 , 0 , 5 , 10 , 10 ); s1 = true ; } else { mScroller.startScroll( 0 , 0 , - 50 , - 10 , 10 ); s1 = false ; } } }); tx2.setOnClickListener( new OnClickListener(){ @Override public void onClick(Viewv){ if ( ! s2){ mScroller.startScroll( 0 , 0 , 5 , 20 , 10 ); s2 = true ; } else { mScroller.startScroll( 20 , 20 , - 50 , - 20 , 10 ); s2 = false ; } } }); lay1.addView(tx); lay2.addView(tx2); } } 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582535,如需转载请自行联系原作者

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

Android API 中文 (53) —— BaseAdapter

正文 一、结构 public abstract classBaseAdapter extendsObject implementsListAdapter SpinnerAdapter java.lang.Object android.widget.BaseAdapter 直接子类 ArrayAdapter<T>, CursorAdapter, SimpleAdapter 间接子类 ResourceCursorAdapter, SimpleCursorAdapter 二、概述 用于ListView(实现指定的ListAdapter接口)和Spinner(实现指定的SpinnerAdapter接口)的共同实现一个公共基类适配器。 三、公共方法 public abstract booleanareAllItemsEnabled() 在ListAdapter中所有的项目都是可用的?如果是,则代表所有的项目都是可选择,可用鼠标点击的。 返回值 如果所有项目是可用的返回真 public abstractViewgetDropDownView(int position,ViewconvertView,ViewGroupparent) 获得一个在指定位置上显示下拉弹出数据的视图。 参数 position想得到项目视图的索引 convertView如果可能旧有的视图重新使用。注解:在使用之前应该检查这个视图不是空的并且类型合适。如果转换视图显示正确的数据是不可能的,这个方法能够创建一个新的视图 parent视图最终将依附的父对象。 返回值 一个对应指定位置的数据的视图。 public intgetItemViewType(int position) 获取通过getView为指定项目创建的视图的类型。 参数 position在adapter数据里我们想知道视图类型的项目的位置 返回值 一个整形的视图类型的描述。如果一个视图通过getView(int, View, ViewGroup)方法转换成另一个视图,则两个视图将共享同一类型。注意:整形必须在0和getViewTypeCount()– 1之间。IGNORE_ITEM_VIEW_TYPE也可以返回。 public intgetViewTypeCount() 返回通过getView(int, View, ViewGroup))创建的视图的类型数量。每一个类型表示一组通过getView(int, View, ViewGroup)方法转换过的视图。如果adapter针对所有项目返回相同的视图类型,这个方法返回1。 这个方法仅仅当adapter设置在AdapterView时调用。 返回值 通过这个adapter创建的视图类型的数量 public booleanhasStableIds() 表明是否项目ID时对基础数据的变化保持稳定的。 返回值 如果相同的ID指相同的对象,返回真 public booleanisEmpty() adapter数据项是否等于零 public booleanisEnabled(int position) 如果指定的位置不是一个隔离项目(隔离项目是一个不可选择,不可用鼠标点击的项目)则返回真。如果位置是无效的,其结果将是不确定的。在这种情况下一个ArrayIndexOutOfBoundsException(越界)异常将抛出 参数 position项目的索引 返回值 如果这个项目不是一个隔离项目则返回真。 public voidnotifyDataSetChanged() 通知附属的视图基础数据已经改变,视图应该自动刷新。 public voidnotifyDataSetInvalidated() 监控数据的observer不再有效 public voidregisterDataSetObserver(DataSetObserverobserver) 注册一个用于adapter的observer(观察者:监控数据发生改变时被调用) 参数 observer当数据发生改变时得到通知的对象 public voidunregisterDataSetObserver(DataSetObserverobserver) 移除先前通过registerDataSetObserver(DataSetObserver)方法注册过的observer(观察者:监控数据发生改变的类) 参数 observer移除注册的对象 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582575,如需转载请自行联系原作者

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

Android API 中文 (51) —— ZoomButtonsController

正文 一、结构 public classZoomButtonsController extendsViewimplementsView.OnTouchListener java.lang.Object android.widget.ZoomButtonsController 二、概述 ZoomButtonsController处理缩放控件的显示和隐藏并且定位其在相关父视图的位置。他也可以做为缩放控件的容器,允许在缩放控制窗口里面显示一些附加的按钮。 通常情况下,客户端在按下或者移动显示容器需要调用setVisible(ture)方法(不需要调用setVisible(false),来隐藏空间,因为当时间超时,它会自动隐藏),同时,当拥有者不能再进一步缩放的时候,客户端应该调setZoomInEnabled(boolean)和setZoomOutEnabled(boolean) 来及时更新。 如果你需要和自定义视图搭配使用,请在onDetachedFromWindow()方法中调用setVisible(false)。 三、构造函数 publicZoomButtonsController(View ownerView) ZoomButtonsController的构造函数 参数 ownerView被缩放控件进行缩放的可视控件,缩放控件显示将和可视控件保持一致 四、公共方法 public ViewGroupgetContainer() 获取缩放控件的父容器。 客户端可以增加其他的可视控件,和缩放控件一起放到这个容器中 返回 缩放控件的容器,它的布局将和它子控件的布局保持一致 public ViewgetZoomControls() 获取缩放控件的视图 返回 缩放控件视图 public booleanisAutoDismissed() 获取缩放控件是否显示后自动关闭 返回 缩放控件是否显示后自动关闭 public booleanisVisible() 缩放控件是否对用户可视 返回 true或者false public voidsetAutoDismissed(boolean autoDismiss) 设置缩放控件是否显示后自动关闭 参数 AutoDismiss true或者false public voidsetFocusable(boolean focusable) 设置缩放控件是否获取焦点,如果控件获取焦点,就是可以使用轨迹球和方向键进行操作,否则,只能触摸进行操作 参数 focusableTrue和false public voidsetOnZoomListener(ZoomButtonsController.OnZoomListener listener) 设置ZoomButtonsController.OnZoomListener侦听接收回调进行缩放 参数 listener介绍是否缩放的侦听器 public voidsetVisible(boolean visible) 设置缩放控件是否对用户可视 参数 visible缩放控件是否对用户可视(true或者false) public voidsetZoomInEnabled(boolean enabled) 是否允许空间放大 参数 enabled是否允许空间放大(true或者false) public voidsetZoomOutEnabled(boolean enabled) 是否允许控件缩小 参数 enabled是否允许控件缩小(true或者false) public voidsetZoomSpeed(long speed) 设置用户操作缩放按钮到缩放回调的延迟时间 参数 speed以毫秒为单位的缩放回调的间隔时间 五、补充 文章精选 Android Google map使用心得 googlemap加载多个overlay内存溢出 示例代码 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582579,如需转载请自行联系原作者

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

Android API 中文 (50) —— SpinnerAdapter

正文 一、结构 public interfaceSpinnerAdapterextendsAdapter 直接子类 ArrayAdapter<T>, BaseAdapter, CursorAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter 二、概述 扩展自Adapter的适配器是在Spinner与数据之间的一座桥梁。一个Spinner Adapter允许定义两个不同的视图:一是在Spinner上显示数据,另一个是当Spinner按下时在下拉列表里显示数据。 三、公共方法 public abstractViewgetDropDownView(int position,ViewconvertView,ViewGroupparent) 获得一个在指定位置上显示下拉弹出数据的视图。 参数 position项目视图的索引 convertView如果可能旧有的视图重新使用。注解:在使用之前应该检查这个视图不是空的并且类型合适。如果转换视图显示正确的数据是不可能的,这个方法能够创建一个新的视图 parent视图最终将依附的父对象 返回值 一个对应指定位置的数据的视图 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582583,如需转载请自行联系原作者

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

Android API 中文 (54) —— Filterable

正文 一、结构 public interfaceFilterable android.widget. SpinnerAdapter 直接子类 ArrayAdapter<T>, CursorAdapter, CursorTreeAdapter, HeaderViewListAdapter, ResourceCursorAdapter, ResourceCursorTreeAdapter, SimpleAdapter, SimpleCursorAdapter, SimpleCursorTreeAdapter 二、概述 定义一个可过滤的行为。一个可过滤的类可以通过一个过滤器筛选它的数据。过滤类通常由适配器(Adapter)实现。 三、公共方法 public abstractFiltergetFilter() 返回一个可以通过一种过滤模式来约束数据的过滤器。 这个方法通常被Adapter类实现。 返回值 一个用于约束数据的过滤器 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582573,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册