首页 文章 精选 留言 我的

精选列表

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

Android中文API(118)——FilterQueryProvider

正文 一、结构 public interfaceFilterQueryProvider android.widget.FilterQueryProvider 二、概述 这个类可以被CursorAdapter和CursorTreeAdapter用来定义如何过滤适配器的内容。 参见 runQuery(CharSequence) 三、公共方法 public abstract CursorrunQuery(CharSequence constraint) 执行指定约束条件的过滤查询。这个查询要求通过过滤器将结果附加到适配器。约定:当约束条件为null或者空时,都必须返回过滤前的原始结果。(译者注:可以在这个方法里根据条件使用Like等语句执行SQL查询) 参数 constraint必须被过滤的查询约束条件 返回值 代表新查询结果的 Cursor (游标) 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582348,如需转载请自行联系原作者

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

Android API 中文 (112) —— ThumbnailUtils

正文 一、结构 public classThumbnailUtils extendsObject java.lang.Object android.media.ThumbnailUtils 二、概述 为媒体生成常规缩略图。( Android123 :该类为 Android2.2 新增类,可以帮助我们从 mediaprovider 中获取系统中的视频或图片文件的缩略图) 三、常量 public static final intOPTIONS_RECYCLE_INPUT 常量用于表示应该回收extractThumbnail(Bitmap, int, int, int)输入源图片(第一个参数),除非输出图片就是输入图片。 常量值:2 (0x00000002) 四、公共方法 public static BitmapcreateVideoThumbnail(String filePath, int kind) 创建一张视频的缩略图。如果视频已损坏或者格式不支持可能返回null。 参数 filePath 视频文件路径 kind可以为MINI_KIND或MICRO_KIND public static BitmapextractThumbnail(Bitmap source, int width, int height, int options) 创建所需尺寸居中缩放的位图。 参数 source原始位图源 width目标宽 height目标高 options 在缩略图抽取时提供的选项 public static BitmapextractThumbnail(Bitmap source, int width, int height) 创建所需尺寸居中缩放的位图。 参数 source原始位图源 width目标宽 height目标高 五、补充 文章链接 ThumbnailUtils - Android2.2新增类(Android123) [推荐]Android缩略图类源代码(Android123) 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582370,如需转载请自行联系原作者

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

Android 中文 API (36) —— Toast

