首页 文章 精选 留言 我的

精选列表

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

Android 中文API(86)——ResourceCursorAdapter

正文 一、结构 public abstract classResourceCursorAdapterextendsCursorAdapter java.lang.Object android.widget.BaseAdapter android.widget.CursorAdapter android.widget.ResourceCursorAdapter 直接子类 SimpleCursorAdapter 二、概述 这是一个简单的适配器,通过指定一个定义了视图UI的XML文件来创建视图。 三、构造函数 publicResourceCursorAdapter(Contextcontext, int layout,Cursorc) 构造函数 参数 Context与ListView相关的正在运行的SimpleListItemFactory上下文 layout一个定义了列表项视图的布局文件资源ID,这个布局同时定义列表项视图和下拉视图,直到你重写它们。 c 获取数据的游标 publicResourceCursorAdapter(Contextcontext,int layout,Cursorc, boolean autoRequery) 构造函数 参数 Context与ListView相关的正在运行的SimpleListItemFactory上下文 layout一个定义了列表项视图的布局文件资源ID,这个布局同时定义列表项视图和下拉视图,直到你重写它们。 c 获取数据的游标 autoRequery如果此参数为true,当适配器的数据发生变化的时,适配器会调用游标的requery()方法,使最新的数据始终显示。 四、公共方法 publicViewnewDropDownView(Contextcontext,Cursorcursor,ViewGroupparent) 生成一个新的下拉视图来控制游标指向的数据 参数 context应用程序全局信息接口(应用上下文) cursor获取数据的游标,它已经移动到正确的位置 parent与新视图相关联的上级视图 返回值 新创建的视图 publicViewnewView(Contextcontext,Cursorcursor,ViewGroupparent) 根据指定的xml文件创建视图 参数 context应用程序全局信息接口(应用上下文) cursor获取数据的游标,它已经移动到正确的位置 parent与新视图相关联的上级视图 返回值 新创建的视图 参见 newView(android.content.Context, android.database.Cursor, ViewGroup) public voidsetDropDownViewResource(int dropDownLayout) 设置下拉视图相应的布局资源 参数 dropDownLayout用于创建下拉视图的布局资源 public voidsetViewResource(int layout) 设置列表项视图相应的布局资源 参数 layout用于创建列表项视图的布局资源 五、补充 文章精选 ListActivity简介 代码示例(ApiDemos\src\com\example\android\apis\app\QuickContactsDemo.java) public class QuickContactsDemo extends ListActivity{ static final String[]CONTACTS_SUMMARY_PROJECTION = new String[]{ Contacts._ID, // 0 Contacts.DISPLAY_NAME, // 1 Contacts.STARRED, // 2 Contacts.TIMES_CONTACTED, // 3 Contacts.CONTACT_PRESENCE, // 4 Contacts.PHOTO_ID, // 5 Contacts.LOOKUP_KEY, // 6 Contacts.HAS_PHONE_NUMBER, // 7 }; static final int SUMMARY_ID_COLUMN_INDEX = 0 ; static final int SUMMARY_NAME_COLUMN_INDEX = 1 ; static final int SUMMARY_STARRED_COLUMN_INDEX = 2 ; static final int SUMMARY_TIMES_CONTACTED_COLUMN_INDEX = 3 ; static final int SUMMARY_PRESENCE_STATUS_COLUMN_INDEX = 4 ; static final int SUMMARY_PHOTO_ID_COLUMN_INDEX = 5 ; static final int SUMMARY_LOOKUP_KEY = 6 ; static final int SUMMARY_HAS_PHONE_COLUMN_INDEX = 7 ; @Override public void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); Stringselect = " (( " + Contacts.DISPLAY_NAME + " NOTNULL)AND( " + Contacts.HAS_PHONE_NUMBER + " =1)AND( " + Contacts.DISPLAY_NAME + " !='')) " ; Cursorc = getContentResolver().query(Contacts.CONTENT_URI,CONTACTS_SUMMARY_PROJECTION,select, null ,Contacts.DISPLAY_NAME + " COLLATELOCALIZEDASC " ); startManagingCursor(c); ContactListItemAdapteradapter = new ContactListItemAdapter( this ,R.layout.quick_contacts,c); setListAdapter(adapter); } private final class ContactListItemAdapter extends ResourceCursorAdapter{ public ContactListItemAdapter(Contextcontext, int layout,Cursorc){ super (context,layout,c); } @Override public void bindView(Viewview,Contextcontext,Cursorcursor){ final ContactListItemCachecache = (ContactListItemCache)view.getTag(); TextViewnameView = cache.nameView; QuickContactBadgephotoView = cache.photoView; // Setthename cursor.copyStringToBuffer(SUMMARY_NAME_COLUMN_INDEX,cache.nameBuffer); int size = cache.nameBuffer.sizeCopied; cache.nameView.setText(cache.nameBuffer.data, 0 ,size); final long contactId = cursor.getLong(SUMMARY_ID_COLUMN_INDEX); final StringlookupKey = cursor.getString(SUMMARY_LOOKUP_KEY); cache.photoView.assignContactUri(Contacts.getLookupUri(contactId,lookupKey)); } @Override public ViewnewView(Contextcontext,Cursorcursor,ViewGroupparent){ Viewview = super .newView(context,cursor,parent); ContactListItemCachecache = new ContactListItemCache(); cache.nameView = (TextView)view.findViewById(R.id.name); cache.photoView = (QuickContactBadge)view.findViewById(R.id.badge); view.setTag(cache); return view; } } final static class ContactListItemCache{ public TextViewnameView; public QuickContactBadgephotoView; public CharArrayBuffernameBuffer = new CharArrayBuffer( 128 ); } } 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582425,如需转载请自行联系原作者

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

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

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

Android 中文API (94) —— MediaController

正文 一、结构 public classMediaController extendsFrameLayout java.lang.Object android.view.View android.view.ViewGroup android.widget.FrameLayout android.widget.MediaController 二、类概述 一个包含媒体播放器(MediaPlayer)控件的视图。包含了一些典型的按钮,像"播放(Play)/暂停(Pause)", "倒带(Rewind)", "快进(Fast Forward)"与进度滑动器(progress slider)。它管理媒体播放器(MediaController)的状态以保持控件的同步。 通过编程来实例化使用这个类。这个媒体控制器将创建一个具有默认设置的控件,并把它们放到一个窗口里漂浮在你的应用程序上。具体来说,这些控件会漂浮在通过setAnchorView()指定的视图上。如果这个窗口空闲3秒那么它将消失,直到用户触摸这个视图的时候重现。 当媒体控制器是在一个XML布局资源文件中创建的时候,像show()和hide()这些函数是无效的。媒体播放器将根据这些规则去显示和隐藏: *在调用setPrevNextListeners()函数之前,"previous"和"next"按钮都是隐藏的。 * 如果setPrevNextListeners() 函数被调用但传入的监听器参数是null ,那么"previous" 和"next" 按钮是可见的但是处于禁用状态。 * "rewind" 和 "fastforward" 按钮是显示的,如果不需要可以使用构造函数 MediaController(Context, boolean) 将 boolean 设置为 false 。 三、公共方法 public booleandispatchKeyEvent(KeyEvent event) 在焦点路径上分发按钮事件到下一个视图。该路径从视图树的顶端遍历到当前获得焦点的视图。如果当前视图已获得焦点,就分发给自身。否则,就分发到下一个节点的焦点路径上。这个方法也可以激发任何一个按键消息监听器。 参数 event被分发的事件 返回值 如果这个事件被处理了返回true,否则返回false。 public voidhide() 从屏幕中移除控制器。 public booleanisShowing() (译者注:判断媒体控制器是否处于可见状态。) public voidonFinishInflate() XML文件加载视图完成时调用。这个函数在加载的最后阶段被调用,所有的子视图已经被添加。 即使子类重写了onFinishInflate方法,也应该始终确保调用父类方法,以便我们调用。 public booleanonTouchEvent(MotionEvent event) 实现这个方法来处理触摸屏幕引发的事件。 参数 event动作事件 返回值 如果这个事件被处理了返回true,否则返回false。 public booleanonTrackballEvent(MotionEvent ev) 实现这个方法处理轨迹球的动作事件,轨迹球相对运动的最后一个事件能用MotionEvent.getX()和MotionEvent.getY()函数获取。这些都是标准化的,用1表示用户按下一个DPAD按键。(因此他们将经常使用小数值表示,为轨迹球提供更多的的细微运动信息)(译者注:DPAD按键事件: KeyEvent.KEYCODE_DPAD_CENTER(居中)、KeyEvent.KEYCODE_DPAD_DOWN(向下)、KeyEvent.KEYCODE_DPAD_LEFT(向左)、KeyEvent.KEYCODE_DPAD_RIGHT(向右)、KeyEvent.KEYCODE_DPAD_UP(向上)作比较。分别表示居中、下移、左移、右移、上移的操作。相关链接:onTrackBallEvent方法简介) 参数 ev动作事件 返回值 如果这个事件被处理了返回true,否则返回false。 public void setAnchorView (View view) 设置这个控制器绑定(anchor/锚)到一个视图上。例如可以是一个VideoView对象,或者是你的activity的主视图。 参数 view 将视图来绑定控制器时可见 public voidsetEnabled(boolean enabled) 设置视图对象的有效状态。这也可以改变子类的有效状态。 参数 enabled如果要让这个视图对象可用就设置为true,否则设置为false。 public voidsetMediaPlayer(MediaController.MediaPlayerControl player) (译者注:把这个媒体控制器设置到VideoView对象上。) public voidsetPrevNextListeners(View.OnClickListener next, View.OnClickListener prev) (译者注:设置"previous"和"next"按钮的监听器函数。) public voidshow(int timeout) 在屏幕上显示这个控制器。它将在闲置’超时(timeout)’毫秒到达后自动消失。 参数 timeout这个参数以毫秒为单位。如果设置为0将一直显示到调用hide()函数为止。 public voidshow() 在屏幕上显示这个控制器。它将在 3 秒以后自动消失。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582407,如需转载请自行联系原作者

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

android中文api(85)——HorizontalScrollView

正文 一、结构 public classHorizontalScrollView extendsFrameLayout java.lang.Object android.view.View android.view.ViewGroup android.widget.FrameLayout android.widget.HorizontalScrollView 二、概述 用于布局的容器,可以放置让用户使用滚动条查看的视图层次结构,允许视图结构比手机的屏幕大。HorizontalScrollView是一种FrameLayout(框架布局),其子项被滚动查看时是整体移动的,并且子项本身可以是一个有复杂层次结构的布局管理器。一个常见的应用是子项在水平方向中,用户可以滚动显示顶层水平排列的子项(items)。 HorizontalScrollView不可以和ListView同时用,因为ListView有自己的滚动条设置。最重要的是,如果在需要显示很大的list的情况下,两者同时用则会使ListView在一些重要的优化上失效。出现这种失效的原因在于,HorizontalScrollView会强迫ListView用HorizontalScrollView本身提供的空间容器(infinite container)来显示完整的列表。 类似的情况,TextView也有自己的滚动条,所以不需要ScrollView。但这两者是可以同时使用的,使用的结果会是在一个更大的容器里显示文本视图。 HorizontalScrollView 只支持水平方向的滚动显示。 三、公共方法 public voidaddView(View child) 添加一个子视图。若这个子视图没有被设置布局参数,则使用ViewGroup的缺省参数。 参数 child要添加的子视图 public voidaddView(View child, int index) 添加一个子视图。若这个子视图没有被设置布局参数,则使用ViewGroup的缺省参数。 参数 child要添加的子视图 index子视图要加入的位置 public voidaddView(View child, int index, ViewGroup.LayoutParams params) 添加一个带有指定布局参数的子视图。 参数 child要添加的子视图 index子视图要加入的位置 params 子视图的布局参数 public voidaddView(View child, ViewGroup.LayoutParams params) 添加一个带有指定布局参数的子视图。 参数 child要添加的子视图 params 子视图的布局参数 public booleanarrowScroll(int direction) 响应点击左右箭头时对滚动条的处理。 参数 direction The direction corresponding to the arrow key that was pressed箭头按键所表示的方向 返回值 若此事件成功完成,则返回true;否则返回false。 public voidcomputeScroll() 被父视图调用,用于必要时候对其子视图的值(mScrollX和mScrollY)进行更新。典型的情况如:父视图中某个子视图使用一个Scroller对象来实现滚动操作,会使得此方法被调用。 public booleandispatchKeyEvent(KeyEvent event) 按照可以获得焦点的顺序(从视图树的顶端到当前获得焦点的视图),分派一个按键事件给下一个视图。若此视图为焦点视图,事件将会分派给它自己。否则它将按照顺序,分派给下一个节点。此方法同时触动所有按键监听器。 参数 event被分派的事件. 返回值 若事件被处理,则返回true;否则为false public voiddraw(Canvas canvas) 手动绘制视图(及其子视图)到指定的画布(Canvas)。这个视图必须在调用这个函数之前做好了整体布局。。当实现一个视图时,不需要继承这个方法;相反,你应该实现onDraw(Canvas)方法。 参数 canvas绘制视图的画布 public booleanexecuteKeyEvent(KeyEvent event) 需要通过按键事件来实现滚动操作时,可以调用此方法。效果类似于由视图树型结构分派事件。 参数 event需要执行的事件 返回值 若事件被处理,则返回true;否则为false public voidfling(int velocityX) 滚动视图的fling手势。 参数 velocityX方向的初始速率。正值表示手指/光标向屏幕右边滑动,而内容相对向左滚动。 public booleanfullScroll(int direction) 处理按下"home/end"快捷键之后的滚动响应。此方法会将视图移左或移右,同时将焦点赋予移动后可视的最左或最右的组件。如果没有任何组件适合得到焦点,此scrollview将收回焦点。 参数 direction滚动方向:FOCUS_LEFT表示向视图的左边移动,FOCUS_RIGHT表示向视图的右边移动 返回值 若此方法消耗(consumed)了按键事件则返回true,否则返回false。 public intgetMaxScrollAmount() 返回值 按左右箭头时视图可以滚动的最大值。 public booleanisFillViewport() 表示此ScrollView的内容是否被拉伸以适应视口(viewport)的大小。 返回值 若内容填充了视口则返回true,否则返回false。 public booleanisSmoothScrollingEnabled() 返回值 按箭头方向滚动时,是否显示滚动的平滑效果。 public booleanonInterceptTouchEvent(MotionEvent ev) 使用此方法可以拦截所有触摸屏动作引发的事件。这意味着你可以监视分派给子项的事件,并且可以拿到任何当前手势的所有权。 使用此方法需谨慎。因为它与View.onTouchEvent(MotionEvent)有相当复杂的交互影响。这两者都必须同时正确地实现。事件将按以下顺序来被方法接收: 1.接收到down事件 2.事件将被视图组的一个子视图处理,或者被传递给自己的onTouchEvent()方法处理;这意味着你必须实现onTouchEvent(),并且返回true,这样才可以接着接受到其他的手势(而不是寻求一个父视图来处理它)。onTouchEvent()返回true后,你将不再接受到onInterceptTouchEvent()的任何事件,同时所有对触摸动作的处理必须像往常一样在onTouchEvent()中进行。 3.如果返回false,则接下来的每个事件(所有的up事件,包含最后一个up)将会首先被传递到这里,然后到目标对象view的onTouchEvent()。 4.如果返回ture,你将不会接收到以下任何事件:目标view将会接收到相同的事件,但是带着ACTION_CANCEL的动作。所有在此之后的事件将会被传递到你的onTouchEvent()方法中,并且不再在这里出现。 参数 ev沿着树型结构往下分派的动作事件 返回值 若将动作事件从子视图中截获并通过onTouchEvent()将他们分派给当前ViewGroup,则返回true。当前目标将收到一个ACTION_CANCEL事件,并且不再会有其他消息被传递到这里。 public booleanonTouchEvent(MotionEvent ev) 此方法用于处理触摸屏的动作事件。 参数 ev动作事件 返回值 若事件被成功处理,则返回true;否则返回false public booleanpageScroll(int direction) 处理按下"page up/down"快捷键之后的滚动响应。此方法会将视图往左或往右滚动一个页面的距离,同时将焦点赋予移动后可视的最左或最右的组件。如果没有任何组件适合得到焦点,此scrollview将收回焦点。 参数 direction滚动方向:FOCUS_LEFT表示向视图的左边移动一个页面FOCUS_RIGHT表示向视图的右边移动一个页面 返回值 若此方法处理(consumed)了按键事件则返回true,否则返回false。 public voidrequestChildFocus(View child, View focused) 当父视图的一个子视图要获得焦点时,调用此方法。 参数 child要获得焦点的子视图。此视图将包含焦点视图,但其本身不必为焦点。 focused 事实上拥有焦点的子视图的下层视图。 public booleanrequestChildRectangleOnScreen(View child, Rect rectangle, boolean immediate) 当组里的某个子视图需要被定位在屏幕的某个矩形范围时,调用此方法。重载此方法的ViewGroup可确认以下几点: *子项目将是组里的直系子项 *矩形将在子项目的坐标体系中 重载此方法的ViewGroup应该支持以下几点: *若矩形已经是可见的,则没有东西会改变 *为使矩形区域全部可见,视图将可以被滚动显示 参数 child发出请求的子视图 rectangle子项目坐标系内的矩形,即此子项目希望在屏幕上的定位 immediate设为true,则禁止动画和平滑移动滚动条 返回值 进行了滚动操作的这个组(group),是否处理此操作 public voidrequestLayout() 当出现使视图布局失效的改变时,调用此方法。它将规划一个视图树的布局路径。 public voidscrollTo(int x, int y) 设置视图滚动后的位置。这将引起onScrollChanged(int,int,int,int)的调用,同时使此视图失效。 此版本同时将滚动锁定于子视图的范围。 参数 x要滚动到的x位置 y要滚动到的y位置 public voidsetFillViewport(boolean fillViewport) 设置此滚动视图是否将内容宽度拉伸来适应视口(viewport)。 参数 fillViewport设置为true表示将拉伸内容宽度;否则会设置为false。 public voidsetOverScrollMode(int mode) 为视图设置over-scroll模式。有效的over-scroll模式有OVER_SCROLL_ALWAYS(缺省值),OVER_SCROLL_IF_CONTENT_SCROLLS(只允许当视图内容大过容器时,进行over-scrolling)和OVER_SCROLL_NEVER。只有当视图可以滚动时,此项设置才起作用。 参数 mode视图的新over-scroll模式值 public voidsetSmoothScrollingEnabled(boolean smoothScrollingEnabled) 设置是否呈现按下箭头后的平滑滚动效果(动画效果)。 参数 smoothScrollingEnabled设置是否呈现平滑滚动效果 public final voidsmoothScrollBy(int dx, int dy) 类似scrollBy(int, int),但是呈现平滑滚动,而非瞬间滚动(译者注:瞬间滚动——指不显示滚动过程,直接显示滚动后达到的位置)。 参数 dx要滚动的X轴像素差值(译者注:横向像素差值) dy要滚动的Y轴像素差值(译者注:纵向像素差值) public final voidsmoothScrollTo(int x, int y) 类似scrollTo(int, int),但是呈现平滑滚动,而不是瞬间滚动。 参数 x滚动要到达位置的X轴值 y 滚动要到达位置的 Y 轴值 四、受保护方法 protected intcomputeHorizontalScrollOffset() 计算水平方向滚动条的滑块的偏移值。此值用来计算滚动时滑块的位置。 偏移值的范围可以以任何单位表示,但必须与computeHorizontalScrollRange()和computeHorizontalScrollExtent()的单位一致。 缺省的偏移值为视图滚动的偏移差值。 返回值 滚动条滑块在水平方向上的偏移值 protected intcomputeHorizontalScrollRange() scroll view的可滚动水平范围是所有子视图的宽度总合。 返回值 水平滚动条表示的全部水平滚动范围 protected intcomputeScrollDeltaToGetChildRectOnScreen(Rect rect) 计算X方向滚动的总合,以便在屏幕上显示子视图的完整矩形(或者,若矩形宽度超过屏幕宽度,至少要填满第一个屏幕大小)。 参数 rect矩形 返回值 滚动差值 protected floatgetLeftFadingEdgeStrength() 返回左渐变边缘的强度或密集度。强度的值介于0.0(无渐变)到1.0(全渐变)之间。缺省实现只返回0.0或1.0,而不返回中间值。子类必须重载次方法来给滚动动作提供更平滑的渐变过程。 返回值 左渐变的强度,即介于0.0f和1.0f之间的浮点值 protected floatgetRightFadingEdgeStrength() 返回右渐变边缘的强度或密集度。强度的值介于0.0(无渐变)到1.0(全渐变)之间。缺省实现只返回0.0或1.0,而不返回中间值。子类必须重载此方法来给滚动动作提供更平滑的渐变过程。 返回值 右渐变的强度,即介于0.0f和1.0f之间的浮点值 protected voidmeasureChild(View child, int parentWidthMeasureSpec, int parentHeightMeasureSpec) 要求子视图测量自身,需要将视图的MeasureSpec和其附加内容同时考虑在内。getChildMeasureSpec在其中承担了重要角色,它计算出MeasureSpec,并传递给子视图。 参数 child要测量的子视图 parentWidthMeasureSpec此视图的宽度要求 parentHeightMeasureSpec此视图的高度要求 protected voidmeasureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) 要求子视图测量自身,需要将视图的MeasureSpec、附加内容和边缘部分同时考虑在内。子项必须有MarginLayoutParams(边缘布局参数)。getChildMeasureSpec在其中承担了重要角色,它计算出MeasureSpec,并传递给子视图。 参数 child要测量的子视图 parentWidthMeasureSpec此视图的宽度要求 widthUsed被父视图(也可能是其他子视图)占用的横向额外空间 parentHeightMeasureSpec此视图的高度要求 heightUsed被父视图(也可能是其他子视图)占用的纵向额外空间 protected voidonLayout(boolean changed, int l, int t, int r, int b) 当此视图要给每个子视图赋值大小和位置时,layout会调用此方法。子项的派生类应当重载此方法,并且调用各个子项的layout。 参数 changed此视图有新的大小或位置 l左边界位置,相对于父视图 t上边界位置,相对于父视图 r右边界位置,相对于父视图 b下边界位置,相对于父视图 protected voidonMeasure(int widthMeasureSpec, int heightMeasureSpec) 调用此方法来确定本身和所包含内容的大小(宽度和高度)。此方法被measure(int,int)唤起,而且必须被子类重载以得到所包含内容的确切大小。 注意:当重载此方法时,必须调用setMeasureDimension(int,int)来保存View的大小。如果没有做到,将会引发一个measure(int,int)抛出的IllegalStateException(非法状态错误)。超类onMeasure(int,int)可以被调用。 编写基类的确认大小的方法,缺省情况下是根据其背景大小来确认,除非MeasureSepc允许有更大的高度或宽度。子类必须重载onMeasure(int,int)以得到对其内容大小的更准确的测量。 若此方法被重载,它的子类需要确保其高度和宽度至少达到View所规定的最小值(可通过getSuggestedMinimumHeight()和getSuggestedMinimumWidth()得到)。 参数 widthMeasureSpec受上一层大小影响下的对水平空间的要求。可参看View.MeasureSpec。 heightMeasureSpec受上一层大小影响下的对垂直空间的要求。可参看View.MeasureSpec。 protected voidonOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) 被overScrollBy(int, int, int, int, int, int, int, int, boolean)调用,来对一个over-scroll操作的结果进行响应。 参数 scrollX新的X滚动像素值 scrollY新的Y滚动像素值 clampedX当scrollX被over-scroll的边界限制时,值为true clampedY当scrollY被over-scroll的边界限制时,值为true protected booleanonRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) 当在某个scroll view的子视图中寻找焦点时,需要小心不能让屏幕之外的组件得到焦点。这比缺省ViewGroup的实现代价更高,否则此行为被设为缺省。 参数 direction值可以为FOCUS_UP,FOCUS_DOWN,FOCUS_LEFT或FOCUS_RIGHT previouslyFocusedRect能够给出一个较好的提示的矩形(当前视图的坐标系统)表示焦点从哪里得来。如果没有提示则为null。 返回值 是否取到了焦点。 protected voidonSizeChanged(int w, int h, int oldw, int oldh) 当View的大小改变时此方法被调用。如果View是刚刚被加入,则视之前的值为0。 参数 wView的当前宽度 hView的当前高度 oldwView大小改变之前的宽度 oldhView大小改变之前的高度 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582426,如需转载请自行联系原作者

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

