首页 文章 精选 留言 我的

精选列表

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

Android 中文API (92) —— MenuInflater

正文 一、结构 public classMenuInflater extendsObject java.lang.Object android.view.MenuInflater 直接子类 TabActivity 二、概述 这个类是用来实例化菜单XML文件成菜单对象。 由于性能的原因,由于程序创建时候就加载一些预处理XML文件,Menu过多就造成很重的负担。因此,这是目前无法在运行时使用多于一个XmlPullParser的xml文件去使用MenuInflater,它只能使用一个XmlPullParser返回的编译过的资源(R.某些文件) 三、构造函数 public MenuInflater (Context context) 构造填充(inflater)一个菜单 参见 getMenuInflater() 四、公共方法 public voidinflate(int menuRes, Menu menu) 菜单层次从一个指定的xml资源去填充,如果有错误会抛掷InflateException。 参数 menuRes要加载XML布局文件中的资源ID(例如R.menu.main_activity) menu要填充的菜单,这些项目和子菜单就被添加到要填充菜单中 五、补充 文章精选 MenuInflater Android菜单从xml创建方法 Android中MenuInflater实例 Android中MenuInflater的使用(布局定义菜单) 示例代码 新建一个项目,项目文件列表 MenuInfalterTest.java public class MenuInflaterTest extends Activity{ @Override public void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.main); } public boolean onCreateOptionsMenu(Menumenu){ // 获取当前的菜单 MenuInflaterinflater = getMenuInflater(); // 填充菜单 inflater.inflate(R.menu.option_menu,menu); return true ; } /** *对菜单点击事件处理 */ public boolean onOptionsItemSelected(MenuItemitem){ switch (item.getItemId()){ case R.id.menu_add: break ; case R.id.menu_wallaper: break ; case R.id.menu_search: break ; case R.id.menu_setting: showSettings(); break ; } return super .onOptionsItemSelected(item); } /** *显示设置选项 */ private void showSettings(){ Intentsettings = new Intent (android.provider.Settings.ACTION_SETTINGS); settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); startActivity(settings); } } } Main.xml <? xmlversion="1.0"encoding="utf-8" ?> < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:orientation ="vertical" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < TextView android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="@string/hello" /> </ LinearLayout > Option_menu.xml <? xmlversion="1.0"encoding="utf-8" ?> < menu xmlns:android ="http://schemas.android.com/apk/res/android" > < item android:id ="@+id/menu_add" android:title ="Add" android:icon ="@android:drawable/ic_menu_add" /> < item android:id ="@+id/menu_wallaper" android:title ="Wallpaper" android:icon ="@android:drawable/ic_menu_gallery" /> < item android:id ="@+id/menu_search" android:title ="Search" android:icon ="@android:drawable/ic_search_category_default" /> < item android:id ="@+id/menu_setting" android:title ="Settings" android:icon ="@android:drawable/ic_menu_preferences" /> </ menu > 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582414,如需转载请自行联系原作者

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

android 中文api (84) —— TrafficStats

正文 一、结构 public classTrafficStats extendsObject java.lang.Object android.net.TrafficStats 二、概述 提供网络流量统计的类。这些统计包括通过所有网络接口、mobile接口和UID网络接口的字节发送和接收,网络数据包的发送和接收。 这些统计可能不适用于所有平台。如果本设备不支持统计, UNSUPPORTED 将被返回。 三、常量 public static final intUNSUPPORTED 返回值表示该设备不支持统计。 常量值: -1 (0xffffffff) 四、公共方法 public static longgetMobileRxBytes() 获取通过Mobile接口接收到的字节总数(Android123:这里不包含WiFi) 返回值 字节总数。如果本设备不支持统计,将返回UNSUPPORTED。 public static longgetMobileRxPackets() 获取通过Mobile接口接收到的数据包总数 返回值 数据包总数。如果本设备不支持统计,将返回UNSUPPORTED。 public static longgetMobileTxBytes() 获取通过Mobile接口发送的字节总数 返回值 字节总数。如果本设备不支持统计,将返回UNSUPPORTED。 public static longgetMobileTxPackets() 获取通过Mobile接口发送的数据包总数 返回值 数据包总数。如果本设备不支持统计,将返回UNSUPPORTED。 public static longgetTotalRxBytes() 获取通过所有网络接口接收到的字节总数。(Android123:包含Mobile和WiFi等) 返回值 字节总数。如果本设备不支持统计,将返回UNSUPPORTED。 public static longgetTotalRxPackets() 获取通过所有网络接口接收到的数据包总数。(Android123:包含Mobile和WiFi等) 返回值 数据包总数。如果本设备不支持统计,将返回UNSUPPORTED。 public static longgetTotalTxBytes() 获取通过所有网络接口发送的字节总数。(Android123:包含Mobile和WiFi等) 返回值 字节总数。如果本设备不支持统计,将返回UNSUPPORTED。 public static longgetTotalTxPackets() 获取通过所有网络接口发送的数据包总数(Android123:包含Mobile和WiFi等) 返回值 数据包总数。如果本设备不支持统计,将返回UNSUPPORTED。 public static longgetUidRxBytes(int uid) 获取通过UID网络接口收到的字节数。统计包含所有网络接口。 参数 uid待检查的进程的uid 返回值 字节数 参见 myUid() public static longgetUidTxBytes(int uid) 获取通过UID网络接口发送的字节数。统计包含所有网络接口。 参数 uid待检查的进程的uid 返回值 字节总数。如果本设备不支持统计,将返回UNSUPPORTED。 参见 myUid() 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582427,如需转载请自行联系原作者

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

android api 中文 (73)—— AdapterView

正文 一、结构 public abstract classAdapterView<T extendsAdapter> extendsViewGroup java.lang.Object android.view.View android.view.ViewGroup android.widget.AdapterView<T extends android.widget.Adapter> 直接子类 AbsListView,AbsSpinner 间接子类 ExpandableListView,Gallery,GridView,ListView,Spinner 二、概述 AdapterView是内容由Adapter来决定的视图类。 参见ListView、GridView、Spinner和Gallery等常见子类。 三、常量 public static final int INVALID_POSITION 代表无效的位置。有效值的范围是 0 到当前适配器项目数减 1 。 常量值:-1 (0xffffffff) public static final long INVALID_ROW_ID 代表空或者无效的行ID。 常量值:-9223372036854775808 (0x8000000000000000) public static final int ITEM_VIEW_TYPE_HEADER_OR_FOOTER 当条项是列表头或列表尾时,调用getItemViewType(int)函数的返回值。 常量值:-2 (0xfffffffe) public static final int ITEM_VIEW_TYPE_IGNORE 当适配器禁止条项的视图再利用时,调用getItemViewType(int)函数的返回值。 常量值:-1 (0xffffffff) 四、构造函数 publicAdapterView(Contextcontext) 构造函数 publicAdapterView(Contextcontext,AttributeSetattrs) 构造函数 publicAdapterView(Contextcontext,AttributeSetattrs, int defStyle) 构造函数 五、公共方法 public voidaddView(Viewchild) 该类不支持该方法,如果调用将抛出UnsupportedOperationException异常。 参数 child 忽略 异常 UnsupportedOperationException调用该方法时 public voidaddView(Viewchild, int index) 该类不支持该方法,如果调用将抛出UnsupportedOperationException异常。 参数 child 忽略。 index忽略。 抛出 UnsupportedOperationException调用该方法时 public voidaddView(Viewchild, int index,ViewGroup.LayoutParamsparams) 该类不支持该方法,如果调用将抛出UnsupportedOperationException异常。 参数 child 忽略。 index 忽略。 params 忽略。 抛出 UnsupportedOperationException调用该方法时 public voidaddView(Viewchild,ViewGroup.LayoutParamsparams) 该类不支持该方法,如果调用将抛出UnsupportedOperationException异常。 参数 child 忽略。 params 忽略。 抛出 UnsupportedOperationException调用该方法时 public booleandispatchPopulateAccessibilityEvent(AccessibilityEventevent) 分发AccessibilityEvent事件到该视图的子视图中。 参数 event 事件。 返回值 如果事件分发完成,返回真。 public abstract TgetAdapter() 返回当前与该小部件关联的适配器。 返回值 用于提供视图内容的适配器。 public intgetCount() 返回值 与AdapterView相关联的适配器的条目数量。(该值是数据条目的数量,可能大于可见的视图的数量。) publicViewgetEmptyView() 当前适配器无内容时,AdapterView 会显示特殊的空视图。 空视图用于告诉用户,该 AdapterView 没有数据。 返回值 适配器为空时显示的视图。 public intgetFirstVisiblePosition() 返回显示在屏幕上的第一个元素在适配器中所处的位置。 返回值 在适配器数据集中的位置。 publicObjectgetItemAtPosition(int position) 取得列表中指定位置的数据。 参数 position要取得数据的位置。 返回值 列表中指定位置的数据。 public longgetItemIdAtPosition(int position) (译者注:关于此方法的分析,参见这里。) public intgetLastVisiblePosition() 返回显示在屏幕上的最后一个元素在适配器中所处的位置。 返回值 在适配器数据集中的位置。 public finalAdapterView.OnItemClickListenergetOnItemClickListener() 返回值 点击AdapterView中的条目时执行的回调函数;没有设置时返回空。 public finalAdapterView.OnItemLongClickListenergetOnItemLongClickListener() 返回值 取得长按AdapterView中的条目时执行的回调函数的监听器;未设置则返回空。 public finalAdapterView.OnItemSelectedListenergetOnItemSelectedListener() public intgetPositionForView(Viewview) 取得适配器项目对应的视图或其子视图在适配器的数据中所处的位置。 参数 view 适配器条目或其后代的视图。调用时该项目在AdapterView中必须可见。 返回值 视图在适配器数据集中的位置;如果视图不在数据列表中或当前不可见,则返回INVALID_POSITION。 publicObjectgetSelectedItem() 返回值 当前选中条目对应的数据;无选中条目时返回空。 public longgetSelectedItemId() 返回值 当前选中条目相应的ID;无选中条目则返回INVALID_ROW_ID。 public intgetSelectedItemPosition() 返回当前选中项目在适配器数据中的位置。 返回值 返回从零开始的位置(索引)信息,没有选择条目时返回INVALID_POSITION。 public abstractViewgetSelectedView() 返回值 当前选中条目对应的视图;无选中条目时返回空。 public booleanperformItemClick(Viewview, int position, long id) 如果定义了OnItemClickListener则调用它。 参数 view AdapterView中被点击的视图。 position视图在适配器中的索引。 id点击的条目的行ID。 返回值 如果成功调用了定义的OnItemClickListener则返回真;否则返回假。 public voidremoveAllViews() 该类不支持该方法,如果调用将抛出UnsupportedOperationException异常。 抛出 UnsupportedOperationException调用该方法时 public voidremoveView(Viewchild) 该类不支持该方法,如果调用将抛出UnsupportedOperationException异常。 参数 child忽略。 抛出 UnsupportedOperationException调用该方法时 public voidremoveViewAt(int index) 该类不支持该方法,如果调用将抛出UnsupportedOperationException异常。 参数 index 忽略。 抛出 UnsupportedOperationException调用该方法时 public abstract voidsetAdapter(T adapter) 设置用于为该小部件的视图提供用于显示的数据的适配器。 参数 adapter用于创建视图内容的适配器。 public voidsetEmptyView(ViewemptyView) 设置适配器内容为空时显示的视图。 public voidsetFocusable(boolean focusable) 设置该视图是否可以获取焦点。 设为假时,可以确保在触控模式中该视图不能得到焦点。 参数 focusable 设为真时,该视图可以得到焦点。 public voidsetFocusableInTouchMode(boolean focusable) 设置在触控模式下该视图是否可以获取焦点。设为真时,可以保证视图可以得到焦点。 参数 focusable 设为真时,该视图在触控模式下可以得到焦点。 public voidsetOnClickListener(View.OnClickListenerl) 注册点击该视图时执行的回调函数。如果该视图不可点击,会将其改为可以点击的状态。 参数 l 事件发生时运行的回调函数。 public voidsetOnItemClickListener(AdapterView.OnItemClickListenerlistener) 注册单击AdapterView中的条目时执行的回调函数。 参数 listener 将要调用的回调。 public voidsetOnItemLongClickListener(AdapterView.OnItemLongClickListenerlistener) 注册长按AdapterView中的条目时执行的回调函数。 参数 listener 事件发生时运行的回调函数。 public voidsetOnItemSelectedListener(AdapterView.OnItemSelectedListenerlistener) 注册选中AdapterView中的条目时执行的回调函数。 参数 listener 事件发生时运行的回调函数。 public abstract voidsetSelection(int position) 设置当前选择条目。为了支持无障碍功能,重写该方法的子类必须首先调用父类的该方法。 参数 position选择的数据条目的索引(从零开始)。 六、保护方法 protected booleancanAnimate() 指示视图组是否能够在首次布局后为其子视图提供动画效果的显示。 返回值 如果子视图可以使用动画效果则返回真,否则返回假。 protected voiddispatchRestoreInstanceState(SparseArray<Parcelable> container) 为了防止适配器生成的视图被解冻而重写。 参数 container保存有之前存储的状态信息的SparseArray。 protected voiddispatchSaveInstanceState(SparseArray<Parcelable> container) 为了防止适配器生成的视图被冻结而重写。 参数 container保存视图状态的SparseArray。 protected voidonLayout(boolean changed, int left, int top, int right, int bottom) 该视图设置其子视图的大小及位置时调用。派生类可以重写此方法,并为其子类布局。 参数 changed是否为视图设置了新的大小和位置。 left相对于父视图的左侧的位置。 top相对于父视图的顶部的位置。 right相对于父视图的右侧的位置。 bottom相对于父视图的底部的位置。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582515,如需转载请自行联系原作者

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

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 中文 (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,如需转载请自行联系原作者

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

Android 中文 API (25) —— ZoomControls

正文 一、结构 public classZoomControlsextendsLinearLayout java.lang.Object android.view.View android.view.ViewGroup android.widget.LinearLayout android.widget.ZoomControls 二、概述 ZoomControls显示一个简单的设置来控制缩放并回调已注册的事件。 三、 公共方法 public boolean hasFocus () 如果这个视图获得了焦点就返回真。 返回值 如果这个视图获得了焦点就返回真。 public void hide () 这个方法可以将zoomControl视图隐藏起来,不显示。 public boolean onTouchEvent (MotionEvent event) 这个方法处理触摸屏移动事件。 参数 event该移动事件. 返回值 如果是true,该事件是触摸,反之返回false。 public void setIsZoomInEnabled (boolean isEnabled) 这个方法可以设置放大按钮是否可用。 参数 isEnabled如果是true,放大按钮可用,反之不可用(按钮变成灰色)。 public void setIsZoomOutEnabled (boolean isEnabled) 这个方法可以设置缩小按钮是否可用。 参数 isEnabled如果是true缩小按钮可用,反之不可用(按钮变成灰色)。 public void setOnZoomInClickListener (View.OnClickListener listener) 注册放大监听器 参数 Listener点击放大按钮事件触发的事件。(译者注:为OnClickListener的实例,可以复写onClick方法,里面为具体的响应动作。我感觉这个方法还有下面的方法是本类的重点,我们可以在里面实现相应的动作,来响应我们的事件。) public void setOnZoomOutClickListener (View.OnClickListener listener) 注册缩小监听器 参数 Listener点击缩小按钮事件触发的事件。(译者注:为OnClickListener的实例,可以复写onClick方法,里面为具体的响应动作。) public void setZoomSpeed (long speed) 设置缩放速度。 参数 Speed缩放速度 public void show () 这个方法和hide方法对应,用来显示ZoomControl。 四、 补充 4.1 文章链接 [荐]Android控件之ZoomControls缩放控件 地图时让ZoomContrls一直显示 [荐]ZoomControls在Google Map中的使用 4.2 示例代码(译者声明:这个代码部分思路来源于网络上一个博客,谨以此来解释,特此声明。) 4.2.1 java文件 public class ZoomCotroltest extends Activity{ @Override protected void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); this .setContentView(R.layout.main); setTitle( " ZoomControls " ); ZoomControlszoomControls = (ZoomControls) this .findViewById(R.id.zoomControls); zoomControls.hide(); zoomControls.show(); // setOnZoomInClickListener()-响应单击放大按钮的事件 zoomControls.setIsZoomInEnabled( true ); zoomControls.setIsZoomOutEnabled( true ); zoomControls.setOnZoomInClickListener( new OnClickListener(){ public void onClick(Viewv){ Toast.makeText(ZoomCotroltest. this , " 单击了放大按钮 " ,Toast.LENGTH_SHORT).show(); } }); // setOnZoomOutClickListener()-响应单击缩小按钮的事件 zoomControls.setOnZoomOutClickListener( new OnClickListener(){ public void onClick(Viewv){ Toast.makeText(ZoomCotroltest. this , " 单击了缩小按钮 " ,Toast.LENGTH_SHORT).show(); } }); } } 4.2.2 xml文件 <? xmlversion="1.0"encoding="utf-8" ?> < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:orientation ="vertical" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > <!-- 放大/缩小按钮控件 --> < ZoomControls android:id ="@+id/zoomControls" android:layout_width ="wrap_content" android:layout_height ="wrap_content" > </ ZoomControls > </ LinearLayout > 4.2.3 代码下载 /Files/over140/2010/10/demo_ZoomControls.rar 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582657,如需转载请自行联系原作者

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

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 (28) —— CheckedTextView

正文 一、结构 public classCheckedTextViewextendsTextViewimplementsCheckable java.lang.Object android.view.View android.widget.TextView android.widget.CheckedTextView 二、概述 类CheckedTextView继承TextView并实现Checkable接口。当ListView的setChoiceMode方法并设定为CHOICE_MODE_SINGLE或者CHOICE_MODE_MULTIPLE,而非CHOICE_MODE_NONE时,使用此类是很有用的。 三、 公共方法 public boolean dispatchPopulateAccessibilityEvent (AccessibilityEvent event) 在子视图的构建时分派一个辅助事件。(译者注:通过源码可以看出,视图构建时设置其选中状态。) 参数 event事件 返回值 如果事件处理完成,则返回true public boolean isChecked () 是否选中。 public void setCheckMarkDrawable (Drawable d) 为一个给定的Drawable设定检查标记。当isChecked()为true时则绘制 参数 d用于检查标记的Drawable public void setCheckMarkDrawable (int resid) 为一个给定的Drawable设定检查标记,使用它的资源id来标识。当isChecked()为true时则绘制 参数 resid 用于检查标记的Drawable public void setChecked (boolean checked) 改变文本视图的选中状态 参数 checked选中文本返回true,未选中返回false public void setPadding (int left, int top, int right, int bottom) 设置页边距。视图可能会增加一些必要的空间用于显示滚动条,并依赖滚动条的类型和可见性。因此,设定的值用于回调getPaddingLeft(), getPaddingTop(), getPaddingRight()和getPaddingBottom()时则返回不同的值 参数 left左边距(使用“像素”单位) top上边距(使用“像素”单位) right右边距(使用“像素”单位) bottom 下边距(使用“像素”单位) public void toggle () 反转当前视图的选中状态 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582649,如需转载请自行联系原作者

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

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 (18) —— AbsSeekBar

正文 一、结构 publicabstractclassAbsSeekBarextendsProgressBar java.lang.Object android.view.View android.widget.ProgressBar android.widget.AbsSeekBar 二、类概述 此类为抽象类。供拖动条SeekBar和评分条RatingBar继承。 三、 公共方法 public int getKeyProgressIncrement () 返回方向键改变后的进度值 默认情况下此值是根据最大值而得出的。 返回值 当用户按下方向键后减少或增加之后的进度值。这个进度值是正数。 public int getThumbOffset () 参见 setThumbOffset(int) public boolean onKeyDown (int keyCode, KeyEvent event) 默认实现KeyEvent.Callback.onKeyMultiple():如果视图已启用并且可点击,当KEYCODE_DPAD_CENTER或者KEYCODE_ENTER被释放时,执行按下(Down)此视图的操作。 参数 keyCode KeyEvent中用于表示按键被按下的识别码 event按键操作中定义的KeyEvent对象 返回值 假如你已经处理了当前事件,返回true。假如你想继续让下一个事件接收者(receiver)处理,则返回false; public boolean onTouchEvent (MotionEvent event) 实现这个方法来处理触摸屏幕引发的事件。 参数 event动作事件 返回值 如果事件已经处理返回True,否则返回false。 public void setKeyProgressIncrement (int increment) 设置使用方向键更改进度时每次的增加值(注:设置此值后,使用按键修改进度值时,每次增加或减少increment大小的幅度) 参数 increment The amount to increment or decrement when the user presses the arrow keys. increment当用户按下指示键时增加或减少的值 public synchronized void setMax (int max) 设置进度条的范围,从0到max 参数 max进度条的最大值 public void setThumb (Drawable thumb) 设置可绘制对象thumb为SeekBar中显示的进度表的结束位置的图案(注:例如下图) 如果thumb是一个有效的可绘制对象(例如不是null值),那么需要设置thumb的偏移量为他的一半宽度(参见setThumbOffset(int)) 参数 thumb可绘制对象 public void setThumbOffset (int thumbOffset) 设置thumb的偏移量允许thumb扩展超出轨道的范围 参数 thumbOffset以像素为单位的偏移量 (注:例如下图,两图同样取SeekBar的最大值) 默认Offset为thumb的一半时: setThumbOffset(0)时: 四、 受保护方法 protected boolean verifyDrawable (Drawable who) 如果你的视图子类显示他自己的可视化对象,他将要重写此方法并且为了显示可绘制返回true。此操作允许进行绘制时有动画效果。 确认当重写从方法时,需调用父类相应方法。(注:即记得调用super.verifyDrawable(who)) 参数 who需判断的可绘制对象(Drawable)。如果是你要显示的对象,返回True,否则返回调用父类的结果。 返回值 如果可绘制对象(Drawable)已经在视图中显示,返回True否则返回false。并且此处不允许使用动画。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582681,如需转载请自行联系原作者

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

Android API 中文(13) —— ToggleButton

正文 一、结构 public classToggleButton extendsCompoundButton java.lang.Object android.view.View android.widget.TextView android.widget.Button android.widget.CompoundButton android.widget.ToggleButton 二、 类概述 通过一个带有亮度指示同时默认文本为“ON”或“OFF”的按钮显示选中/未选中状态。 三、XML属性 属性名称 描述 android:disabledAlpha 设置按钮在禁用时透明度。 android:textOff 未选中时按钮的文本 android:textOn 选中时按钮的文本 四、公共方法 public CharSequence getTextOff () 返回按钮未选中时的文本。 返回值 文本 public CharSequence getTextOn () 返回按钮选中时的文本。 返回值 文本 public void setBackgroundDrawable (Drawable d) 设置指定的可绘制(译者注:如图片)为背景,或删除背景。如果让背景有边距,这个视图的边距就是背景的边距。然而,当背景被删除时,这个视图的边距不能被触摸。如果需要设置边距,请使用方法setPadding(int, int, int, int)。 (译者注:如果设置删除背景整个就不显示了,此外设置背景后选中和被选中的图片也不显示了,如下图:,实现代码: ) 参数 d 设置可绘制(译者注:如图片)为背景,或设置为空删除背景。 public void setChecked (boolean checked) 改变按钮的选中状态。 参数 checked true让按钮选中,false让按钮不选中 public void setTextOff (CharSequence textOff) 设置按钮未选中时显示的文本。 参数 textOff 文本 public void setTextOn (CharSequence textOn) 设置按钮选中时显示的文本。 参数 textOn 文本 五、受保护方法 protected void drawableStateChanged () 在视图状态的变化影响到所显示可绘制的状态时调用这个方法。 确保在覆盖时中调用父类方法(译者注:super. drawableStateChanged ())。 protected void onFinishInflate () XML文件加载视图完成时调用。这个函数在加载的最后阶段被调用,所有的子视图已经被添加。 即使子类重写了onFinishInflate方法,也应该始终确保调用父类方法(译者注:super. onFinishInflate()),使系统能够调用。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582691,如需转载请自行联系原作者

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

Android 中文 API (19) —— TwoLineListItem

正文 一、结构 public classTwoLineListItemextendsRelativeLayout java.lang.Object android.view.View android.view.ViewGroup android.widget.RelativeLayout android.widget.TwoLineListItem 二、 概述 这个布局是用在ListView中的,有两个子View。每一项有两个ID值为text1和text2的TextView的元素。也有一个ID是selecteIcon的元素,这个元素可以是任何View的子类(最典型的就是ImageView)。支持标准的布局资源文件(不包含所选择的icon),但是你可以为这个对象自己定义XML布局文件。 三、 XML属性 属性名称 描述 android:mode 布局模式:oneLine一行collapsing折叠twoLine两行 四、 公共方法 Public TextView getText1 () 返回ID为Text1的TextView对象 返回值 TextView Public TextView getText2 () 返回ID为Text1的TextView对象 返回值 TextView 五、 受保护方法 protected void onFinishInflate () 初始化XML布局。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582679,如需转载请自行联系原作者

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

Android中文API(117)——WrapperListAdapter

正文 一、结构 public interfaceWrapperListAdapter implementsListAdapter android.widget. WrapperListAdapter 间接子类 HeaderViewListAdapter 二、概述 封装了另一个列表适配器的列表适配器。调用getWrappedAdapter()可以取得封装在其中的适配器。 参见 ListView 三、公共方法 public abstract ListAdaptergetWrappedAdapter() 返回封装在列表适配器中的适配器。 返回值 封装在该适配器中的ListAdapter。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582351,如需转载请自行联系原作者

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

Android中文API(114)——TabWidget

正文 一、结构 public classTabWidget extendsLinearLayout implementsView.OnFocusChangeListener java.lang.Object android.view.View android.view.ViewGroup android.widget.LinearLayout android.widget.TabWidget 二、概述 显示选项卡标签的列表,用于代表父选项卡集合的每一页。当前widget的容器对象是TabHost。当用户选择一个选项卡时,此对象给父容器对象TabHost发送一个消息,告诉TabHost切换到对应的页面显示。此对象上的很多方法,你通常不会直接使用。容器TabHost被用来添加标签,添加并管理回调函数。你可能会调用此对象以迭代选项卡列表,或者调整选项卡列表的布局,但大多数方法应该是通过容器TabHost对象调用。 参见Tab Layout tutorial。 三、XML属性 属性名称 描述 android:divider 可绘制对象,被绘制在选项卡窗口间充当分割物。 android:tabStripEnabled 确定是否在选项卡绘制 android:tabStripLeft 被用来绘制选项卡下面的分割线左边部分的可视化对象。 android:tabStripRight 被用来绘制选项卡下面的分割线右边部分的可视化对象。 四、公共方法 public voidaddView(View child) 增加子视图。如果子视图没有设置布局参数,那么将为子视图设置此ViewGroup默认的布局参数。 参数 child新增的子视图 public voidchildDrawableStateChanged(View child) 如果调用addStatesFromChildren函数返回true,刷新此组的可视化对象的状态(包括它的子元素的状态)。 参数 child可视化对象状态被改变的子元素。 public voiddispatchDraw(Canvas canvas) 绘制时调用此方法来绘制子视图。派生类在被绘制之前,为获取控制可能会重写此方法(但必须在它自己的视图已经被绘制之后)。 参数 canvas绘制视图的画布(canvas) public voidfocusCurrentTab(int index) 设置当前选项卡并且让其获得焦点。此方法确保获取焦点的选项卡窗口匹配选中的窗口,一般情况下类似setCurrentTab(int)。通常当我们通过操作UI实现时,这些都不是问题,因为UI负责调用TabWidget.onFocusChanged(),但如果我们通过程序控制选中选项卡窗口,那么我们就必须确认保持焦点。(译者注:setCurrentTab(int)执行后,选中指定索引的选项卡窗口,但不获取焦点。focusCurrentTab(int)执行后,不仅通过调用setCurrentTab(int)选中指定索引的选项卡窗口还获取焦点。) 参数 index你想要设置焦点(橘色高亮)并且选中(选项卡被至于部件widget的前端)的选项卡。 参见 setCurrentTab(int) public ViewgetChildTabViewAt(int index) 返回位于指定索引位置的选项卡标识符的视图 参数 index选项卡指示符视图返回的从零开始的索引 返回值 在提供的索引位置上的选项卡指示符视图 public intgetTabCount() 返回选项卡的数量 返回值 选项卡指示符视图的数量 public booleanisStripEnabled() 指明选项卡指示符的底部分隔线是否绘制 public voidonFocusChange(View v, boolean hasFocus) 当视图的焦点状态被改变时调用。 参数 v状态变化的视图 hasFocus 视图的新焦点状态。 public voidsendAccessibilityEventUnchecked(AccessibilityEvent event) 处理用于发送AccessibilityEvent的请求。如果再发送之前调度事件,本方法不保证可访问性检查。可以通过调用者调用isEnabled()检查。 参数 event事件 public void setCurrentTab (int index) 设置当前选项卡。此方法被用来将选项卡置于widget的前部,并且通知其它的UI元素,一个不同的选项卡被调整到了前台。注意,这不同于传统的“焦点”,是从视图逻辑的焦点。 例如,如果我们在选项卡式视图中有一个列表,一个用户可能会上下移动列表,通过列表选项移动UI焦点(橘色高亮)。光标的移动并不影响选项卡的选中状态,因为滚动是在同一个选项卡上的。选中的选项卡仅仅当我们在选项卡上切换时(在此例中,从列表视图移到下一选项卡视图)更改。如果想要一次性的设置焦点并选中选项卡,请使用setCurrentTab(int)。 正常情况下,视图逻辑关注调整焦点,除非你规避了UI,你可能仅仅将你的兴趣集中在这里。 参数 index你想要指做选中选项卡的选项卡索引(选项卡被显示到widget的前部) 参见 focusCurrentTab(int) public voidsetDividerDrawable(Drawable drawable) 设置用于在选项窗口指示符间分隔的可绘制对象 参数 drawable用于分隔的可绘制对象 public voidsetDividerDrawable(int resId) 设置用于在两个选项卡标识符之间进行分隔的可绘制对象 参数 resId 被用来分隔的可绘制对象的资源标识 public voidsetEnabled(boolean enabled) 设置当前视图的启用状态。子类的不同而其对应的启用状态的解释也不相同。 参数 enabled是否启动 public voidsetLeftStripDrawable(int resId) 设置被用来当作选项卡指示符下面的分割线,左边部分的可绘制对象。 参数 resId the被用来当作左边分隔线的可绘制对象的资源标识符 public voidsetLeftStripDrawable(Drawable drawable) 设置被用来当作选项卡指示符下面的分割线,左边部分的可绘制对象。 参数 drawable左边分隔线的可绘制对象 public voidsetRightStripDrawable(int resId) 设置被用来当作选项卡指示符下面的分割线,右边部分的可绘制对象。 参数 resId 被用来当作右边分隔线的可绘制对象的资源标识符 public voidsetRightStripDrawable(Drawable drawable) 设置被用来当作选项卡指示符下面的分割线,右边部分的可绘制对象。 参数 drawable右边分隔线的可绘制对象 public voidsetStripEnabled(boolean stripEnabled) 控制选项卡指示符底部的分隔线是否绘制。默认是绘制。如果用户为选项卡指示符指定一个定制的视图,那么TabHost类调用此方法以禁用绘制底部分割线。 参数 stripEnabled如果需要绘制底部分割线为true 五、受保护方法 protected int getChildDrawingOrder (int childCount, int i) 返回要绘制的子元素在当前迭代中的索引。如果你需要修改子元素的绘制顺序,可以覆写此方法。默认情况下返回参数i值。 注意:为使此方法被调用,你必须先通过调用setChildrenDrawingOrderEnabled(boolean)启用子元素排序 参数 i 当前的迭代值 返回值 将要绘制的子元素在当前迭代的索引 protected void onSizeChanged (int w, int h, int oldw, int oldh) 布局过程中,当此视图的大小发生改变时被调用的。如果你只是添加到视图的层次结构,你调用时可以使用0当作之前的值(old value)。 参数 w 此视图的当前宽度 h 此视图的当前高度 oldw Old此视图之前的宽度 oldh此视图之前的高度 六、补充 术语对照 indicator指示符 drawable可绘制对象 iteration迭代 strips分割线 文章精选 Android选项卡(TabWidget)例子 {Android学习指南}TabWidget Android将TAB选项卡放在屏幕底部 示例代码 Java: public class TabDemo1 extends Activity implements OnClickListener{ TabHostmTabHost = null ; TabWidgetmTabWidget = null ; ButtonbtnVisiable,btnStrip; @Override protected void onCreate(BundlesavedInstanceState){ // TODOAuto-generatedmethodstub super .onCreate(savedInstanceState); setContentView(R.layout.tabdemo1); mTabHost = (TabHost)findViewById(android.R.id.tabhost); mTabHost.setup(); mTabWidget = mTabHost.getTabWidget(); mTabHost.addTab(mTabHost.newTabSpec( " tab1 " ).setContent( R.id.LinearLayout001).setIndicator( " Tab1 " )); mTabHost.addTab(mTabHost.newTabSpec( " tab2 " ).setContent( R.id.LinearLayout002).setIndicator( " Tab2 " )); mTabHost.addTab(mTabHost.newTabSpec( " tab3 " ).setContent( R.id.LinearLayout003).setIndicator( " Tab3 " )); // mTabHost.setCurrentTab(1); btnVisiable = (Button)findViewById(R.id.btnVisiable); btnStrip = (Button)findViewById(R.id.btnStrip); btnVisiable.setOnClickListener( this ); btnStrip.setOnClickListener( this ); setTitle( " 共有 " + mTabWidget.getTabCount() + " 个tab " ); } @Override public void onClick(Viewv){ // TODOAuto-generatedmethodstub switch (v.getId()){ case R.id.btnVisiable: if (mTabWidget.getVisibility() != android.view.View.VISIBLE) mTabWidget.setVisibility(android.view.View.VISIBLE); else mTabWidget.setVisibility(android.view.View.INVISIBLE); break ; case R.id.btnStrip: mTabWidget.setStripEnabled( ! mTabWidget.isStripEnabled()); mTabWidget.setRightStripDrawable(android.R.color.transparent); break ; default : break ; } } } XML: <? xmlversion="1.0"encoding="utf-8" ?> < TabHost xmlns:android ="http://schemas.android.com/apk/res/android" android:layout_width ="fill_parent" android:layout_height ="fill_parent" android:id ="@android:id/tabhost" > < LinearLayout android:layout_width ="fill_parent" android:orientation ="vertical" android:layout_height ="fill_parent" > < TabWidget android:id ="@android:id/tabs" android:layout_width ="fill_parent" android:layout_height ="wrap_content" ></ TabWidget > < FrameLayout android:id ="@android:id/tabcontent" android:layout_height ="wrap_content" android:layout_width ="fill_parent" > < LinearLayout android:id ="@+id/LinearLayout001" android:orientation ="vertical" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < Button android:id ="@+id/btnVisiable" android:text ="显示状态切换" android:layout_width ="fill_parent" android:layout_height ="wrap_content" ></ Button > < Button android:id ="@+id/btnStrip" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="分隔线状态切换" ></ Button > < TextView android:id ="@+id/TextView1" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="小龙是好人!!!" ></ TextView > </ LinearLayout > < LinearLayout android:id ="@+id/LinearLayout002" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < TextView android:id ="@+id/TextView2" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="小龙是坏蛋!" ></ TextView > </ LinearLayout > < LinearLayout android:id ="@+id/LinearLayout003" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < TextView android:id ="@+id/TextView3" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="小龙还是坏蛋!" ></ TextView > </ LinearLayout > </ FrameLayout > </ LinearLayout > </ TabHost > 结束 每次合集发布就像受检部队在接受检阅,紧张而又荣耀。为了每次的检阅,大家尽心尽力的筹备,做同一件事情,鼓励自己坚持,鼓励“战友”坚持。致力于可持续发展开源事业的建设。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582358,如需转载请自行联系原作者

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

Android中文API (110) —— CursorTreeAdapter

正文 一、结构 public abstract classCusrorTreeAdapter extendsBaseExpandableListAdpaterimplementsFilterable java.lang.Object android.widget.BaseExpandableListAdapter android.widget.CursorTreeAdapter 直接子类 ResourceCursorTreeAdapter 间接子类 SimpleCursorTreeAdapter 二、概述 通过该适配类可以用一连续的游标(Coursor)对象访问数据库,并将查询出来的数据展示到可伸缩的列表视图(ExpandableListView)部件上。顶层游标(Cursor)对象(在构造器中指定)显示全部组,后面的游标(Cursor)对象从getChildrenCursor(Cursor)获取并展示子元素组。其中游标携带的结果集中必须有个名为“_id”的列,否则这个类不起任何作用。 三、构造函数 publicCursorTreeAdapter(Cursor cursor, Context context) 构造函数。每当数据库的数据发生改变时,适配器将调用requery()重新查询以显示最新的数据。 参数 cursor为组(groups)提供数据的游标(Coursor) context应用程序上下文。 publicCursorTreeAdapter(Cursor cursor, Context context, boolean autoRequery) 构造函数。 参数 cursor为组(groups)提供数据的游标(Coursor) context应用程序上下文。 autoRequery设置为true时,每当数据库的数据发生改变时,适配器将调用requery()重新查询以显示最新的数据。 四、公共方法 public voidchangeCursor(Cursor cursor) 更改相关的游标为新传入的游标。如果游标已经存在则先关闭这个已存在的游标。 参数 cursor 新游标(Cursor)对象。 public CharSequenceconvertToString(Cursor cursor) 将cursor转换成CharSequence。子类应该重写这个方法并转换它们的结果。这个方法的默认实现是:当cursor为空时返回一个空串,否则直接返回调用cursor的toString()方法。 参数 cursor 将cursor转换成CharSequence对象。 返回值 返回CharSequence类型的值(译者注:这个值是通过转换参数cursor类型而获得的。) public CursorgetChild(int groupPosition, int childPosition) 获取指定组中的指定子元素的相关数据。 参数 groupPosition组位置(该组内部含有子元素) childPosition子元素位置(相对于其它子元素) 返回值 返回指定子元素数据。 public longgetChildId(int groupPosition, int childPosition) 获取指定组中的指定子元素ID,这个ID在组里一定是唯一的。联合ID(参见getCombinedChildId(long, long))在所有条目(所有组和所有元素)中也是唯一的。 参数 groupPosition组位置(该组内部含有子元素) childPosition子元素位置(相对于其它子元素) 返回值 子元素关联ID。 public 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 intgetChildrenCount(int groupPosition) 获取指定组中的子元素个数 参数 groupPosition组位置(决定返回哪个组的子元素个数) 返回值 返回组中的子元素个数 public CursorgetCursor() 返回当前适配器绑定的Cursor对象。 返回值 Cursor对象。 public FiltergetFilter() 返回一个可以通过一种过滤模式来约束数据的过滤器。 这个方法通常在Adapter类中实现。 返回值 返回一个用来限制数据的过滤器(Filter)对象。 public FilterQueryProvidergetFilterQueryProvider() 返回一个提供过滤的查询过滤器。若过滤器为null,则不再过滤。 返回值 返回当前过滤器对象,如果不存在返回null。 参考 getFilterQueryProvider() public CursorgetGroup(int groupPosition) 获取指定组中的数据 参数 groupPosition组位置 返回值 返回组中的数据,也就是该组中的子元素数据。 public intgetGroupCount() 获取组的个数 返回值 组的个数 public longgetGroupId(int groupPosition) 获取指定组的ID,这个组ID必须是唯一的。联合ID(参见getCombinedGroupId(long))在所有条目(所有组和所有元素)中也是唯一的。 参数 groupPosition 组位置 返回值 返回组ID public ViewgetGroupView(int groupPosition, boolean isExpanded, ViewconvertView, ViewGroup parent) 获取显示指定组的视图对象。这个方法仅返回关于组的视图对象,要想获取子元素的视图对象,就需要调用getChildView(int, int, boolean, View, ViewGroup)。 参数 groupPosition组位置(决定返回哪个视图) isExpanded该组是展开状态还是伸缩状态 convertView重用已有的视图对象。注意:在使用前你应该检查一下这个视图对象是否非空并且这个对象的类型是否合适。由此引伸出,如果该对象不能被转换并显示正确的数据,这个方法就会调用getGroupView(int, boolean, View, ViewGroup)来创建一个视图(View)对象。 parent返回的视图对象始终依附于的视图组。 返回值 返回指定组的视图对象 public booleanhasStableIds() 组和子元素是否持有稳定的ID,也就是底层数据的改变不会影响到它们。 返回值 返回一个Boolean类型的值,如果为TRUE,意味着相同的ID永远引用相同的对象。 public booleanisChildSelectable(int groupPosition, int childPosition) 是否选中指定位置上的子元素。 参数 groupPosition组位置(该组内部含有子元素) childPosition子元素位置 返回值 是否选中子元素 public voidnotifyDataSetChanged(boolean releaseCursors) 通知数据集已改变,该方法还为任何带有缓存功能的游标提供不用释放资源的可选功能。 参数 releaseCursors是否释放任何带有缓冲功能的游标资源 public voidnotifyDataSetChanged() 该方法内部实现了在每个观察者上面调用onChanged事件。每当发现数据集有改变的情况,或者读取到数据的新状态时,就会调用此方法。 public voidnotifyDataSetInvalidated() 该方法内部实现了在每个观察者上面调用onInvalidated事件。每当发现数据集监控有改变的情况,比如该数据集不再有效,就会调用此方法。 public voidonGroupCollapsed(int groupPosition) 当指定组收缩状态的时候调用此方法。 参数 groupPosition指定组收缩状态 public CursorrunQueryOnBackgroundThread(CharSequence constraint) 执行含指定约束的查询。此查询依赖于适配器的过滤器。查询是由FilterQueryProvider提供。如果没有指定FilterQueryProvider,当前cursor不过滤只返回。该方法会通过changeCursor(Cursor)方法返回一个Cursor对象,并且关闭掉先前的Cursor对象。这个方法始终在后台线程执行,而不是在应用程序的主线程(或是UI线程)中运行。规定:当参数constraint为null或为空时,该方法返回原始结果。 参数 constraint当某个查询需要过滤功能,使用参数constraint作为约束条件。 返回值 返回含有新的查询结果的Cursor。 参考 getFilter() getFilterQueryProvider() setFilterQueryProvider(android.widget.FilterQueryProvider) public voidsetChildrenCursor(int groupPosition, Cursor childrenCursor) 为指定组子元素设置游标(Cursor),并关闭已存在的游标。这个方法是非常有用的,当进行异步查询操作的时候用来避免UI发生阻塞的情况。 参数 groupPosition组位置(组中的哪个子元素要设置游标对象) childrenCursor组子元素的游标(Cursor) public voidsetFilterQueryProvider(FilterQueryProvider filterQueryProvider) 设置一个过滤器,用来过滤当前的Cursor对象。当这个适配器需要进行过滤操作时,runQuery(CharSequence)方法被调用。 参数 filterQueryProvider 过滤生成器对象,设置为null时,就相当于移除了该生成器。 参考 getFilterQueryProvider() runQueryOnBackgroundThread(CharSequence) public voidsetGroupCursor(Cursor cursor) 设置组游标对象。 参数 cursor设置组游标对象,并关闭已存在的游标对象。 五、受保护方法 protected abstract voidbindChildView(View view, Context context, Cursor cursor,boolean isLastChild) 用游标(Coursor)的方式将子元素数据绑定在一个已存在的视图(View)对象上。 参数 view 已存在的视图(View)对象,也就是之前new出来的。 context应用程序上下文对象 cursor获取数据的游标对象,它已经移动到正确的位置 IsLastChild子元素是否处于组中的最后一个 protected abstract voidbindGroupView(View view, Context context, Cursor cursor,boolean isExpanded) 用游标(Coursor)的方式将组数据绑定在一个已存在的视图(View)对象上。 参数 view 已存在的组视图(View)对象,也就是早先new出来的。 context应用程序上下文对象,它已经移动到正确的位置 cursor获取数据的游标对象 isExpanded该组是展开状态还是伸缩状态 protected abstract CursorgetChildrenCursor(Cursor groupCursor) 获取指定组中的子元素游标对象。子类必须实现这个方法,用于在指定组中返回子元素数据。 如果你想用异步查询的方式避免UI阻塞的情况发生,可能会返回null或是在稍后调用setChildrenCursor(int, Cursor)。 你有责任在Activity生命周期中管理这个游标对象,有一个非常好的思路:使用managedQuery(Uri, String[], String, String[], String)来管理它们。在某些情况下,适配器本身会使游标停止工作,但这个特例不会总是出现,所以我们要确保有效地管理好游标对象。 参数 groupCursor组游标对象,决定返回哪个组中的子元素游标对象。 返回值 返回指定组中的子元素游标对象或者为null。 protected abstract ViewnewChildView(Context context, Cursor cursor, booleanisLastChild, ViewGroup parent) 创建一个新的子元素视图并持有指向数据的游标cursor。 参数 context应用程序上下文对象 cursor获取数据的游标对象,它已经移动到正确的位置 IsLastChild子元素是否处于组中的最后一个 parent新视图(View)所依附于的父对象。 protected abstract ViewnewGroupView(Context context, Cursor cursor, booleanisExpanded, ViewGroup parent) 创建一个新的组视图并持有组中指向数据的游标cursor。 参数 context应用程序上下文对象 cursor获取数据的游标对象,它已经移动到正确的位置 isExpanded该组是否展开状态 parent 新视图 (View) 所依附于的父对象。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582373,如需转载请自行联系原作者

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

Android 中文 API (101) —— AsyncTask

正文 一、结构 public abstract classAsyncTask extendsObject java.lang.Object android.os.AsyncTask<Params, Progress, Result> 二、类概述 AsyncTask能够适当地、简单地用于UI线程。 这个类不需要操作线程(Thread)就可以完成后台操作将结果返回UI。 异步任务的定义是一个在后台线程上运行,其结果是在UI线程上发布的计算。 异步任务被定义成三种泛型类型:Params,Progress和Result;和四个步骤:begin,doInBackground,processProgress和end。 三、用法 AysncTask 必须被继承使用。子类至少 覆盖 一个方法 ( doInBackground(Params...) ) ,最经常 覆盖 另一个 ( onPostExecute(Result) .) 下面是一个子类的例子: private class DownloadFilesTask extends AsyncTask < URL,Integer,Long > { protected LongdoInBackground(URL...urls){ int count = urls.length; long totalSize = 0 ; for ( int i = 0 ;i < count;i ++ ){ totalSize += Downloader.downloadFile(urls[i]); publishProgress(( int )((i / ( float )count) * 100 )); } return totalSize; } protected void onProgressUpdate(Integer...progress){ setProgressPercent(progress[ 0 ]); } protected void onPostExecute(Longresult){ showDialog( " Downloaded " + result + " bytes " ); } } 一旦创建,一个任务执行起来就非常简单: new DownloadFilesTask().execute(url1,url2,url3); 四、AsyncTask的泛型类型 这三个类型被用于一个异步任务,如下: 1.Params,启动任务执行的输入参数 2.Progress,后台任务执行的百分比 3.Result,后台计算的结果类型 在一个异步任务里,不是所有的类型总被用。假如一个类型不被使用,可以简单地使用Void类型: private class MyTask extends AsyncTask < Void,Void,Void > {...} 五、4个步骤 当一个异步任务被执行,任务经过四各步骤: 1.onPreExecute(),在UI线程上调用任务后立即执行。这步通常被用于设置任务,例如在用户界面显示一个进度条。 2.doInBackground(Params...),后台线程执行onPreExecute()完后立即调用,这步被用于执行较长时间的后台计算。异步任务的参数也被传到这步。计算的结果必须在这步返回,将传回到上一步。在执行过程中可以调用publishProgress(Progress...)来更新任务的进度。 3.onProgressUpdate(Progress...),一次呼叫publishProgress(Progress...)后调用 UI线程。执行时间是不确定的。这个方法用于当后台计算还在进行时在用户界面显示进度。例如:这个方法可以被用于一个进度条动画或在文本域显示记录。 4.onPostExecute(Result),当后台计算结束时,调用 UI线程。后台计算结果作为一个参数传递到这步。 六、线程规则 有一些线程规则必须去遵守,这个类才会正确的工作: 任务实例必须创建在 UI线程 execute(Params...)必须在UI线程上调用 不要手动调用onPreExecute(),onPostExecute(Result),doInBackground(Params...),onProgressUpdate(Progress...) 这个任务只执行一次(如果执行第二次将会抛出异常) 七、内部类 enum AsyncTask.Status 表示任务的当前状态 八、构造函数 public AsyncTask () 创建一个新的异步任务。这个构造函数必须在UI线程上调用。 九、公共方法 public final booleancancel(boolean mayInterruptIfRunning) 尝试取消这个任务的执行,如果这个任务已经结束或者已经取消或者不能被取消或者某些其他原因,那么将导致这个操作失败,当调用此方法时,此方法执行成功并且这个任务还没有执行,那么此任务将不再执行。如果任务已经开始,这时执行此操作传入的参数mayInterruptIfRunning为true,执行此任务的线程将尝试中断该任务。 参数 mayInterruptIfRunning如果为true则正在执行的线程将会中断,如果false,则会允许正在执行的任务线程执行完毕。 返回值 如果此任务不能取消返回false,如果已经正常的执行完毕,返回true 参见 isCancelled() onCancelled() public final AsyncTask<Params, Progress, Result>execute(Params... params) 用指定的参数来执行此任务,这个方法将会返回此任务本身,所以调用者可以拥有此任务的引用。此方法必须在UI线程中调用 参数 params 任务参数 返回值 AsyncTask的实例 异常 IllegalStateException如果getStatus()返回的是RUNNING或者FINISHED public final Resultget() 等待计算结束并返回结果 返回值 计算结果 异常 CancellationException如果计算取消 ExecutionException如果计算抛出异常 InterruptedException当等待时当前线程抛出异常 public final Resultget(long timeout, TimeUnit unit) 等待计算结束并返回结果,最长等待时间为:timeOut(超时时间). 参数 timeout计算等待超时时间 unit超时的时间单位 返回值 计算结果 异常 CancellationException如果计算取消 ExecutionException如果计算抛出异常 InterruptedException当等待时当前线程抛出异常 TimeoutException等待时间超时 public final AsyncTask.StatusgetStatus() 获得任务的当前状态 返回值 当前状态 public final booleanisCancelled() 如果在任务正常结束之前取消任务成功则返回true,否则返回false 返回值 如果任务正常结束之前取消任务成功返回true。 参见 cancel(boolean) 十、受保护方法 protected abstract ResultdoInBackground(Params... params) 覆盖此方法在后台线程执行计算,此方法中的参数是此任务的execute(Params...)方法的调用这传递的参数,此方法可以调用publishProgress(Progress...)在UI线程中来更新数据 参数 params 此任务的参数 返回值 返回一个由此任务子类定义的结果Result 参见 onPreExecute() onPostExecute(Result) publishProgress(Progress...) protected voidonCancelled() 此方法在UI线程中当cancel(boolean)被调用后调用 参见 cancel(boolean) isCancelled() protected voidonPostExecute(Result result) 此方法在UI线程中doInBackground(Params...)。方法调用之后调用,此方法中的参数的值是doInBackground(Params...)的返回值或者当此任务已经被取消或有异常发生时此参数值为空null 参数 result由doInBackground(Params...)计算出的操作的结果。 参见 onPreExecute() doInBackground(Params...) protected voidonPreExecute() 在方法doInBackground(Params...)调用之前调用 参见 onPostExecute(Result) doInBackground(Params...) protected voidonProgressUpdate(Progress... values) 该方法在UI线程中publishProgress(Progress...)被调用之后调用,该方法中的参数values是已经被传递到publishProgress(Progress...)中的参数 参数 values进度表示值 参见 publishProgress(Progress...) doInBackground(Params...) protected final voidpublishProgress(Progress... values) 当调用doInBackground(Params...)在后台执行计算时会调用该方法,每当在UI线程中调用此方法时将触发onProgressUpdate(Progress...)方法的执行 参数 values将进度值更新到UI 参见 onProgressUpdate(Progress...) doInBackground(Params...) 十一、补充 文章精选 Android AsyncTask理解 TabActivity下在AsyncTask中使用ProgressDialog存在问题的解决方法 小心,AsyncTask不是萬能的[blogspot] 十二、公告 内部类、内部接口由于内容较少均不再单独发布。 结束 随着春节的结束,翻译组工作重新回到正轨,感谢大家的关注与支持! —————————————————————————————————————————— AsyncTask.Status 一、结构 public static final enumAsyncTask.Status extendsEnum<E extends Enum<E>> java.lang.Object java.lang.Enum<E extends java.lang.Enum<E>> android.os.AsyncTask.Status 二、类概述 标志任务的当前状态,每个状态在任务的生命周期中只会出现一次。 三、枚举值 public static final AsyncTask.StatusFINISHED 标志onPostExecute(Result)方法已经结束 public static final AsyncTask.StatusPENDING 标志任务还没有执行 public static final AsyncTask.StatusRUNNING 标志任务正在执行 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582388,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

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等操作系统。

用户登录
用户注册