正文 一、结构 public classToastextendsObject java.lang.Object android.widget.Toast 二、概述 Toast是一种提供给用户简洁信息的视图。Toast类帮助你创建和显示该信息。 该视图已浮于应用程序之上的形式呈现给用户。因为它并不获得焦点,即使用户正在输入什么也不会受到影响。它的目标是尽可能已不显眼的方式,使用户看到你提供的信息。有两个例子就是音量控制和设置信息保存成功。 使用该类最简单的方法就是调用一个静态方法,让他来构造你需要的一切并返回一个新的Toast对象。 三、常量 int LENGTH_LONG 持续显示视图或文本提示较长时间。该时间长度可定制。 参见 setDuration(int) int LENGTH_SHORT 持续显示视图或文本提示较短时间。该时间长度可定制。该值为默认值。 参见 setDuration(int) 四、构造函数 public Toast (Context context) 构造一个空的Toast对象。在调用show()之前,必须先调用setView(View)。 (译者注:只有使用setView(View)的时候,才使用new Toast(Content content)来得到Toast对象,否则必须用makeText()方法来创建toast对象,并且这种方式获得Toast对象不能使用setText()方法。) 参数 context使用的上下文。通常是你的Application或Activity对象。 五、公共方法 public intcancel() 如果视图已经显示则将其关闭,还没有显示则不再显示。一般不需要调用该方法。正常情况下,视图会在超过存续期间后消失。 public intgetDuration() 返回存续期间 请参阅 setDuration(int) public intgetGravity() 取得提示信息在屏幕上显示的位置。 请参阅 Gravity setGravity() public floatgetHorizontalMargin() 返回横向栏外空白。 public floatgetVerticalMargin() 返回纵向栏外空白。 publicViewgetView() 返回View对象。 请参阅 setView(View) public intgetXOffset() 返回相对于参照位置的横向偏移像素量。 public intgetYOffset() 返回相对于参照位置的纵向偏移像素量。 public staticToastmakeText(Contextcontext, int resId, int duration) 生成一个从资源中取得的包含文本视图的标准Toast对象。 参数 context 使用的上下文。通常是你的Application或Activity对象。 resId 要使用的字符串资源ID,可以是已格式化文本。 duration 该信息的存续期间。值为LENGTH_SHORT或LENGTH_LON 异常 当资源未找到时抛异常Resources.NotFoundException public staticToastmakeText(Contextcontext,CharSequencetext, int duration) 生成一个包含文本视图的标准Toast对象。 参数 context 使用的上下文。通常是你的Application或Activity对象。 resId 要显示的文本,可以是已格式化文本。 duration 该信息的存续期间。值为LENGTH_SHORT或LENGTH_LONG public voidsetDuration(int duration) 设置存续期间。 请参阅 LENGTH_SHORT LENGTH_LONG public voidsetGravity(int gravity, int xOffset, int yOffset) 设置提示信息在屏幕上的显示位置。 (译者注:自定义Toast的显示位置,例如toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0)可以把Toast定位在左上角。Toast提示的位置xOffset:大于0向右移,小于0向左移) 请参阅 Gravity getGravity() public voidsetMargin(float horizontalMargin, float verticalMargin) 设置视图的栏外空白。 参数 horizontalMargin容器的边缘与提示信息的横向空白(与容器宽度的比)。 verticalMargin容器的边缘与提示信息的纵向空白(与容器高度的比)。 public voidsetText(int resId) 更新之前通过makeText()方法生成的Toast对象的文本内容。 参数 resId为Toast指定的新的字符串资源ID。 public voidsetText(CharSequences) 更新之前通过makeText()方法生成的Toast对象的文本内容。 参数 s为Toast指定的新的文本。 public voidsetView(Viewview) 设置要显示的View。 (译者注:注意这个方法可以显示自定义的toast视图,可以包含图像,文字等等。是比较常用的方法。) 请参阅 getView() public voidshow() 按照指定的存续期间显示提示信息。 六、补充 文章链接 让Toast一直显示的解决方法 通知Toast详细用法(显示view) Android一种信息提示机制:Toast [推荐]android Toast大全(五种情形)建立属于你自己的Toast 示例代码 示例一:使用图片的Toast Toasttoast = new Toast( this ); ImageViewview = new ImageView( this ); view.setImageResource(R.drawable.icon); toast.setView(view); toast.show(); 示例二:带文字带图片Toast private void showToast(){ // 1创建Toast Toasttoast = Toast.makeText( this , " 图文显示 " ,Toast.LENGTH_LONG); // 2创建Layout,并设置为水平布局 LinearLayoutmLayout = new LinearLayout( this ); mLayout.setOrientation(LinearLayout.HORIZONTAL); ImageViewmImage = new ImageView( this ); // 用于显示图像的ImageView mImage.setImageResource(R.drawable.icon); ViewtoastView = toast.getView(); // 获取显示文字的ToastView mLayout.addView(mImage); // 添加到Layout mLayout.addView(toastView); // 3关键,设置Toast显示的View(上面生成的Layout). toast.setView(mLayout); toast.show(); } 示例三:综合Toast例子 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" > < Button android:id ="@+id/button1" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="Toast显示View" /> < Button android:id ="@+id/button2" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="Toast直接输出" /> < Button android:id ="@+id/button3" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="VolumeToast应用" /> </ LinearLayout > Toast.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" > < ImageView android:src ="@drawable/toast" android:layout_width ="wrap_content" android:layout_height ="wrap_content" /> < TextView android:id ="@+id/tv1" android:text ="" android:layout_width ="wrap_content" android:layout_height ="wrap_content" /> </ LinearLayout > Volumetoast.xml <? xmlversion="1.0"encoding="utf-8" ?> < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:layout_width ="280dp" android:layout_height ="wrap_content" android:gravity ="center_horizontal" android:orientation ="vertical" > < TextView android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="Volume" /> < ProgressBar android:id ="@+id/progress" android:layout_width ="280dp" android:layout_height ="wrap_content" android:progress ="50" android:max ="100" style ="?android:attr/progressBarStyleHorizontal" /> </ LinearLayout > java文件 public class toasttest extends Activity{ /** Calledwhentheactivityisfirstcreated. */ @Override public void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.main); Buttonbutton1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(bt1lis); Buttonbutton2 = (Button)findViewById(R.id.button2); button2.setOnClickListener(bt2lis); Buttonbutton3 = (Button)findViewById(R.id.button3); button3.setOnClickListener(bt3lis); } OnClickListenerbt1lis = new OnClickListener(){ @Override public void onClick(Viewv){ showToast(); } }; OnClickListenerbt2lis = new OnClickListener(){ @Override public void onClick(Viewv){ Toast.makeText(toasttest. this , " 直接输出测试 " ,Toast.LENGTH_LONG).show(); } }; OnClickListenerbt3lis = new OnClickListener(){ @Override public void onClick(Viewv){ showvolumeToast(); } }; public void showToast(){ LayoutInflaterli = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); Viewview = li.inflate(R.layout.toast, null ); // 把布局文件toast.xml转换成一个view Toasttoast = new Toast( this ); toast.setView(view); // 载入view,即显示toast.xml的内容 TextViewtv = (TextView)view.findViewById(R.id.tv1); tv.setText( " Toast显示View内容 " ); // 修改TextView里的内容 toast.setDuration(Toast.LENGTH_SHORT); // 设置显示时间,长时间Toast.LENGTH_LONG,短时间为Toast.LENGTH_SHORT,不可以自己编辑 toast.show(); } public void showvolumeToast(){ // TODOAuto-generatedmethodstub LayoutInflaterli = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); ViewvolumeView = li.inflate(R.layout.volumetoast, null ); ((ProgressBar)volumeView.findViewById(R.id.progress)).setProgress(((ProgressBar)volumeView.findViewById(R.id.progress)).getProgress() + 10 ); // 这里还有点问题,就是progress的进度条不动,因为我们主要是想给大家展示 // Toast的用法,这里就不深究了 ToastvolumeToast = new Toast( this ); volumeToast.setGravity(Gravity.BOTTOM, 0 , 100 ); volumeToast.setView(volumeView); volumeToast.setDuration(Toast.LENGTH_SHORT); volumeToast.show(); } } 备注 我们的代码没有重复概述中的通过代码布局toast实现方法,我们是通过布局文件转换成view视图来实现复杂toast,这是两种常用的方法,大家可以根据具体情况进行选择。 下载 /Files/over140/2010/11/demo_Toast.rar 七、不足之处 现象:当点击一个按钮 可以显示一个四秒的toast,但是我要是连点两下就是8秒 三下十二秒 解决办法:只用一个Toast, 自己设置toast.setText(), setDuration(); 之后无论多少次.show()都能马上更新显示, 一会就消失了 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582633,如需转载请自行联系原作者

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

android 中文 api (43) —— Chronometer

正文 一、结构 public classChronometerextendsTextView java.lang.Object android.view.View android.widget.TextView android.widget.Chronometer 二、概述 类实现了一个简单的计时器。 你可以通过elapsedRealtime()来给它一个基准时间,并从该时间开始计数。如果你不给它基准时间,它将使用你调用start()时的时间。默认它将显示当前"MM:SS"或"H:MM:SS"格式的时间,或者你能通过setFormat(String)设置一个任意字符串来格式化显示计时器显示的时间。 三、XML属性 属性名称 描述 android:format 格式化字符串:如果指定,计时器将根据这个字符串来显示,替换字符串中第一个“%s”为当前"MM:SS"或"H:MM:SS"格式的时间显示。如果不指定,计时器将简单的显示"MM:SS" or "H:MM:SS"格式的时间。(译者注:如:“This is a Chronometer %s”) 四、构造函数 public Chronometer (Context context) 初始化计时器对象。设置当前时间为基准时间。(译者注:通过程序动态创建计时器对象) public Chronometer (Context context, AttributeSet attrs) 初始化标准视图布局信息。设置当前时间为基准时间。(译者注:指通过XML来指定一个计时器) public Chronometer (Context context, AttributeSet attrs, int defStyle) 初始化标准视图布局信息和风格。设置当前时间为基准时间。 五、公共方法 public long getBase () 返回先前由setBase(long)设置的基准时间。 public String getFormat () 返回先前由setFormat(String)设置的格式化字符串。 public Chronometer.OnChronometerTickListener getOnChronometerTickListener () 返回值 返回这个监听器(可能为空)是用于监听计时器变化的事件。 public void setBase (long base) 设置基准时间(译者注:基准时间为真正意义上开始计时的时间,而不是调用start时时间,比如调用本函数并设置参数base为SystemClock.elapsedRealtime()即表示从当前时间开始重新计时)。 参数 base 使用elapsedRealtime()为基准时间 public void setFormat (String format) 设置用于显示的格式化字符串。格式化字符串:如果指定,计时器将根据这个字符串来显示,替换字符串中第一个“%s”为当前"MM:SS"或"H:MM:SS"格式的时间显示。如果这个格式化字符串为空,或者你从未调用过setFormat()方法,计时器将简单的显示"MM:SS" or "H:MM:SS"格式的时间。(译者注:如:"This is a Chronometer %s") 参数 format 格式化字符串 public void setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener) 设置计时器变化时调用的监听事件。 参数 listener The listener. public void start () 开始计时。不会影响到由setBase(long)设置的基准时间,仅显示视图。即使部件不显示,计时器也会通过定时处理消息来工作。为了确保不发生资源泄漏,用户应确保每个start()方法都有对应的stop()调用(译者注:有一个start就有一个stop)。(译者注:start只是显示计时,实际上计时是从基准时间开始的,所以通过stop停止计时若干秒后再start时,显示的计时会突然跳到当前显示的计时后的若干秒后继续计时,见此帖子。) public void stop () 停止计时。不会影响到由setBase(long)设置的基准时间,仅显示视图。这将停止消息发送,有效地释放计时器运行时start()占用的资源。 六、受保护方法 protected void onDetachedFromWindow () 视图从窗体上移除时调用,同时窗体表面不再显示视图。 protected void onWindowVisibilityChanged (int visibility) 当窗体中视图的可视性(GONE, INVISIBLE, VISIBLE)发生改变时调用。注意它将告诉你你的窗口是否可以被窗口管理器识别,这并不能说明窗口是否被屏幕上的其他窗口遮挡,即使它本身是可见的。 参数 visibility窗口新的可见性 七、补充 文章链接 android中的时间服务–Chronometer计时器服务 示例代码 Java文件 public class ChronometerDemo extends Activity{ private Chronometercher1; @Override protected void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.chronometer); cher1 = (Chronometer)findViewById(R.id.cher1); cher1.setFormat( " 计时:%s " ); } /** *开始计时 * @param view */ public void onStart(Viewview){ cher1.start(); } /** *停止计时 * @param view */ public void onStop(Viewview){ cher1.stop(); } /** *重置 * @param view */ public void onReset(Viewview){ cher1.setBase(SystemClock.elapsedRealtime()); } } XML文件 < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:orientation ="vertical" android:layout_width ="wrap_content" android:layout_height ="wrap_content" > < Chronometer android:id ="@+id/cher1" android:layout_width ="wrap_content" android:layout_height ="wrap_content" ></ Chronometer > < LinearLayout android:layout_width ="wrap_content" android:layout_height ="wrap_content" > < Button android:onClick ="onStart" android:text ="开始计时" android:layout_width ="wrap_content" android:layout_height ="wrap_content" ></ Button > < Button android:onClick ="onStop" android:text ="停止计时" android:layout_width ="wrap_content" android:layout_height ="wrap_content" ></ Button > < Button android:onClick ="onReset" android:text ="重置" android:layout_width ="wrap_content" android:layout_height ="wrap_content" ></ Button > </ LinearLayout > </ LinearLayout > 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582602 ,如需转载请自行联系原作者

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

