首页 文章 精选 留言 我的

精选列表

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

Android中文API(115)——AudioFormat

正文 一、结构 public classAudioFormat extendsObject java.lang.Object android.media.AudioFormat 二、概述 AndioFormat 类用于访问一些音频格式和通道配置常量。这些常量应用在 AudioTrack 和 AudioRecord 类中。 三、常量 public static final intCHANNEL_CONFIGURATION_DEFAULT 已弃用。 用CHANNEL_OUT_DEFAULT or CHANNEL_IN_DEFAULT代替。 常量值:1 (0x00000001) public static final intCHANNEL_CONFIGURATION_INVALID 已弃用。 用CHANNEL_INVALID代替。 常量值:0 (0x00000000) public static final intCHANNEL_CONFIGURATION_MONO 已弃用。 用CHANNEL_OUT_MONO or CHANNEL_IN_MONO代替。 常量值:2 (0x00000002) public static final intCHANNEL_CONFIGURATION_STEREO 已弃用。 用CHANNEL_OUT_STEREO or CHANNEL_IN_STEREO代替。 常量值:3 (0x00000003) public static final intCHANNEL_INVALID 无效的音频通道掩码 常量值:0 (0x00000000) public static final intCHANNEL_IN_BACK 常量值:32 (0x00000020) public static final intCHANNEL_IN_BACK_PROCESSED 常量值:512 (0x00000200) public static final intCHANNEL_IN_DEFAULT 常量值:1 (0x00000001) public static final intCHANNEL_IN_FRONT 常量值:16 (0x00000010) public static final intCHANNEL_IN_FRONT_PROCESSED 常量值:256 (0x00000100) public static final intCHANNEL_IN_LEFT 常量值:4 (0x00000004) public static final intCHANNEL_IN_LEFT_PROCESSED 常量值:64 (0x00000040) public static final intCHANNEL_IN_MONO 常量值:16 (0x00000010) public static final intCHANNEL_IN_PRESSURE 常量值:1024 (0x00000400) public static final intCHANNEL_IN_RIGHT 常量值:8 (0x00000008) public static final intCHANNEL_IN_RIGHT_PROCESSED 常量值:128 (0x00000080) public static final intCHANNEL_IN_STEREO 常量值:12 (0x0000000c) public static final intCHANNEL_IN_VOICE_DNLINK 常量值:32768 (0x00008000) public static final intCHANNEL_IN_VOICE_UPLINK 常量值:16384 (0x00004000) public static final intCHANNEL_IN_X_AXIS 常量值:2048 (0x00000800) public static final intCHANNEL_IN_Y_AXIS 常量值:4096 (0x00001000) public static final intCHANNEL_IN_Z_AXIS 常量值:8192 (0x00002000) public static final intCHANNEL_OUT_5POINT1 常量值:252 (0x000000fc) public static final intCHANNEL_OUT_7POINT1 常量值:1020 (0x000003fc) public static final intCHANNEL_OUT_BACK_CENTER 常量值:1024 (0x00000400) public static final intCHANNEL_OUT_BACK_LEFT 常量值:64 (0x00000040) public static final intCHANNEL_OUT_BACK_RIGHT 常量值:128 (0x00000080) public static final intCHANNEL_OUT_DEFAULT 默认的音频通道掩码。 常量值:1 (0x00000001) public static final intCHANNEL_OUT_FRONT_CENTER 常量值:16 (0x00000010) public static final intCHANNEL_OUT_FRONT_LEFT 常量值:4 (0x00000004) public static final intCHANNEL_OUT_FRONT_LEFT_OF_CENTER 常量值:256 (0x00000100) public static final intCHANNEL_OUT_FRONT_RIGHT 常量值:8 (0x00000008) public static final intCHANNEL_OUT_FRONT_RIGHT_OF_CENTER 常量值:512 (0x00000200) public static final intCHANNEL_OUT_LOW_FREQUENCY 常量值:32 (0x00000020) public static final intCHANNEL_OUT_MONO 常量值:4 (0x00000004) public static final intCHANNEL_OUT_QUAD 常量值:204 (0x000000cc) public static final intCHANNEL_OUT_STEREO 常量值:12 (0x0000000c) public static final intCHANNEL_OUT_SURROUND 常量值:1052 (0x0000041c) public static final intENCODING_DEFAULT 默认的音频数据格式 常量值:1 (0x00000001) public static final intENCODING_INVALID 无效的音频数据格式 常量值:0 (0x00000000) public static final intENCODING_PCM_16BIT 音频数据格式:脉冲编码调制(PCM)每个样品16位。设备保证提供支持。(参见:这里) 常量值:2 (0x00000002) public static final intENCODING_PCM_8BIT 音频数据格式:脉冲编码调制(PCM)每个样品8位。设备不保证提供支持。 常量值:3 (0x00000003) 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582354,如需转载请自行联系原作者

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

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

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

Android API 中文 (55) —— ListAdapter