Android 中文 API (35) —— ImageSwitcher

正文 一、结构 public classImageSwitcherextendsViewSwitcher java.lang.Objectandroid.view.View android.view.ViewGroup android.widget.FrameLayout android.widget.ViewAnimator android.widget.ViewSwitcher android.widget.ImageSwitcher 二、概述 (译者注:ImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果...,颇有感觉啊,做相册一绝。) 三、公共方法 public void setImageDrawable (Drawable drawable) 绘制图片 public void setImageResource (int resid) 设置图片资源库 public void setImageURI (Uri uri) 设置图片地址 四、补充 4.1 文章链接 Android ImageSwitcher Image Switcher View | Android Developer Tutorial 4.2 示例代码(本文代码转载自这里) java文件 public class mainactivity extends Activity implements OnItemSelectedListener,ViewFactory{ private ImageSwitcheris; private Gallerygallery; private Integer[]mThumbIds = {R.drawable.b,R.drawable.c, R.drawable.d,R.drawable.f,R.drawable.g, }; private Integer[]mImageIds = {R.drawable.b,R.drawable.c, R.drawable.d,R.drawable.f,R.drawable.g,}; @Override protected void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); is = (ImageSwitcher)findViewById(R.id.switcher); is.setFactory( this ); is.setInAnimation(AnimationUtils.loadAnimation( this , android.R.anim.fade_in)); is.setOutAnimation(AnimationUtils.loadAnimation( this , android.R.anim.fade_out)); gallery = (Gallery)findViewById(R.id.gallery); gallery.setAdapter( new ImageAdapter( this )); gallery.setOnItemSelectedListener( this ); } @Override public ViewmakeView(){ ImageViewi = new ImageView( this ); i.setBackgroundColor( 0xFF000000 ); i.setScaleType(ImageView.ScaleType.FIT_CENTER); i.setLayoutParams( new ImageSwitcher.LayoutParams( LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT)); return i; } public class ImageAdapter extends BaseAdapter{ public ImageAdapter(Contextc){ mContext = c; } public int getCount(){ return mThumbIds.length; } public ObjectgetItem( int position){ return position; } public long getItemId( int position){ return position; } public ViewgetView( int position,ViewconvertView,ViewGroupparent){ ImageViewi = new ImageView(mContext); i.setImageResource(mThumbIds[position]); i.setAdjustViewBounds( true ); i.setLayoutParams( new Gallery.LayoutParams( LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); i.setBackgroundResource(R.drawable.e); return i; } private ContextmContext; } @Override public void onItemSelected(AdapterView <?> parent,Viewview, int position, long id){ is.setImageResource(mImageIds[position]); } @Override public void onNothingSelected(AdapterView <?> parent){ } } xml文件 <? xmlversion="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" > < ImageSwitcher android:id ="@+id/switcher" android:layout_width ="match_parent" android:layout_height ="match_parent" android:layout_alignParentTop ="true" android:layout_alignParentLeft ="true" /> < Gallery android:id ="@+id/gallery" android:background ="#55000000" android:layout_width ="match_parent" android:layout_height ="60dp" android:layout_alignParentBottom ="true" android:layout_alignParentLeft ="true" android:gravity ="center_vertical" android:spacing ="16dp" /> </ RelativeLayout > 结束 wallace2010居然弄个这么好看的图片 - - # 吸引帝...... 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582635,如需转载请自行联系原作者

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