Android 中文API (91) —— GestureDetector

正文 一、结构 public classGestureDetector extendsObject java.lang.Object android.view.GestureDetector 二、概述 通过系统提供的MotionEvent来监测各种手势和(触摸)事件。当一个指定的手势事件发生时,GestureDetector.OnGestureListener回调函数将通告用户。这个类仅仅处理由触摸引发的MotionEvent(不能处理由轨迹球引发的事件)。要使用这个类需执行以下操作: *为你的View建立一个GestureDetector实例。 *在View的onTouchEvent(MotionEvent)方法里确保调用(GestureDetector的)onTouchEvent(MotionEvent)方法。当相关事件发生时,定义在回调函数里的方法将被执行。 三、嵌套类 interface GestureDetector.OnDoubleTapListener 双击和轻击(confirmed single-tap)事件的监听器。(译者注:confirmed single-tap是用户快速点一下触摸屏所引发的动作。区分下面两种情况: 1.手指按下,停留0.2秒(估计值)以上再抬起时,不算confirmed single-tap 2.快速点击屏幕两次不会引发两次confirmed single-tap事件,而是引发一次DoubleTap事件。) interface GestureDetector.OnGestureListener 在有手势动作发生时,通知的监听器 class GestureDetector.SimpleOnGestureListener 当只需要监听部分手势时,用于扩展的便捷类 四、构造函数 publicGestureDetector(GestureDetector.OnGestureListenerlistener,Handlerhandler) 已弃用,替代方法: GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler) 通过提供的监听器来创建一个GestureDetector,这个构造函数只能用于非UI线程(因为它允许指定一个handler)。 参数 listener用于触发所有回调函数的监听器,不能为空 handler需要使用到的handler 异常 NullPointerExceptionListener或者handler为空时 publicGestureDetector(GestureDetector.OnGestureListenerlistener) 已弃用,替代方法: GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener) 通过提供的监听器来创建一个GestureDetector。你只能于UI线程里使用这个构造函数(这是通常的情况) 参数 listener用于触发所有回调函数的监听器,不能为空 异常 NullPointerException如果Listener为空 参见 Handler() publicGestureDetector(Contextcontext,GestureDetector.OnGestureListenerlistener) 通过提供的监听器来创建一个GestureDetector。(通常情况下)你只能于UI线程里使用这个构造函数 参数 context应用程序上下文 listener用于触发所有回调函数的监听器,不能为空 异常 NullPointerException如果Listener为空 参见 Handler() publicGestureDetector(Contextcontext,GestureDetector.OnGestureListenerlistener,Handlerhandler) 通过提供的监听器来创建一个GestureDetector.(通常情况下)你只能于UI线程里使用这个构造函数 参数 context应用程序上下文 listener用于触发所有回调函数的监听器,不能为空 handler需要使用到的handler 异常 NullPointerException如果Listener为空 参见 Handler() publicGestureDetector(Contextcontext,GestureDetector.OnGestureListenerlistener,Handlerhandler, boolean ignoreMultitouch) 通过提供的监听器来创建一个GestureDetector.(通常情况下)你只能于UI线程里使用这个构造函数 参数 context应用程序上下文 listener用于触发所有回调函数的监听器,不能为空 handler需要使用到的handler ignoreMultitouch是否忽视多点触控(译者注:仅适用于2.2以上的android版本,如果没设置这个参数(即使用的是上一个构造函数),则会忽视多点触控 ,由于网上都没有在GestureDetector传入handler的例子,所以我也不明白这里的handler的具体用意。如果有需要深入理解的朋友,请参照GestureDetector的源码 异常 NullPointerException如果Listener为空 参见 Handler() 五、公共方法 public booleanisLongpressEnabled() 返回值 如果允许长按事件,则返回true,否则为false public booleanonTouchEvent(MotionEventev) 分析指定的动作事件,如何满足条件,就触发在GestureDetector.OnGestureListener中提供的回调函数 参数 ev当前的触摸事件(译者注:如MotionEvent_DOWN, MotionEvent_UP) 返回值 如果GestureDetector.OnGestureListener消耗了这个事件,则返回true,否则返回false public voidsetIsLongpressEnabled(boolean isLongpressEnabled) 设置是否启用长按。如果启用长按,当用户按下并保持按下状态时,将收到一个长按事件,同时不再接收其它事件;如果禁用长按,当用户按下并保持按下状态然后再移动手指时,将会接收到scroll事件。长按默认为启用。 参数 isLongpressEnabled 是否启用接收长按事件 public voidsetOnDoubleTapListener(GestureDetector.OnDoubleTapListeneronDoubleTapListener) 设置双击及其相关手势的监听器 参数 onDoubleTapListener触发所有回调函数的监听器,或者设为null以停止监听双击的手势 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582415,如需转载请自行联系原作者

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

Android 中文API (37) —— AbsoluteLayout

正文 一、结构 public classAbsoluteLayoutextendsViewGroup java.lang.Object android.view.View android.view.ViewGroup android.widget.AbsoluteLayout 此类不赞成使用。 推荐使用FrameLayout,RelativeLayout或者定制的layout代替。 二、概述 让你指定子元素的xy精确坐标的布局。绝对布局缺乏灵活性,在没有绝对定位的情况下相比其他类型的布局更难维护。 三、公共方法 public ViewGroup.LayoutParams generateLayoutParams (AttributeSet attrs) 返回一组新的基于所支持的属性集的布局参数 参数 attrs 构建layout布局参数的属性集合 返回值 一个ViewGroup.LayoutParams的实例或者它的一个子类 四、受保护方法 protected ViewGroup.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p) 返回一组合法的受支持的布局参数。当一个ViewGroup传递一个布局参数没有通过checkLayoutParams(android.view.ViewGroup.LayoutParams)检测的视图时,此方法被调用。此方法会返回一组新的适合当前ViewGroup的布局参数,可能从指定的一组布局参数中复制适当的属性。 参数 p被转换成一组适合当前ViewGroup的布局参数 返回值 an instance of ViewGroup.LayoutParams or one of its descendants 一个ViewGroup.LayoutParams的实例或者其中的一个子节点 protected boolean checkLayoutParams (ViewGroup.LayoutParams p) (译者注:检测是不是AbsoluteLayout.LayoutParams的实例,见源码: protected ViewGroup.LayoutParams generateDefaultLayoutParams () 返回一组宽度为WRAP_CONTENT,高度为WRAP_CONTENT,坐标是(0,0)的布局参数 返回值 一组默认的布局参数或null值 protected void onLayout (boolean changed, int l, int t, int r, int b) 在此视图view给他的每一个子元素分配大小和位置时调用。派生类可以重写此方法并且重新安排他们子类的布局。 参数 changed这是当前视图view的一个新的大小或位置 l相对于父节点的左边位置 t相对于父节点的顶点位置 r相对于父节点的右边位置 b相对于父节点的底部位置 protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) 测量视图以确定其内容宽度和高度。此方法被measure(int, int)调用。需要被子类重写以提供对其内容准确高效的测量。 约定:当重写此方法时,你必须调用setMeasuredDimension(int, int)来保存当前视图view的宽度和高度。不成功调用此方法将会导致一个IllegalStateException异常,是由measure(int, int)抛出。所以调用父类的onMeasure(int, int)方法是必须的。 父类的实现是以背景大小为默认大小,除非MeasureSpec(测量细则)允许更大的背景。子类可以重写onMeasure(int,int)以对其内容提供更佳的尺寸。 如果此方法被重写,那么子类的责任是确认测量高度和测量宽度要大于视图view的最小宽度和最小高度(getSuggestedMinimumHeight() and getSuggestedMinimumWidth()),使用这两个方法可以取得最小宽度和最小高度。 参数 widthMeasureSpec强加于父节点的横向空间要求。要求是使用View.MeasureSpec进行编码 heightMeasureSpec强加于父节点的纵向空间要求。要求是使用View.MeasureSpec进行编码。 五、补充 文章链接 我的Android学习之旅[6]——以示例程序来展示Android的几种布局方式 第六讲:用户界面View(二) 如何动态改变AbsoluteLayout布局中其它布局的坐标 示例代码 < AbsoluteLayout android:id ="@+id/AbsoluteLayout01" android:layout_height ="wrap_content" android:layout_width ="fill_parent" > < TextView android:text ="TextView01" android:id ="@+id/TextView01" android:layout_height ="wrap_content" android:layout_y ="10px" android:layout_width ="wrap_content" android:layout_x ="110px" > </ TextView > </ AbsoluteLayout > 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582632,如需转载请自行联系原作者

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