正文 一、结构 public interfaceListAdapterextendsAdapter android.widget.ListAdapter 直接子类 ArrayAdapter<T>, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, WrapperListAdapter 二、概述 扩展Adapter是在ListView与数据之间的一座桥梁。通常数据来自于游标,但不是必须的。ListView可以显示包含在ListAdapter里的所有数据。 三、公共方法 public abstract booleanareAllItemsEnabled() 在ListAdapter中所有的项目都是可用的?如果是,则代表所有的项目都是可选择,可用鼠标点击的。 返回值 如果所有项目是可用的返回真 public abstract booleanisEnabled(int position) 如果指定的位置不是一个隔离(separator)项目(隔离项目是一个不可选择,不可用鼠标点击的项目)则返回真。如果位置是无效的,其结果将是不确定的。在这种情况下一个ArrayIndexOutOfBoundsException(越界)异常将抛出。 参数 position项目的索引 返回值 如果这个项目不是一个隔离(separator)项目则返回真。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582570,如需转载请自行联系原作者

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

ElasticSearch1.7 java api

package cn.xdf.wlyy.solr.utils; import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.ResourceBundle;import java.util.concurrent.ExecutionException; import org.apache.commons.lang.StringUtils;import org.apache.log4j.Logger;import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;import org.elasticsearch.action.delete.DeleteResponse;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.action.search.SearchRequestBuilder;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.action.update.UpdateRequest;import org.elasticsearch.action.update.UpdateResponse;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.ImmutableSettings;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.text.Text;import org.elasticsearch.common.transport.InetSocketTransportAddress;import org.elasticsearch.index.query.BoolQueryBuilder;import org.elasticsearch.index.query.QueryBuilder;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.search.SearchHit;import org.elasticsearch.search.SearchHits;import org.elasticsearch.search.highlight.HighlightField; import com.alibaba.fastjson.JSONObject; import cn.xdf.wlyy.bbyh.vo.SearchParVo;import cn.xdf.wlyy.utils.PagedResult; /** * Title. <br> * ElasticSearch工具类. * <p> * Copyright: Copyright (c) 2017年7月7日 下午1:09:36 * <p> * <p> * Author: jinxudong@xdf.cn * <p> * Version: 1.0 * <p> *//** * Title. <br> * ElasticSearch 工具类. * <p> * Copyright: Copyright (c) 2017年7月10日 上午9:05:30 * <p> * 2016-3-21 Company: 北京新东方学校 * <p> * Author: jinxudong@xdf.cn * <p> * Version: 1.0 * <p> */public class EsUtil { /** 启用日志 */ private static Logger logger = Logger.getLogger(EsUtil.class); private static TransportClient client; private static ResourceBundle resource = ResourceBundle.getBundle("es"); /** 索引库名称 */ private static String index = resource.getString("es.db"); /** 索引表名称 */ private static String type = resource.getString("es.table"); /** 集群分片数 */ private static String shards_str = resource.getString("es.shards"); private static Integer shards = Integer.parseInt(shards_str); private static SearchRequestBuilder searchRequestBuilder; // 获取集群名称 private static String clustername = resource.getString("es.cluster.name"); // 获取集群ip/域名 private static String hostname = resource.getString("es.hostname"); // 获取第一个节点端口号 private static String port1 = resource.getString("es.port.one"); // 获取第一个节点端口号 private static String port2 = resource.getString("es.port.two"); private static Settings settings; //es加载一次 避免多次链接造成内存溢出 或者使用单例模式 static { settings = ImmutableSettings.settingsBuilder() // client.transport.sniff=true // 客户端嗅探整个集群的状态,把集群中其它机器的ip地址自动添加到客户端中,并且自动发现新加入集群的机器 .put("client.transport.sniff", true).put("client", true)// 仅作为客户端连接 .put("data", false).put("cluster.name", clustername)// 集群名称 .build(); client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress(hostname, Integer.parseInt(port1)))// TCP // 连接地址 .addTransportAddress(new InetSocketTransportAddress(hostname, Integer.parseInt(port2))); } /** * 创建索引 写入elasticsearch * * @param jsonlist * 要创建索引的jsonlist数据 */ public static void createIndex(List<JSONObject> jsonlist) { try { // 创建索引 for (int i = 0; i < jsonlist.size(); i++) { IndexResponse indexResponse = client.prepareIndex(index, type, jsonlist.get(i).getString("id")).setSource(jsonlist.get(i).toString()) .execute().actionGet(); if (indexResponse.isCreated()) { logger.info("写入索引库成功..."); } else { logger.info("写入索引库失败..."); } } } catch (Exception e) { logger.error(e); } } /** * 根据索引id删除 * * @param uids * 索引id */ public static void deleteIndex(List<String> uids) { for (int i = 0; i < uids.size(); i++) { DeleteResponse dResponse = client.prepareDelete(index, type, uids.get(i)).execute().actionGet(); if (dResponse.isContextEmpty()) { logger.info(uids.get(i) + "删除成功..."); } else { logger.info(uids.get(i) + "删除失败..."); } } } /** * 根据索引名称删除 * * @param indexName * 索引库名称 */ public static void deleteIndexLib(String indexName) { DeleteIndexResponse dResponse = client.admin().indices().prepareDelete(indexName).execute().actionGet(); if (dResponse.isContextEmpty()) { logger.info(indexName + "删除成功。"); } else { logger.info(indexName + "删除失败"); } } /** * @param uid * 要更新的索引id * @param json * 要更新的json数据 */ public static void updateIndex(String uid, JSONObject json) { UpdateRequest updateRequest = new UpdateRequest(); updateRequest.index(index); updateRequest.type(type); updateRequest.id(uid); updateRequest.doc(json); try { UpdateResponse updateResponse = client.update(updateRequest).get(); if (!updateResponse.isCreated()) { logger.info(uid + "更新成功"); } else { logger.info(uid + "更新失败"); } } catch (InterruptedException e) { // TODO Auto-generated catch block logger.error(e); } catch (ExecutionException e) { // TODO Auto-generated catch block logger.error(e); } } /** * 多字段查询 * * @param pageSize * 页面大小 * @param keyword * 查询关键字 * @param columns * 不确定多个索引字段 * @return map集合 map.put("dispage", disPage); map.put("jsonlist", * resultlist); */ public static Map<String, Object> query(Integer pageSize, Integer currentNo, SearchParVo vo, String... columns) { searchRequestBuilder = client.prepareSearch(index); HashMap<String, Object> map = new HashMap<String, Object>(); // 搜索结果集 List<JSONObject> resultlist = new ArrayList<JSONObject>(); QueryBuilder qb = null; QueryBuilder qb_state = null; QueryBuilder qb_dept = null; QueryBuilder qb_item = null; QueryBuilder qb_subject = null; QueryBuilder qb_regtype = null; QueryBuilder qb_disway = null; BoolQueryBuilder querybuilder = QueryBuilders.boolQuery(); if (StringUtils.isNotBlank(vo.getTitle())) { qb = QueryBuilders.multiMatchQuery(vo.getTitle(), columns); querybuilder.must(qb); // 必要条件 查询需要显示的内容 qb_state = QueryBuilders.matchPhraseQuery("state", "1"); querybuilder.must(qb_state); if (StringUtils.isNotBlank(vo.getDid())) { qb_dept = QueryBuilders.matchPhraseQuery("d_id", vo.getDid()); querybuilder.must(qb_dept); } if (StringUtils.isNotBlank(vo.getIid())) { qb_item = QueryBuilders.matchPhraseQuery("i_id", vo.getIid()); querybuilder.must(qb_item); } if (StringUtils.isNotBlank(vo.getSid())) { qb_subject = QueryBuilders.matchPhraseQuery("s_id", vo.getSid()); querybuilder.must(qb_subject); } if (StringUtils.isNotBlank(vo.getRegtype())) { qb_regtype = QueryBuilders.matchPhraseQuery("registration_type", vo.getRegtype()); querybuilder.must(qb_regtype); } if (StringUtils.isNotBlank(vo.getDisway())) { qb_disway = QueryBuilders.matchPhraseQuery("discount_way", vo.getDisway()); querybuilder.must(qb_disway); } } else { qb = QueryBuilders.matchAllQuery(); querybuilder.must(qb); } searchRequestBuilder.setQuery(querybuilder); SearchResponse response = searchRequestBuilder.execute().actionGet(); SearchHits hits = response.getHits(); // 记录总数 long total = hits.totalHits(); // 计算总页数 int totalPages = totalPage(1, pageSize, (int) total); // 每次开始的位置 int start = (currentNo - 1) * pageSize; // 添加高亮字段 searchRequestBuilder.addHighlightedField("title"); searchRequestBuilder.setHighlighterPreTags("<span style=\"color:red\">"); searchRequestBuilder.setHighlighterPostTags("</span>"); response = searchRequestBuilder.setFrom(start).setSize(pageSize).execute().actionGet(); SearchHit[] searchHits = response.getHits().hits(); // 封装分页对象信息 PagedResult disPage = new PagedResult(); disPage.setTotal(total); disPage.setPages(totalPages); disPage.setPageNo(currentNo); disPage.setPageSize(pageSize); for (SearchHit searchHit : searchHits) { Map<String, Object> dd = searchHit.getSource(); JSONObject json = (JSONObject) JSONObject.toJSON(dd); // 从设定的高亮域中取得指定域 Map<String, HighlightField> result = searchHit.highlightFields(); HighlightField titleField = result.get("title"); if (titleField != null) { // 取得定义的高亮标签 Text[] titleTexts = titleField.fragments(); // 为title串值增加自定义的高亮标签 String title = ""; for (Text text : titleTexts) { title += text; } json.put("title", title); } resultlist.add(json); } map.put("dispage", disPage); map.put("jsonlist", resultlist); return map; } /** * @param currentNo * 当前页 * @param pageSize * 一页显示多少条记录 * @param totalNum * 总记录 * @return */ public static int totalPage(Integer currentNo, Integer pageSize, int totalNum) { int totalPages = 0; if (totalNum % pageSize == 0) { totalPages = totalNum / pageSize; } else { totalPages = totalNum / pageSize + 1; } return totalPages; }}

资源下载

更多资源
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部分的功能。

用户登录
用户注册