android中文api(79)——Gallery

正文 一、结构 public classGalleryextendsAbsSpinner implementsGestureDetector.OnGestureListener java.lang.Object android.view.View android.view.ViewGroup android.widget.AdapterView<T extends android.widget.Adapter> android.widget.AbsSpinner android.widget.Gallery 二、概述 一个锁定中心条目并且拥有水平滚动列表的视图。 Gallery(画廊)使用Theme_galleryItemBackground作为Gallery(画廊)适配器中的各视图的默认参数。如果你没有设置,你就需要调整一些Gallery(画廊)的属性,比如间距。 Gallery(画廊)中的视图应该使用Gallery.LayoutParams作为它们的布局参数类型。 参见 Gallery tutorial 。 三、内部类 class Gallery.LayoutParams Gallery(画廊)扩展了LayoutParams,以此提供可以容纳当前的转换信息和先前的位置转换信息的场所。 四、XML属性 属性名称 描述 android:animationDuration 设置布局变化时动画的转换所需的时间(毫秒级)。仅在动画开始时计时。该值必须是整数,比如:100。 android:gravity 指定在对象的X和Y轴上如何放置内容。指定一下常量中的一个或多个(使用 “|”分割) Constant Value Description top 0x30 紧靠容器顶端,不改变其大小 bottom 0x50 紧靠容器底部,不改变其大小 left 0x03 紧靠容器左侧,不改变其大小 right 0x05 紧靠容器右侧,不改变其大小 center_vertical 0x10 垂直居中,不改变其大小 fill_vertical 0x70 垂直方向上拉伸至充满容器 center_horizontal 0x01 水平居中,不改变其大小 Fill_horizontal 0x07 水平方向上拉伸使其充满容器 center 0x11 居中对齐,不改变其大小 fill 0x77 在水平和垂直方向上拉伸,使其充满容器 clip_vertical 0x80 垂直剪切(当对象边缘超出容器的时候,将上下边缘超出的部分剪切掉) clip_horizontal 0x08 水平剪切(当对象边缘超出容器的时候,将左右边缘超出的部分剪切掉) android:spacing (译者注:设置图片之间的间距) android:unselectedAlpha 设置未选中的条目的透明度(Alpha)。该值必须是float类型,比如:“1.2”。 五、公共方法 public booleandispatchKeyEvent(KeyEvent event) 在焦点路径上分发按钮事件到下一个视图。该路径从视图树的顶端遍历到当前获得焦点的视图。如果当前视图已获得焦点,就分发给自身。否则,就分发到下一个节点的焦点路径上。该方法监听任何按钮事件。 参数 event被分发的按钮事件 返回值 时间被处理返回true,否则false public voiddispatchSetSelected(boolean selected) 分发setSelected给视图的子类。 参数 selected新选中的状态 public ViewGroup.LayoutParamsgenerateLayoutParams(AttributeSet attrs) 返回一个新的已设置属性集合的布局参数。 参数 attrs用于生成布局参数的属性集合 返回值 一个ViewGroup.LayoutParams实例或者它的子类 public booleanonDown(MotionEvent e) 当轻击和按下手势事件发生时通知该方法。任何按下事件都会直接触发该方法。所有其他的事件都要先于该方法。 参数 e按下动作事件 public booleanonFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 当初始化的按下动作事件和松开动作事件匹配时通知fling(译者注:快滑,用户按下触摸屏、快速移动后松开)事件。该动作的速度通过计算X和Y轴上每秒移动多少像素得来。 参数 e1导致开始fling的按下动作事件。 e2触发当前onFling方法的移动动作事件 velocityX测量fling沿X轴上的速度,像素/每秒 velocityY测量fling沿Y轴上的速度,像素/每秒 返回值 如果该事件被消耗返回true,否则false。 public booleanonKeyDown(int keyCode, KeyEvent event) 处理左,右和点击事件 参数 keyCode代表按下按钮的按键码,来自KeyEvent。 event定义按钮动作的KeyEvent对象。 返回值 如果已经处理了按钮事件,则返回true。如果你想让下一个事件接收者处理,就返回false 参见 onKeyDown(int, KeyEvent) public booleanonKeyUp(int keyCode, KeyEvent event) KeyEvent.Callback.onKeyMultiple()方法的默认实现:当KEYCODE_DPAD_CENTER或者KEYCODE_ENTER被释放时,执行点击视图操作。 参数 keyCode代表按下按钮的按键码,来自KeyEvent。 event定义按钮动作的KeyEvent对象。 返回值 如果已经处理了按钮事件,则返回true。如果你想让下一个事件接收者处理,就返回false public voidonLongPress(MotionEvent e) MotionEvent初始化并按下触发长按并通知本方法。 参数 e导致开始长按的初始按下动作事件。 public booleanonScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) 当初始按下动作事件和当前移动动作事件导致滚动时通知本方法。为了方便提供了X和Y轴上的距离。 监听屏幕滚动事件。为了方便提供了X和Y轴上的距离。 参数 e1 导致滚动开始按下的动作事件。 e2 触发当前onScroll方法的移动动作事件。 distanceX距离是自上一次调用onScroll方法在X轴上的距离。不是e1和e2之间的距离。 distanceY距离是自上一次调用onScroll方法在Y轴上的距离。不是e1和e2之间的距离。 返回值 如果该事件被消耗返回true否则false public voidonShowPress(MotionEvent e) 用户已经执行按下动作还没有执行移动或者弹起动作。该事件常通过高亮一个元素来向用户提供一个视觉反馈即用户的操作已经被辨识了。 参数 e按下动作事件 public booleanonSingleTapUp(MotionEvent e) 在轻击动作和up动作事件触发时通知本方法。(译者注:点击屏幕上的某项的执行流程有两种情况,一种是时间很短,一种时间稍长:时间很短:onDown--->onSingleTapUp--->onSingleTapConfirmed,见这里1,这里2。) 参数 e完成开始轻击的up动作事件 返回值 如果该事件被消耗返回true否则false public booleanonTouchEvent(MotionEvent event) 实现该方法来处理触摸屏动作事件 参数 event动作事件 返回值 如果该事件被消耗返回true否则false public voidsetAnimationDuration(int animationDurationMillis) 设置当子视图改变位置时动画转换时间。仅限于动画开始时生效。 参数 animationDurationMillis动画转换时间(毫秒级) public voidsetCallbackDuringFling(boolean shouldCallback) 当flinged时是否回调每一个getOnItemSelectedListener()。如果设为false,只回调最终选中的项。如果为true,则所有的项都会回调。 参数 shouldCallback设置抛滑的过程中是否回调 public voidsetGravity(int gravity) 描述子视图的对齐方式。 public voidsetSpacing(int spacing) 设置Gallery中项的间距 参数 spacing Gallery中项的间距,以像素为单位 public voidsetUnselectedAlpha(float unselectedAlpha) 设置Gallery中未选中项的透明度(alpha)值。 参数 unselectedAlpha未选中项的透明度(alpha)值 public booleanshowContextMenu() 显示该视图上下文菜单。 返回值 上下文菜单是否显示。 public booleanshowContextMenuForChild(View originalView) 为指定的视图或者其父类显示上下文菜单。 大部分情况下,子类不需要重写该方法。但是,如果子类被直接添加到窗口管理器(例如:addView(View.android.view.ViewGroup.LayoutParams)),此时就需要重写来显示上下文菜单 参数 originalView上下文菜单初次调用的源视图 返回值 如果上下文菜单被显示了则返回true。 六、受保护方法 protected intcomputeHorizontalScrollExtent() 在水平范围内计算滚动条滑块的滚动范围。该值用来计算滚动条滑块的长度。 该范围可以使用任意的单位但是必须跟computeHorizontalScrollRange()和computeHorizontalScrollOffset()的单位保持一致。 默认范围是视图的宽度。 返回值 滚动条滑块的水平滚动范围 protected intcomputeHorizontalScrollOffset() 在水平范围内计算滚动条滑块的偏移量。该值用来计算水平滑块的位置。 该范围可以使用任意的单位但是必须跟computeHorizontalScrollRange()和computeHorizontalScrollExtent()的单位保持一致。 默认偏移量是视图的偏移量。 返回值 滚动条滑块的水平偏移量。 protected intcomputeHorizontalScrollRange() 计算滚动条水平方向上的滚动范围。 该范围可以使用任意的单位但是必须跟computeHorizontalScrollExtent()和computeHorizontalScrollOffset()的单位保持一致。 返回值 水平滚动条代表的滑动总范围。 protected voiddispatchSetPressed(boolean pressed) 分发setPressed到View的子类。 参数 pressed新按下的状态 protected ViewGroup.LayoutParamsgenerateDefaultLayoutParams() 返回默认的布局参数。当View作为参数传递给addView(View)而没有布局参数时就会请求这些参数。如果返回null,则addView会抛出异常。 返回值 默认的布局参数或null protected ViewGroup.LayoutParamsgenerateLayoutParams(ViewGroup.LayoutParams p) 返回一组合法的受支持的布局参数。当把ViewGroup传递给View而该View的布局参数并没有通过checkLayoutParams(android.view.ViewGroup.LayoutParams)的测试时,就会调用该方法。该方法应该返回一组适合该ViewGroup的新的布局参数,该过程可能需要从指定的一组布局参数中复制相关的属性。 参数 p被转换成适合该ViewGroup的一组参数。 返回值 返回一个ViewGroup.LayoutParams的实例或者一个它的子类。 protected intgetChildDrawingOrder(int childCount, int i) 返回迭代的绘制子类索引。如果你想改变子类的绘制顺序就要重写该方法。默认返回i值。 提示:为了能够调用该方法,你必须首先调用setChildrenDrawingOrderEnabled(boolean)来允许子类排序。 参数 childCount子类个数 i当前迭代顺序 返回值 绘制该迭代子类的索引 protected booleangetChildStaticTransformation(View child, Transformation t) (译者注:setStaticTransformationsEnabled这个属性设成true的时候每次viewGroup(看Gallery的源码就可以看到它是从ViewGroup间接继承过来的)在重新画它的child的时候都会促发getChildStaticTransformation这个函数。这里1、这里2) protected ContextMenu.ContextMenuInfogetContextMenuInfo() Views如果有额外的信息跟上下文菜单有联系的话就需要实现该方法。返回的结果被用作回调方法onCreateContextMenu(ContextMenu, View, ContextMenuInfo)的参数。 返回值 显示上下文菜单的条目的额外信息。这些信息将会改变View不同的子类 protected voidonFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) 当该视图的焦点状态发生改变时将会调用视图系统。当导向的方向触发焦点事件时,方向和先前获得焦点的矩形提供焦点事件的来源。当用户重写该方法,必须调用父类方法来触发标准的焦点处理事件。 参数 gainFocus如果View获得焦点为true,否则false direction 当调用requestFocus()方法来给该视图焦点时焦点的移动方向。该值:FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT或FOCUS_RIGHT。该参数不常用,通常使用它的默认值。 previouslyFocusedRect该视图坐标系统中先前获得焦点的视图的矩形。如果适用,这将获得焦点事件来源的更细致的信息(除了方向以外)。否则为null。 protected voidonLayout(boolean changed, int l, int t, int r, int b) 当视图为每一个子类分配大小和位置时从布局中调用该方法。有子类的派生类应该重写该方法在子类中调用布局。 参数 changed该视图新的大小和位置。 l相对父容器的左侧位置 t相对父容器的顶部位置 r相对父容器的右侧位置 b相对父容器的底部位置 七、补充 文章精选 Android开发——使用Gallery实现“多级联动” android图片拖动效果(Gallery) 示例代码 Java文件 public class MyGallery extends Activity{ /** Calledwhentheactivityisfirstcreated. */ private Gallerygallery; @Override public void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.main); gallery = (Gallery)findViewById(R.id.gallery); gallery.setAdapter( new ImageAdapter( this )); // 设置图片适配器 // 设置监听器 gallery.setOnItemClickListener( new OnItemClickListener(){ @Override public void onItemClick(AdapterView <?> arg0,Viewarg1, int arg2, long arg3){ Toast.makeText(MyGallery. this , " 点击了第 " + arg2 + " 张图片 " ,Toast.LENGTH_LONG).show(); } }); } } class ImageAdapter extends BaseAdapter{ private Contextcontext; // 图片源数组 private Integer[]imageInteger = { R.drawable.gallery_photo_1, R.drawable.gallery_photo_2, R.drawable.gallery_photo_3, R.drawable.gallery_photo_4, R.drawable.gallery_photo_5, R.drawable.gallery_photo_6, R.drawable.gallery_photo_7, R.drawable.gallery_photo_8 }; public ImageAdapter(Contextc){ context = c; } @Override public int getCount(){ return imageInteger.length; } @Override public ObjectgetItem( int position){ // TODOAuto-generatedmethodstub return position; } @Override public long getItemId( int position){ // TODOAuto-generatedmethodstub return position; } @Override public ViewgetView( int position,ViewconvertView,ViewGroupparent){ ImageViewimageView = new ImageView(context); imageView.setImageResource(imageInteger[position]); imageView.setScaleType(ImageView.ScaleType.FIT_XY); imageView.setLayoutParams( new Gallery.LayoutParams( 136 , 88 )); return imageView; } } XML文件 <? xmlversion="1.0"encoding="utf-8" ?> < Gallery xmlns:android ="http://schemas.android.com/apk/res/android" android:id ="@+id/gallery" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:gravity ="center_vertical" android:background ="?android:galleryItemBackground" /> 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582442,如需转载请自行联系原作者

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