Android中文API(127) —— MessageQueue

结构 继承关系 public classMessageQueue extendsObject java.lang.Object android.os.MessageQueue 类概述 保存消息列表的低级别类,这些消息由Looper对象派发。消息并不是直接添加到MessageQueue中的,而是通过与Looper对象关联的MessageQueue.IdleHandler对象添加的。 调用Looper.myQueue方法可以获取当前线程的MessageQueue。 公共方法 public final voidaddIdleHandler(MessageQueue.IdleHandler handler) 向消息队列中添加一个新的MessageQueue.IdleHandler。当调用IdleHandler.queueIdle()返回false时,此MessageQueue.IdleHandler会自动的从消息队列中移除。或者调用removeIdleHandler(MessageQueue.IdleHandler)也可以从消息队列中移除MessageQueue.IdleHandler。 此方法是线程安全的。 参数 handler要添加的IdleHandler。 public final voidremoveIdleHandler(MessageQueue.IdleHandler handler) 从队列中移除之前调用addIdlehandler(MessageQueue.IdleHandler)添加的MessageQueue.IdleHandler。如果handler不在当前的空闲列表,不做任何事。 参数 handler要移除的IdleHandler。 受保护方法 protected voidfinalize() 在对象被VM回收之前调用。只有当垃圾回收器检测到运行的所有线程都不再使用此对象时才会出现。 在对象被垃圾回收之前,此方法可以用来释放系统资源或者做其他的清理工作。默认的此方法实现是空的,这也是VM所期望的,但是子类可以重写此方法。在此方法执行是抛出的未捕获异常会导致程序立即结束,否则则会忽略异常。 注意,VM会保证任何对象的finalize方法最多调用一次,但是它不会保证何时(或者是否)会调用finalize。例如,对象B的finalize方法可以推迟执行对象A的finalize,因此它会导致推迟回收A的内存空间。为了安全,使用ReferenceQueue,因为在垃圾回收时,它在VM处理引用的方式上提供了更多的控制方法。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/602176,如需转载请自行联系原作者

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

Android 中文API (38) —— Spinner

正文 一、结构 public final classSpinnerextendsAbsSpinner java.lang.Object android.view.View android.view.ViewGroup android.widget.AdapterView<T extends android.widget.Adapter> android.widget.AbsSpinner android.widget.Spinner 二、概述 下拉列表(Spinner)是一个每次只能选择所有项中一项的部件。它的项来自于与之相关联的适配器中。 三、XML属性 属性名称 描述 android:prompt 该提示在下拉列表对话框显示时显示。(译者注:对话框的标题: 四、公共方法 public int getBaseline() 返回这个控件文本基线的偏移量。如果这个控件不支持基线对齐,那么方法返回-1. 返回值 返回控件基线左边边界位置,不支持时返回-1 (译者注:这个类不知道干什么用,只找到下面的代码: public class AndroidBamboo extends Activity { public void onCreate(BundlesavedInstanceState) { super .onCreate(savedInstanceState); Spinnerspinner = new Spinner( this ); spinner.setPrompt( " 500 " ); String[]items = { " bam " , " boo " , " lab " , " code " , " programming " , " framework " , " android " }; ArrayAdapterarray_adapter = new ArrayAdapter < String > ( this ,android.R.layout.simple_spinner_item,items); array_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(array_adapter); int baseline = spinner.getBaseline(); setContentView(spinner); } } public CharSequence getPrompt() 返回值 当对话框弹出的时候显示的提示(译者注:获得弹出视图上的标题字) public void onClick(DialogInterface dialog, int which) 当点击弹出框中的项时这个方法将被调用。 参数 dialog点击弹出的对话框 which点击按钮(如:Button)或者点击位置 public BooleanperformClick() 如果它被定义就调用此视图的OnClickListener(译者注:例如可以在加载时默认弹出下拉列表)。 返回值 为True一个指定的OnClickListener被调用,为false时不被调用。 public void setOnItemClickListener(AdapterView.OnItemClickListenerI) Spinner不支持item的点击事件,调用此方法将引发异常。 参数 l这个监听将被忽略 public voidsetPromptId(CharSequence prompt) 设置对话框弹出的时候显示的提示(译者注:设置弹出视图上的标题字) 参数 prompt设置的提示 public void setPromptId(int promptId) 设置对话框弹出的时候显示的提示(译者注:设置弹出视图上的标题字) 参数 prompted当对话框显示是显示这个资源id所代表的提示。 五、受保护方法 protected void onDetachedFromWindow () 当这个视图从屏幕上卸载时候被调用。在这一点上不再绘制视图。 protected void onLayout(boolean changed, int l, int t, int r, int b) 当View要为所有子对象分配大小和位置时,调用此方法。派生类与子项们应该重载这个方法和调用布局每一个子项。 参数 changed这是这个视图的一个新的大小或位置 l相对父空间的左位置 t相对父空间的顶端位置 r相对父空间的右端位置 b相对父空间的底部位置 参见 Creates and positions all views 六、补充 文章链接 Android学习指南——Spinner下拉列表 android自定义Spinner下拉菜单(下拉列表框)样式 示例代码 Java代码 public class SpinnerActivity extends Activity{ /** Calledwhentheactivityisfirstcreated. */ Stringmes = " Wolf " ; private static final String[]m_arr = { " 第一组 " , " 第二组 " , " 第三组 " }; @Override public void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.main); Spinners1 = (Spinner)findViewById(R.id.Spinner01); s1.setPrompt( " 请选择颜色 " ); // ArrayAdapteradapter=ArrayAdapter.createFromResource(this,R.array.spinnercolor,android.R.layout.simple_spinner_item); ArrayAdapter < String > adapter = new ArrayAdapter < String > ( this ,android.R.layout.simple_spinner_item,m_arr); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); s1.setAdapter(adapter); s1.setSelection( 1 , true ); // s1.setPromptId(CONTEXT_INCLUDE_CODE); int baseline = s1.getBaseline(); s1.performClick(); s1.setOnItemSelectedListener( new Spinner.OnItemSelectedListener(){ public void onItemSelected(AdapterView <?> arg0,Viewarg1, int arg2, long arg3){ dispToast( " 选择的是 " + m_arr[arg2]); arg0.setVisibility(View.VISIBLE); } public void onNothingSelected(AdapterView <?> arg0){ // } }); Toast.makeText( this ,s1.getPrompt(),Toast.LENGTH_LONG).show(); } public void dispToast(Stringstr){ Toast.makeText( this ,str,Toast.LENGTH_SHORT).show(); } } XML资源文件 <? xmlversion="1.0"encoding="utf-8" ?> < resources > < string name ="hello" > HelloWorld,SpinnerActivity! </ string > < string name ="app_name" > Spinner测试 </ string > < string-array name ="spinnercolor" > < item > 红色 </ item > < item > 绿色 </ item > < item > 白色 </ item > < item > 橙色 </ item > </ string-array > < string name ="planet_prompt" > PleaseChooseaItem! </ string > </ resources > 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582627,如需转载请自行联系原作者

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

Android 中文 API (20) —— DatePicker

正文 一、结构 public classDatePickerextendsFrameLayout java.lang.Object android.view.View android.view.ViewGroup android.widget.FrameLayout android.widget.DatePicker 二、概述 一个选择年月日的日历布局视图。对于对话框样式的日历视图,参见DatePickerDialog. 三、公共方法 public int getDayOfMonth () 获取选择的天数 public int getMonth () 获取选择的月份。(注意:返回数值为0..11,需要自己+1来显示) public int getYear () 获取选择的年份 public void init (int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener) 初始化状态。(译者注:初始化年月日) 参数 year 初始年(译者注:注意使用new Date()初始化年时,需要+1900,如下:date.getYear() + 1900) monthOfYear初始月。 dayOfMonth 初始日。 onDateChangedListener 日期改变时通知用户的事件监听,可以为空(null)。 public void setEnabled (boolean enabled) 设置视图的启用状态。该启用状态随子类的不同而有不同的解释。 参数 enabled设置为true表示启动视图,反之禁用。 public void updateDate (int year, int monthOfYear, int dayOfMonth) 更新日期 四、受保护方法 protected void dispatchRestoreInstanceState (SparseArray<Parcelable> container) 重写使我们能够完全控制这小部件的保存或恢复。(译者注:此处直接调用了父类的ViewGroup. dispatchThawSelfOnly方法) 参数 container SparseArray持有保存以前的状态。The SparseArray which holds previously saved state. protected void onRestoreInstanceState (Parcelable state) 允许视图重新应用以前通过onSaveInstanceState()生成代表内部的状态。这个函数决不调用一个空的状态。 参数 state The frozen state that had previously been returned by onSaveInstanceState(). 返回以前调用onSaveInstanceState()保存下来的状态。 protected Parcelable onSaveInstanceState () 允许视图生成一个代表内部的状态,以后可用于创建一个与之相同的新的实例。这种状态应该只包含非持久或以后不能够重建的信息。例如,你决不存储你当前在屏幕上的位置,因为这会在视图的层面上重新计算放置一个新的实例。 你可以存储到这里的一些例子:一个文本框中当前光标的位置(但通常不是文字本身,文字通常保存在内容提供者(content provider)或其他持久的储存中),一个列表视图中的当前选中项。 返回值 返回一个包含视图当前状态的Parcelable对象,或没有什么状态保存时返回null。默认实现返回null。 五、补充 5.1 如果只想显示年月或者是月日,可以取巧用android:layout_marginLeft属性控制显示隐藏控件一部分。 5.2 如果用Date初始化的时候,需要注意年的问题: Datedate = new Date(); dpDate.init(date.getYear() + 1900 ,date.getMonth(), 1 , null ); 代码说明:dpDate为DatePicker控件。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582672,如需转载请自行联系原作者

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

Android 中文 API (22) —— MultiAutoCompleteTextView

正文 一、结构 public classMultiAutoCompleteTextViewextendsAutoCompleteTextView java.lang.Object android.view.View android.widget.TextView android.widget.EditText android.widget.AutoCompleteTextView android.widget.MultiAutoCompleteTextView 二、 类概述 一个继承自AutoCompleteTextView的可编辑的文本视图,能够对用户键入的文本进行有效地扩充提示,而不需要用户输入整个内容。(用户输入一部分内容,剩下的部分系统就会给予提示)。 用户必须提供一个MultiAutoCompleteTextView.Tokenizer以用来区分不同的子串。 下面的代码片段展示了如何创建一个文本视图,这个视图用来对用户输入的国家名称进行有效地补充提示。 三、公共方法 public boolean enoughToFilter () 此方法并不是检验什么时候文本的总长度超过了预定的值,而是在仅当从函数findTokenStart()到getSelectionEnd()函数得到的文本长度为0或者超过了预定值的时候才起作用。(译者注:当文本长度超过阈值时过滤) public void performValidation () 此子类方法并不是用来确定整个文本的有效性,而是用来确定文本中的单个符号的有效性。空标记将被移除。 public void setTokenizer (MultiAutoCompleteTextView.Tokenizer t) 设置用来决定用户正在输入文本的范围的分词组件。 四、 受保护方法 protected void performFiltering (CharSequence text, int keyCode) 此方法并不过滤整个编辑框的内容,只是过滤从函数findTokenStart()到函数getSelectionEnd()获得的长度为0或者超过了预定的值的文本内容。 参数 text指定过滤模式 keyCode插入到编辑框中的最后一个字符;当字符(文本)是通过软键盘输入的时候,小心此字符的值可能为NULL。 protected void performFiltering (CharSequence text, int start, int end, int keyCode) 启动对下拉式列表内容的过滤。过滤模式为编辑框中指定的范围。子类可覆盖此方法,以便于采用一个不同的模式。 protected void replaceText (CharSequence text) 通过替换从函数findTokenStart()到函数getSelectionEnd()得到的文本文本范围以及传递给函数terminateToken()的文版返回的结果来实现文本的输入。另外,文本的替换区域将会被标记为自动文本区,这样如果用户直接按DEL键,执行过程就会停止。子类可覆盖此方法来实现许多不同的文本插入工作。 参数 text 下拉列表里的选中项 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582668,如需转载请自行联系原作者

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

Android 中文 API (16) —— AnalogClock

正文 一、结构 public classAnalogClockextendsView java.lang.Object android.view.View android.widget.AnalogClock 二、类概述 这是一个带有时针和分针的模拟时钟控件。 三、受保护的方法 protected void onAttachedToWindow () 视图(AnalogClock)附在窗体时调用。在调用时,视图在窗体表面并开始绘制。注意保证这个方法在onDraw(Canvas)以前被调用,但是它可以在首次onDraw以前任何时间调用——包括onMeasure(int, int)之前或之后。 protected void onDetachedFromWindow () 视图(DigitalClock)从窗体上分离(移除)时调用,同时窗体表面不再绘制视图。 protected void onDraw (Canvas canvas) 实现你自己的绘制。 参数 canvas 在画布上绘制背景 protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) 测量这个视图以确定其内容的高度和宽度。通过measure(int, int)来调用这个方法,并且应该由子类重写以提高内容测量的效率和精确度。 约定:当该方法被重写时,你必须调用setMeasuredDimension(int, int)来存储已测量视图的高度和宽度。否则将通过measure(int, int)抛出一个IllegalStateException异常。调用父类的onMeasure(int, int)方法是一个有效的办法。 父类的实现是以背景大小为默认大小,除非MeasureSpec(测量细则)允许更大的背景。为了更好测量内容子类应该重写onMeasure(int, int)。 如果这个方法被重写,子类有责任确保测量它的高度和宽度至少是视图的最小宽度和高度(getSuggestedMinimumHeight()和getSuggestedMinimumWidth())。 参数 widthMeasureSpec由于父类有横向空间要求,参见View.MeasureSpec。 heightMeasureSpec 由于父类有纵向空间要求,参见View.MeasureSpec。 protected void onSizeChanged (int w, int h, int oldw, int oldh) 布局期间当视图的大小发生改变时调用。如果只是添加到视图,调用时显示的是旧值0。(译者注:也就是添加到视图时,oldw和oldh返回的是0) 参数 w 视图当前宽度 h 视图当前高度 oldw 视图以前的宽度 oldh 视图以前的高度 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582686,如需转载请自行联系原作者

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

Android中文API(97)—— ContextMenu

正文 一、结构 public interfaceContextMenu implementsMenu android.view.ContextMenu 二、概述 扩展自Menu的上下文菜单提供了修改上下文菜单头(header)的功能。(译者注:当一个视图注册了上下文菜单时,执行一个在该对象上长按(2秒)的动作,将出现一个具有相关功能的浮动菜单。) 上下文菜单不支持菜单项的快捷方式和图标。 当执行长按上下文菜单时,大多数情况会调用registerForContextMenu(View)函数和重写执行onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo)函数。(译者注:因为要创建一个上下文菜单,你必须重写这个活动的上下文回调函数onCreateContextMenu()并且通过registerForContextMenu(View)为其注册上下文菜单。) 三、内部类 interface ContextMenu.ContextMenuInfo 获得更多关于创建上下文菜单的信息。(译者注:例如:AdapterViews使用这个类可以精确选择adapter的位置来启动上下文菜单。) 四、公共方法 public abstract voidclearHeader() 清除上下文菜单头的信息。(译者注:包括图片和文字信息 Menu.clearHeader();后 ) public abstract ContextMenusetHeaderIcon(Drawable icon) 为上下文菜单头设置图标 参数 icon你要使用的Drawable 返回值 调用你设置修改的上下文菜单 public abstract ContextMenusetHeaderIcon(int iconRes) 设置上下文菜单头图标为指定的资源id 参数 iconRes 你要使用的图标资源的目录 (译者注:把图标放入res/drawable/目录下,R文件会自动生成对应项。设置方法如menu.setHeaderIcon(R.drawable.webtext) 这个上下文菜单头是没有设置图标的 这个上下文菜单头是设置了图标的 ) 返回值 调用你设置修改过的上下文菜单 public abstract ContextMenusetHeaderTitle(int titleRes) 通过资源标识符为上下文菜单头的标题栏设置文字。(译者注:需要在res/string中先设置一段你需要的文字,如:<stringname="titletest">这是一段测试文字</string> 然后通过R文件索引到这段文字,menu.setHeaderTitle(R.string.titletest)) 参数 titleRes 所需文字资源的索引 返回值 调用你设置修改过的上下文菜单 public abstract ContextMenusetHeaderTitle(CharSequence title) 设置上下文菜单的标题,显示在标题栏 参数 title标题要显示的文字 返回值 调用你设置修改过的上下文菜单 public abstract ContextMenusetHeaderView(View view) 设置View到上下文菜单头上。将替代上下文菜单头的图标和标题(或者替代你之前设置的headerView) 参数 view上下文菜单头要使用的View 返回值 调用你设置修改过的上下文菜单内容 五、补充 文章精选: Android的上下文菜单:Context Menu android的ContextMenu android上下文菜单Context Menu 代码示例: Test_Contextmenu.java public class Test_Contextmenu extends Activity{ /** Calledwhentheactivityisfirstcreated. */ @Override public void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.main); TextViewtxt1 = (TextView) this .findViewById(R.id.txt1); this .registerForContextMenu(txt1); TextViewtxt2 = (TextView) this .findViewById(R.id.txt2); this .registerForContextMenu(txt2); } // 重写 onCreateContextMenu 用以创建上下文菜单 @Override public void onCreateContextMenu(ContextMenumenu,Viewv, ContextMenuInfomenuInfo){ super .onCreateContextMenu(menu,v,menuInfo); // 创建R.id.txt1的上下文菜单 if (v == (TextView) this .findViewById(R.id.txt1)){ menu.setHeaderIcon(R.drawable.icon); menu.setHeaderTitle(R.string.titletest); // menu.clearHeader(); // 第一个参数:组ID // 第二个参数:菜单项ID // 第三个参数:顺序号 // 第四个参数:菜单项上显示的内容 menu.add( 1 , 0 , 0 , " 菜单1 " ); menu.add( 1 , 1 , 1 , " 菜单2 " ).setCheckable( true ); // 增加一个√选项 } // 创建R.id.txt2的上下文菜单(多级) else if (v == (TextView) this .findViewById(R.id.txt2)){ // ContextMenu.addSubMenu("菜单名称") - 用来添加子菜单。子菜单其实就是一个特殊的菜单 SubMenusub1 = menu.addSubMenu( " 父菜单1 " ); sub1.setHeaderIcon(R.drawable.folder); sub1.add( 0 , 0 , 0 , " 菜单1 " ); sub1.add( 0 , 1 , 1 , " 菜单2 " ); sub1.setGroupCheckable( 1 , true , true ); SubMenusub2 = menu.addSubMenu( " 父菜单2 " ); sub2.setIcon(R.drawable.text); sub2.add( 1 , 0 , 0 , " 菜单3 " ); sub2.add( 1 , 1 , 1 , " 菜单4 " ); sub2.setGroupCheckable( 1 , true , true ); } } } 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:id ="@+id/txt1" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="请长按触发(txt1)" /> < TextView android:id ="@+id/txt2" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="请长按触发(txt2)" /> </ LinearLayout > strings.xml <? xmlversion="1.0"encoding="utf-8" ?> < resources > < string name ="hello" > HelloWorld,Test_Contextmenu! </ string > < string name ="app_name" > Test_Contextmenu </ string > < string name ="titletest" > 这是一段测试文字 </ string > </resources> 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582398,如需转载请自行联系原作者

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