android 中文 api (87) —— BaseInputConnection

正文 一、结构 public classBaseInputConnection extendsObjectimplementsInputConnection java.lang.Object android.view.inputmethod.BaseInputConnection 二、概述 InputConnection接口实现的基类,注意大多数行为提供的是Editable联接。本类的实现一定要实现getEditable()提供对它们自己的可编辑对象的访问。 三、公共方法 public booleanbeginBatchEdit() 缺省实现什么也不做。 public booleanclearMetaKeyStates(int states) 缺省实现用MetaKeyKeyListener.clearMetaKeyState(long, int)来清除状态。 参数 states要清除的状态,每个KeyEvent.getMetaState()中可能是1或个状态。 返回值 成功返回true,输入连接无效时返回false。 public booleancommitCompletion(CompletionInfo text) 缺省实现什么也不做。 参数 text提交的完成。 返回值 成功返回true,输入连接无效时返回false。 public booleancommitText(CharSequence text, int newCursorPosition) 缺省实现将用给出的文本替代正在构建的文本。另外在虚拟状态时,将发送包含新文本的按键事件并清空可编辑控件的缓存。 参数 text提交的文本。 newCursorPosition文本范围内新光标位置。如> 0,从文本未尾-1起计算;如<= 0,从文本起始处计算。所以是1时总是在刚插入文本之后。注意这意味着你不能将位置定义在文本中,因为编辑器可以修改你提交的文本,所以无必要将光标定位在文本中。 返回值 成功返回true,输入连接无效时返回false。 public booleandeleteSurroundingText(int leftLength, int rightLength) 缺省实现将删除当前光标位置附近的可编辑文本。 参数 leftLength删除文本在当前光标位置前的字符数 rightLength删除文本在当前光标位置后的字符数。 返回值 成功返回true,输入连接无效时返回false。。 public booleanendBatchEdit() 缺省实现什么也不做。 public booleanfinishComposingText() 缺省实现将用给定的文本替代正在构建的文本。另外在虚拟状态时,将发送包含新文本的按键事件并清空可编辑控件的缓存。 public static int getComposingSpanEnd (Spannable text) public static int getComposingSpanStart (Spannable text) public intgetCursorCapsMode(int reqModes) 缺省实现时,由TextUtils.getCapsMode返回当前可编辑文本的选定文本的光标大小写状态,虚拟状态时总是返回0。 参数 reqModes依据TextUtils.getCapsMode的定义取得期望的状态。通过已定义的常数,你可以轻易地传递TextBoxAttribute.contentType到当前。 返回值 返回当前有效的大小写状态。 public EditablegetEditable() 返回编辑操作的目标。缺省的实现是返回自己的虚拟可编辑控件,子类须重载一个可编辑控件并提供给它自己。 public ExtractedTextgetExtractedText(ExtractedTextRequest request, int flags) 缺省实现总是返回空。 参数 request 描述如何返回文本。 flags额外的客户端控制选项,0或GET_EXTRACTED_TEXT_MONITOR。 返回值 返回ExtractedText对象描述文本视窗的状态并包含提取文本的本身。 public CharSequencegetSelectedText(int flags) 缺省实现是返回当前选择文本,没有选取则为空。 参数 flags额外选项控制文本如何返回,可能为0或GET_TEXT_WITH_STYLES。 返回值 返回当前选择文本,没有选取则为空。 public CharSequencegetTextAfterCursor(int length, int flags) 缺省的实现是返回缓存中当前光标位置后给定数量的文本。 参数 length期望的文本长度。 flags如何返回文本的额外控制。可能为0或GET_TEXT_WITH_STYLES。 返回值 返回光标位置后的文本,返回文本的长度可能小于n。 public CharSequencegetTextBeforeCursor(int length, int flags) 缺省的实现是返回缓存中当前光标位置前给定数量的文本。 参数 length期望的文本长度。 flags如何返回文本的额外控制。可能为0或GET_TEXT_WITH_STYLES。 返回值 返回光标位置前的文本,返回文本的长度可能小于n。 public booleanperformContextMenuAction(int id) 缺省实现是什么也不做。 public booleanperformEditorAction(int actionCode) 缺省实现将其发送至返回键(enter key)。 参数 actionCode必须是EditorInfo.editorType中一常量之一,如EditorInfo.EDITOR_ACTION_GO。 返回值 成功返回true,输入连接无效时返回false。 public booleanperformPrivateCommand(String action, Bundle data) 缺省实现是什么也不做。 参数 action执行的命令名称。必须是作用域的名称(译者注:带包名,如”com.test.Command”),如以你自己的包名称前缀,这样不同的开发者就不会创建产生冲突的命令。 data命令中的数据。 返回值 命令发送返回true(无论相关的编辑器是否理解它),如输入连接无效返回false。 public static final void removeComposingSpans (Spannable text) public booleanreportFullscreenMode(boolean enabled) 以当前的全屏模式更新InputMethodManager。 public booleansendKeyEvent(KeyEvent event) 提供窗口附属输入连接视窗的发送按键事件的标准实现。 参数 event按键事件。 返回值 成功返回true,输入连接无效时返回false。 public booleansetComposingRegion(int start, int end) 将特定区域标记为正在构建文本。任何以前设置的正在构建文本自动清除。正在构建文本应用缺省样式。 参数 start文本中正在构建区域开始位置。 end文本中正在构建区域结束位置。 返回值 成功返回true,输入连接无效时返回false。 public static void setComposingSpans (Spannable text) public booleansetComposingText(CharSequence text, int newCursorPosition). 缺省实现是将给定文本置入可编辑文本,替代任何正在构建文本。新文本标记为正在构建文本并应用构建样式。 参数 text正在构建文本,如必要应用样式。如文本无附属样式,将正在构建文本应用缺省样式。参见how to attach style object to the text。{#link android.text.SpannableString}和{#link android.text.SpannableStringBuilder}是实现的接口。 newCursorPosition文本范围内新光标位置。如> 0,从文本未尾-1起计算;如<= 0,从文本起始处计算。所以是1时总是在刚插入文本之后。注意这意味着你不能将位置定义在文本中,因为编辑器可以修改你提交的文本,所以无必要将光标定位在文本中。 返回值 成功返回true,输入连接无效时返回false。 public booleansetSelection(int start, int end) 缺省实现是在当前可编辑文本中改变选取的位置。 返回值 成功返回true,输入连接无效时返回false。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582421,如需转载请自行联系原作者

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

Android API 中文 (42) —— ListView

正文 一、结构 public classRatingBar extendsAbsSeekBar java.lang.Object android.view.View android.view.ViewGroup android.widget.AdapterView<T extends android.widget.Adapter> android.widget.AbsListView android.widget.ListView 直接子类 ExpandableListView(使用竖滚动条查看的两级列表视图) 二、概述 通过竖滚动条查看的列表视图。ListAdapter里包含的内容和此视图相关联。参见List View tutorial。 三、内部类 class ListView.FixedViewInfo 表示一个列表中的固定视图,如放在最顶部的页眉和最底部的页脚 四、XML属性 属性名称 描述 android:choiceMode 规定此ListView所使用的选择模式。缺省状态下,list没有选择模式。 属性值必须设置为下列常量之一:none,值为0,表示无选择模式; singleChoice,值为1,表示最多可以有一项被选中; multipleChoice,值为2,表示可以多项被选中。 可参看全局属性资源符号choiceMode。 android:divider 规定List项目之间用某个图形或颜色来分隔。可以用"@[+][package:]type:name"或者"?[package:][type:]name"(主题属性)的形式来指向某个已有资源;也可以用"#rgb","#argb","#rrggbb"或者"#aarrggbb"的格式来表示某个颜色。 可参看全局属性资源符号divider。 android:dividerHeight 分隔符的高度。若没有指明高度,则用此分隔符固有的高度。必须为带单位的浮点数,如"14.5sp"。可用的单位如px(pixel像素),dp(density-independent pixels与密集度无关的像素),sp(scaled pixels based on preferred font size基于字体大小的固定比例的像素),in (inches英寸), mm (millimeters毫米)。 可以用"@[package:]type:name "或者"?[package:][type:]name"(主题属性)的格式来指向某个包含此类型值的资源。 可参看全局属性资源符号dividerHeight。 android:entries 引用一个将使用在此ListView里的数组。若数组是固定的,使用此属性将比在程序中写入更为简单。 必须以"@[+][package:]type:name"或者"?[package:][type:]name"的形式来指向某个资源。 可参看全局属性资源符号entries。 android:footerDividersEnabled 设成flase时,此ListView将不会在页脚视图前画分隔符。此属性缺省值为true。 属性值必须设置为true或false。 可以用"@[package:]type:name "或者"?[package:][type:]name"(主题属性)的格式来指向某个包含此类型值的资源。 可参看全局属性资源符号footerDividersEnabled。 android:headerDividersEnabled 设成flase时,此ListView将不会在页眉视图后画分隔符。此属性缺省值为true。 属性值必须设置为true或false。 可以用"@[package:]type:name "或者"?[package:][type:]name"(主题属性)的格式来指向某个包含此类型值的资源。 可参看全局属性资源符号headerDividersEnabled。 五、常量 Int CHOICE_MODE_MULTIPLE (常量值为2)列表允许同时选取多项 Int CHOICE_MODE_NONE (常量值为0)普通列表,不指明选取模式 Int CHOICE_MODE_SINGLE (常量值为1)列表只允许选取最多一项 六、公共方法 public void addFooterView (View v) 加一个固定显示于list底部的视图。如果此方法被调用超过一次,所加的几个视图将按照它们加入的顺序排列。加入的视图可取得焦点。 注意:在调用setAdapter之前调用此方法。这样的话,可以利用点击光标来收起有header view和footer view的ListView。 参数 v 要加的视图 public void addFooterView (View v, Object data, boolean isSelectable) 加一个固定显示于list底部的视图。如果此方法被调用超过一次,所加的几个视图将按照它们加入的顺序排列。加入的视图可取得焦点。 注意:在调用setAdapter之前调用此方法。这样的话,可以利用点击光标来收起有header view和footer view的ListView。 参数 v 要加的视图 data和此视图关联的数据 isSelectable设为true则表示footer view可以被选中 public void addHeaderView (View v) 加一个固定显示于list顶部的视图。如果此方法被调用超过一次,所加的几个视图将按照它们加入的顺序排列。加入的视图可取得焦点。 注意:在调用setAdapter之前调用此方法。这样的话,可以利用点击光标来收起有header view和footer view的ListView。 参数 v 要加的视图 public void addHeaderView (View v, Object data, boolean isSelectable) 加一个固定显示于list顶部的视图。如果此方法被调用超过一次,所加的几个视图将按照它们加入的顺序排列。加入的视图可取得焦点。 注意:在调用setAdapter之前调用此方法。这样的话,可以利用点击光标来收起有header view和footer view的ListView。 参数 v 要加的视图 data和此视图关联的数据 isSelectable表示此header view可选与否 public void clearChoices () 取消之前设置的任何选择 public boolean dispatchKeyEvent (KeyEvent event) 按照可以获得焦点的顺序(从视图树的顶端到当前获得焦点的视图),分派一个按键事件给下一个视图。若此视图有焦点,事件将会分派给它自己。否则它将按照顺序,分派给下一个节点。此方法同时触动所有按键监听器。 参数 event被分派的事件 返回 若事件被处理,则返回true;否则为false public boolean dispatchPopulateAccessibilityEvent (AccessibilityEvent event) 在视图的子项目被构建时,分派一个辅助事件。 参数 event事件 返回 若事件全部完成,则返回true public ListAdapter getAdapter () 返回ListView当前用的适配器。返回的适配器不可以和传给setAdapter(ListAdapter)的参数一样,但是可以是WrapperListAdapter。 返回 当前用来显示ListView中数据的适配器 参见 setAdapter(ListAdapter) public long[] getCheckItemIds () 此方法已经过时了。使用getCheckedItemIds()代替。 返回被选中项目的索引集合。只有当选择模式没有被设置为CHOICE_MODE_NONE时才有效。 public long[] getCheckedItemIds () 返回被选中项目的索引集合。只有当选择模式没有被设置为CHOICE_MODE_NONE,并且适配器有稳定的ID(hasStableIds()==true)时,结果才有效。 返回 一个新的数组,包含列表中每个被选中的索引(id) public int getCheckedItemPosition () 返回当前被选中的项目。只有当选择模式已被设置为CHOICE_MODE_SINGLE时,结果才有效。 返回 返回当前被选中的项目的索引;若没有项目被选中,则返回INVALID_POSITION 参见 setChoiceMode(int) public SparseBooleanArray getCheckedItemPositions () 返回当前被选中的项目集合。只有当选择模式没有被设置为CHOICE_MODE_NONE时,结果才有效。 返回 类型为SparseBooleanArray的值,其中,对每一个索引所代表的项目,若被选中,则返回true;当选择模式被设置为CHOICE_MODE_NONE时,返回null。 public int getChoiceMode () 返回 返回当前的选择模式 参见 setChoiceMode(int) public Drawable getDivider () 返回 返回当前画在列表元素之间,作为分隔符的图形 public int getDividerHeight () 返回 返回分隔符的高度 public int getFooterViewsCount () 返回 列表中的页脚视图数量;缺省实现时,数量为0 public int getHeaderViewsCount () 返回 列表中的页眉视图数量;缺省实现时,数量为0 public boolean getItemsCanFocus () 返回 ListAdapter所生成的视图是否可以包含能取得焦点的项目 public int getMaxScrollAmount () 返回 The maximum amount a list view will scroll in response to an arrow event. 响应箭头事件时,列表视图可以滚动的最大值。(译者注:此处翻译待改进,恐怕需要仔细查看源代码才能明白其含义,也可以用Google Code搜索相关的代码) public boolean isItemChecked (int position) 对于由position指定的项目,返回其是否被选中。只有当选择模式已被设置为CHOICE_MODE_SINGLE或CHOICE_MODE_MULTIPLE时,结果才有效。 参数 position要返回选中状态的项目 返回 返回项目的选中状态;若选择模式无效,则返回false public boolean onKeyDown (int keyCode, KeyEvent event) KeyEvent.Callback.onKeyMultiple()的缺省实现:若视图被激活并且可以被点击,当出现KEYCODE_DPAD_CENTER和KEYCODE_ENTER代表的行为时,做点击该视图的动作。 参数 keyCode表示按某个按键的按键代号,参见KeyEvent event定义按键动作的按键事件对象 返回 若事件被成功处理,则返回true;若想要下一个接收器处理该事件,则返回false public boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event) KeyEvent.Callback.onKeyMultiple()的缺省实现:总是返回false(不处理该事件)。 参数 keyCode表示按某个按键的按键代号,参见KeyEvent repeatedCount实现动作的次数 event定义按键动作的按键事件对象 返回 若事件被成功处理,则返回true;若想要下一个接收器处理该事件,则返回false public boolean onKeyUp (int keyCode, KeyEvent event) KeyEvent.Callback.onKeyMultiple()的缺省实现:当出现KEYCODE_DPAD_CENTER和KEYCODE_ENTER代表的行为时,做点击该视图的动作。 参数 keyCode表示按某个按键的按键代号,参见KeyEvent event定义按键动作的按键事件对象 返回 若事件被成功处理,则返回true;若想要下一个接收器处理该事件,则返回false public void onRestoreInstanceState (Parcelable state) 重新创建并显示一个视图,此视图拥有之前onSaveInstanceState()保存的内部状态。当state为null时,此方法不会被调用。 参数 state之前onSaveInstanceState()保存的状态 public Parcelable onSaveInstanceState () 保存视图的内部状态,用于以后创建新的拥有同样状态的实例。可保存的状态只包含非持久性的,或者可重新组建的信息。比如,永远不可能保存你当前在屏幕上的位置,因为当新的实例被放置于视图层次体系中时,位置会被重新计算。 一些可以被保存的状态:文本视图(但是通常不是指文本本身,因为文本是被保存在内容提供商或其他持久性的储存体中)中当前的光标位置;列表视图中当前的选中项。 返回 返回一个包含视图当前动态状态的接口方法对象;若没有东西被保存,则返回null。缺省情况下返回null。 public boolean onTouchEvent (MotionEvent ev) 此方法用于处理触摸屏的动作事件。 参数 ev动作事件 返回 若事件被成功处理,则返回true;否则返回false public boolean performItemClick (View view, int position, long id) 调用定义好的OnItemClickListener。 参数 view AdapterView中被点击到的视图 position视图在适配器中的索引 id被点击到的项目的行id 返回 若有定义好的OnItemClickListener被成功调用,则返回true;否则返回false public boolean removeFooterView (View v) 删除之前加入的某个页脚视图。 参数 v要删除的视图 返回 若视图被成功删除,则返回true;若此视图不是页脚视图,则返回false public boolean removeHeaderView (View v) 删除之前加入的某个页眉视图。 参数 v要删除的视图 返回 若视图被成功删除,则返回true;若此视图不是页眉视图,则返回false public boolean requestChildRectangleOnScreen (View child, Rect rect, boolean immediate) 当组里的某个子项需要被定位在屏幕的某个矩形范围时,调用此方法。 重载此方法的ViewGroup可确认以下几点: ·子项目将是组里的直系子项 ·矩形将在子项目的坐标体系中 重载此方法的ViewGroup必须保证以下几点: ·若矩形已经是可见的,则没有东西会改变 ·为使矩形区域全部可见,视图将可以被滚动显示 参数 child发出请求的子项目 rect子项目坐标系内的矩形,即此子项目希望在屏幕上的定位 immediate设为true,则禁止动画和缓释移动滚动条 返回 这个可滚动显示的组,是否接受请求 public void setAdapter (ListAdapter adapter) 设置ListView背后的数据。根据ListView目前使用的特性,adapter可能被WrapperListAdapter收起。例如:加页眉和/或页脚会使adapter被收起。 参数 adapter负责维护列表背后的数据,以及生成视图来显示数据里的项目 参见 getAdapter() public void setCacheColorHint (int color) 当color的值不为0时,此值表示的颜色将提示使用者,列表正在一片单色不透明的背景上被画出。 参数 color 背景色 public void setChoiceMode (int choiceMode) 设置List的选择模式。缺省情况下,列表没有选择模式(即值为CHOICE_MODE_NONE)。 参数 choiceMode值可为CHOICE_MODE_NONE,CHOICE_MODE_NONE和CHOICE_MODE_NONE中的一种 public void setDivider (Drawable divider) 设置将画在列表中每个项目之间的图形。如果图形没有已设定好的高度,则必须同时调用setDividerHeight(int)。 参数 divider将用作分隔符的图形 public void setDividerHeight (int height) 设置分隔符(画在列表中每个项目之间)的高度。调用此方法将覆盖由setDivider(Drawable)设置的高度。 参数 height分隔符的新高度,单位为像素 public void setFooterDividersEnabled (boolean footerDividersEnabled) 设置可以或者不可以为页脚视图画上分隔符。 参数 headerDividersEnabled设为true,表明可以画;设为false则不可以 参见 setHeaderDividerEnabled(boolean) addFooterView(android.view.View) public void setHeaderDividersEnabled (boolean headerDividersEnabled) 设置可以或者不可以为页眉视图画上分隔符。 参数 headerDividersEnabled设为true,表明可以画;设为false则不可以 参见 setFooterDividerEnabled(boolean) addHeaderView(android.view.View) public void setItemChecked (int position, boolean value) 设置position所指定项目的选择状态。只有选择模式为CHOICE_MODE_SINGLE或者CHOICE_MODE_MULTIPLE时,此设置才有效。 参数 position需要改变选择状态的项目的索引 value新的选择状态 public void setItemsCanFocus (boolean itemsCanFocus) 表明在由ListAdapter创建的视图中,可包含能获得焦点的项目。 参数 itemsCanFocus若项目能获得焦点,则设为true;否则为false public void setSelection (int position) 选中position指定的项目。若为触摸模式,则指定项目不会被选中,但位置变化一样。若position的值小于0,则position为0的项目将被选中。 参数 position需要选中的项目的索引(从0开始) public void setSelectionAfterHeaderView () 选中页眉视图下的第一个列表项目。 public void setSelectionFromTop (int position, int y) 选中position指定的项目,并将所选项置于距离ListView顶端y像素的位置(若为触摸模式,则指定项目不会被选中,但位置变化一样)。 参数 position需要选中的项目的索引(从0开始) y 距离ListView(包括间隙)顶端的位置 七、受保护方法 protected boolean canAnimate () 表示此视图组是否可以在第一次被布局后,仍可以动态调整其子项。 返回 若可以则为true,否则为false protected void dispatchDraw (Canvas canvas) 调用此方法来绘出子视图。可被衍生类重写,以便在其子项被画出之前取得控制权。 参数 canvas 绘出View所用的canvas(画布?) protected View findViewTraversal (int id) 参数 id要找的View的id 返回值 有此id的View,若没有找到则为null protected View findViewWithTagTraversal (Object tag) 参数 tag 要找的View的标签 返回值 有此标签的View,若没有找到则为null protected void layoutChildren () 子类必须重写此方法来布局其子项。 protected void onFinishInflate () 当View以及所有子项从XML中导入时被调用,是导入的最后一步。即使子类重写onFinishInflate,也必须保证有调用超方法,这样,方法才会被调用。 protected void onFocusChanged (boolean gainFocus, int direction, Rect previouslyFocusedRect) 当View的焦点改变时被调用。重写时,要确保超类的直接调用,这样取得焦点的方式才是标准的。 参数 gainFocus 若View有焦点,则为True;否则为False。 direction当requestFocus()被调用时,方向焦点被移动。其值可为FOCUS_UP,FOCUS_DOWN,FOCUS_LEFT或FOCUS_RIGHT。在使用缺省条件的情况下,direction并不总是可用。 previouslyFocusedRect之前得到焦点的View的坐标系统所构成的矩形。如果可用,这个将被当成精确信息(表明焦点从何而来以及从何方向而来)来传递;否则将传递null。 protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) View调用此方法来确定本身和所包含内容的大小。此方法被measure(int,int)唤起,而且必须被子类重写以得到所包含内容的确切大小。 注意:当重写此方法时,必须调用setMeasureDimension(int,int)来保存View的大小。如果没有做到,将会引发一个measure(int,int)抛出的IllegalStateException(非法状态错误)。超类onMeasure(int,int)可以被调用。 编写基类的确认大小的方法,缺省情况下是根据其背景大小来确认,除非MeasureSepc允许有更大的高度或宽度。子类必须重写onMeasure(int,int)以得到对其内容大小的更准确的测量。 若此方法被重写,它的子类需要确保其高度和宽度至少达到View所规定的最小值(可通过getSuggestedMinimumHeight()和getSuggestedMinimumWidth()得到)。 参数 widthMeaureSpec 受上一层大小影响下的对水平空间的要求。可参看View.MeasureSpec。 heightMeasureSpec受上一层大小影响下的对垂直空间的要求。可参看View.MeasureSpec。 protected void onSizeChanged (int w, int h, int oldw, int oldh) 当VIew的大小改变时此方法被调用。如果VIew是刚刚被加入,则视之前的值为0。 参数 w View的当前宽度 h View的当前高度 oldw View大小改变之前的宽度 oldh View大小改变之前的高度 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582608,如需转载请自行联系原作者

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

Android API 中文 (15) —— GridView

正文 一、结构 public final classGridViewextendsAbsListView java.lang.Object android.view.View android.view.ViewGroup android.widget.AdapterView<T extends android.widget.Adapter> android.widget.AbsListView android.widget.GridView 二、类概述 一个在平面上可显示多个条目的可滚动的视图组件,该组件中的条目通过一个ListAdapter和该组件进行关联。比如android手机中显示的应用: 比如实现九宫格图,用GridView是首选,也是最简单的。 三、构造函数 public GridView (Context context) 创建一个默认属性的GridView实例 public GridView (Context context, AttributeSet attrs) 创建一个带有attrs属性的GridView实例 public GridView (Context context, AttributeSet attrs, int defStyle) 创建一个带有attrs属性,并且指定其默认样式的GridView实例 四、XML属性 属性名称 描述 android:columnWidth 设置列的宽度。关联的方法为:setColumnWidth(int) android:gravity 设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多选,用“|”分开。关联方法:setGravity (int gravity) android:horizontalSpacing 两列之间的间距。关联方法:setHorizontalSpacing(int) android:numColumns 列数。关联方法:setNumColumns(int) android:stretchMode 缩放模式。关联方法:setStretchMode(int) android:verticalSpacing 两行之间的间距。关联方法:setVerticalSpacing(int) 五、公共方法 public ListAdapter getAdapter () 获得与此组件相关的适配器.. 返回值 ListAdapter适配器实例 public int getStretchMode () 获得GridView的缩放模式.. public boolean onKeyDown (int keyCode, KeyEvent event) 默认由KeyEvent.Callback.onKeyMultiple()实现,如果视图是可用的并且是可点击的,那么传入KEYCODE_DPAD_CENTER或KEYCODE_ENTER值是执行的是按下视图操作。 参数 keyCode一个表示按下操作的键值. event表示按钮事件的对象. 返回值 如果你认为已经完成事件处理,不想让让下一个处理器来处理此事件,则返回true,否则返回false。 public boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event) 默认由KeyEvent.Callback.onKeyMultiple()实现,总是返回false(不处理此事件)。 参数 keyCode键值. repeatCount该动作发生的次数. event事件对象. 返回值 如果你认为已经完成事件处理,不想让让下一个处理器来处理此事件,则返回true,否则返回false。 public boolean onKeyUp (int keyCode, KeyEvent event) 默认由KeyEvent.Callback.onKeyMultiple()实现,如果视图是可用的并且是可点击的,那么传入KEYCODE_DPAD_CENTER或KEYCODE_ENTER值是执行的是点击视图操作。 参数 keyCode键值. event事件对象. 返回值 如果你认为已经完成事件处理,不想让让下一个处理器来处理此事件,则返回true,否则返回false。 public void setAdapter (ListAdapter adapter) 设置GridView的数据。 参数 adapter为grid提供数据的适配器 public void setColumnWidth (int columnWidth) 设置GridView的列宽. 参数 columnWidth列的宽度,以像素为单位 public void setGravity (int gravity) 设置控件内容的位置,默认值为:Gravity.LEFT. 参数 gravity位置值 public void setHorizontalSpacing (int horizontalSpacing) 设置列间距. 参数 horizontalSpacing列间距值 public void setNumColumns (int numColumns) 设置grid的列数 参数 numColumns列数值. public void setSelection (int position) 设置选中的条目. 参数 position.数据条目在列表中的索引值(从0开始),如果在可触摸的模式下,在该索引值下的条目将不会被选中,但是该索引值仍然指向该条目。 public void setStretchMode (int stretchMode) 设置grid中的条目以什么缩放模式去填充空间。. 参数 stretchMode可选值:NO_STRETCH,STRETCH_SPACING,STRETCH_SPACING_UNIFORM,或STRETCH_COLUMN_WIDTH public void setVerticalSpacing (int verticalSpacing) 设置行间距. 参数 verticalSpacing间距值,以像素为单位 六、代码示例 下面给出一个小例子,先看效果: a). GridView01.java public class GridView01 extends Activity{ private GridViewgridview; @Override protected void onCreate(BundlesavedInstanceState){ // TODOAuto-generatedmethodstub super .onCreate(savedInstanceState); setContentView(R.layout.gridview); // 准备要添加的数据条目 List < Map < String,Object >> items = new ArrayList < Map < String,Object >> (); for ( int i = 0 ;i < 10 ;i ++ ){ Map < String,Object > item = new HashMap < String,Object > (); item.put( " imageItem " ,R.drawable.icon); item.put( " textItem " , " text " + i); items.add(item); } // 实例化一个适配器 SimpleAdapteradapter = new SimpleAdapter( this ,items,R.layout.grid_item, new String[]{ " imageItem " , " textItem " }, new int []{R.id.image_item,R.id.text_item}); // 获得GridView实例 gridview = (GridView)findViewById(R.id.mygridview); // gridview.setNumColumns(3); // 可以在xml中设置 // gridview.setGravity(Gravity.CENTER); // 同上 // 将GridView和数据适配器关联 gridview.setAdapter(adapter); } } b). gridview.xml <? xmlversion="1.0"encoding="utf-8" ?> < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:layout_width ="wrap_content" android:layout_height ="wrap_content" > < GridView android:id ="@+id/mygridview" android:numColumns ="3" android:gravity ="center_horizontal" android:layout_width ="wrap_content" android:layout_height ="wrap_content" > </ GridView > </ LinearLayout > c). grid_item.xml <? xmlversion="1.0"encoding="utf-8" ?> < RelativeLayout android:id ="@+id/RelativeLayout01" android:layout_width ="fill_parent" android:layout_height ="fill_parent" xmlns:android ="http://schemas.android.com/apk/res/android" > < ImageView android:id ="@+id/image_item" android:layout_width ="wrap_content" android:layout_height ="wrap_content" > </ ImageView > < TextView android:id ="@+id/text_item" android:layout_below ="@+id/image_item" android:layout_height ="wrap_content" android:layout_width ="wrap_content" > </ TextView > </ RelativeLayout > 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582689,如需转载请自行联系原作者

资源下载

更多资源
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等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册