Android 中文API (46) —— SimpleAdapter

正文 一、结构 public interfaceSpinnerAdapterextendsAdapter java.lang.Object android.widget.BaseAdapter android.widget. SpinnerAdapter 二、概述 这是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图。你可以指定数据支持的列表如ArrayList组成的Map。在ArrayList中的每个条目对应List中的一行。Maps包含每行数据。你可以指定一个定义了被用于显示行的视图XML文件,通过关键字映射到指定的视图。绑定数据到视图分两个阶段,首先,如果一个SimpleAdapter.ViewBinder是有效的,setViewValue(android.view.View, Object, String)将被调用。如果返回值是真,绑定完成了。如果返回值为假,下面的视图将按以下顺序去处理: 一个实现了Checkable的视图(例如CheckBox),期望绑定值是一个布尔类型。 TextView期望绑定值是一个字符串类型,通过调用setViewText(TextView, String)绑定。 ImageView期望绑定值是一个资源id或者一个字符串,通过调用setViewImage(ImageView, int)或 setViewImage(ImageView, String)。 如果没有一个合适的绑定发生将会抛出IllegalStateException。 三、构造函数 publicSimpleAdapter(Contextcontext,List<?extendsMap<String,?>> data, int resource,String[]from, int[] to) 构造函数 参数 context关联SimpleAdapter运行着的视图的上下文。 data一个Map的列表。在列表中的每个条目对应列表中的一行,应该包含所有在from中指定的条目 resource一个定义列表项目的视图布局的资源唯一标识。布局文件将至少应包含哪些在to中定义了的名称。 from一个将被添加到Map上关联每一个项目的列名称的列表 to应该在参数from显示列的视图。这些应该全是TextView。在列表中最初的N视图是从参数from中最初的N列获取的值。 四、公共方法 public intgetCount() 获取数据集中记录总行数 publicViewgetDropDownView(int position,ViewconvertView,ViewGroupparent) 获得一个在指定位置上显示下拉弹出数据的视图。 参数 position想得到项目视图的索引 convertView如果可能旧有的视图重新使用。注解:在使用之前应该检查这个视图不是空的并且类型合适。如果转换视图显示正确的数据是不可能的,这个方法能够创建一个新的视图 parent 视图最终将依附的父对象 返回值 一个对应指定位置的数据的视图。 publicFiltergetFilter() 返回一个可以通过一种过滤模式来约束数据的过滤器。 这个方法通常被Adapter类实现。 返回值 一个用于约束数据的过滤器 public abstractObjectgetItem(int position) 获取数据集中指定位置上的数据项目 参数 position在adapter中我们想得到项目的位置。 返回值 指定位置上的数据。 public abstract longgetItemId(int position) 获取数据集中指定位置上的行ID。 参数 position在adapter中我们想得到的行ID的项目的位置。 返回值 指定位置上的数据。 public abstractViewgetView(int position,ViewconvertView,ViewGroupparent) 获取一个显示数据集中指定位置数据段视图。可以手动创建视图,或者从XML设计文件填充。当视图从XML设计文件填充时,父视图(如GridView,ListView等)将接受默认的设计参数,除非使用inflate(int, android.view.ViewGroup, boolean)去指定一个根视图和防止依附于根视图。 参数 position我们想要的在adapter中的数据项目的位置 convertView如果可能旧有的视图重新使用。注解:在使用之前应该检查这个视图不是空的并且类型合适。如果转换视图显示正确的数据是不可能的,这个方法能够创建一个新的视图 parent视图最终将依附的父对象。 返回值 一个在指定位置上相应的数据的视图。 publicSimpleAdapter.ViewBindergetViewBinder() 返回被用来绑定数据到视图的SimpleAdapter.ViewBinder。 返回值 一个ViewBinder,如果binder不存在则返回null 参见 setViewBinder(android.widget.SimpleAdapter.ViewBinder) public voidsetDropDownViewResource(int resource) 设置创建下拉视图的布局资源 参数 resource定义下拉视图的布局资源 参见 getDropDownView(int, android.view.View, android.view.ViewGroup) public voidsetViewBinder(SimpleAdapter.ViewBinderviewBinder) 设置binder用于绑定数据到视图 参数 viewBinder用于绑定数据到视图的binder可以设置为null,可用于删除存在的binder 参见 getViewBinder() public voidsetViewImage(ImageViewv, int value) 调用bindView去给ImageView设置图像,但只有当ViewBinder不存在或者如果存在的ViewBinder无法处理绑定到一个ImageView时才调用。如果提供的数据是一个整形时,setViewImage(ImageView, String)方法将被本方法替代 参数 v接收图像的ImageView value从数据集获取数据到值 参见 setViewImage(ImageView, String) public voidsetViewImage(ImageViewv,Stringvalue) 调用bindView去给ImageView设置图像,但只有当ViewBinder不存在或者如果存在的ViewBinder无法处理绑定到一个ImageView时才调用。默认的,这个值被作为一个图像资源来对待。如果这个值作为一个图像的Uri来使用。如果提供的数据不是一个整形时,setViewImage(ImageView, int)方法将被本方法替代 参数 v接收图像的ImageView value从数据集获取数据到值 参见 setViewImage(ImageView, int) public voidsetViewText(TextViewv,Stringtext) 调用bindView去给TextView设置文本,但只有当ViewBinder不存在或者如果存在的ViewBinder无法处理绑定到一个TextView时才调用 参数 v将接收文本的TextView text被设置到TextView的文本 五、补充 文章精选 简约而不简单——Android SimpleAdapter android listview组件之ArrayAdapter,SimpleAdapter Android用simpleAdapter来直接显示BMP图片(有ViewBinder用法) 示例代码 privateListViewlv; privateList<Map<String,String>>data; privateSimpleAdaptersAdapter; lv=(ListView)findViewById(R.id.listview); data=newArrayList<Map<String,Object>>(); for(inti=0;i<10;i++){ Map<String,Object>map=newHashMap<String,Object>(); map.put("title","APPLE"); map.put("content","caneat"); map.put("check",true); map.put("check1","true"); map.put("image",R.drawable.icon); data.add(map); } sAdapter=newSimpleAdapter(getApplicationContext(), data, R.layout.item, newString[]{"title","content","check","check1","image"}, newint[]{R.id.title,R.id.content,R.id.check,R.id.check1,R.id.image}); lv.setAdapter(sAdapter); 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582592,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

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部分的功能。

用户登录
用户注册