Android 一些Api说明
来源:互联网 发布:淘宝家装类目 编辑:程序博客网 时间:2024/06/16 11:44
做上层App开发,对上层原生的一些View的定制、重写,熟悉它们的API很有必要,在这里记录一些,
曾经遇到过的,感觉比较有用的API
ViewParent
bringChildToFront(View child); 把该视图置于其他所有子视图之上,如在FrameLayout中切换被叠放的视图。ViewManager : updateViewLayout(View view, ViewGroup.LayoutParams params); //更新LayoutParams
View
public void getHitRect(Rect outRect); 获取当前view在父view中的矩形范围,需要在测量后才能获取
public void getLocationInWindow(int[] location); window中的位置 (比如dialog就是一个window,它里的location与screen中的location坐标是不一样的)
public void getLocationOnScreen(int[] location); screen中的绝对位置
public void getFocusedRect(Rect r); 默认返回drawingRect. 如果对于焦点view含有其它的想法:如cursor、选中的行或列,那么需要重写该方法,并fill rect
public final boolean getGlobalVisibleRect(Rect r); 返回view在屏幕中的可见区rect。 true表示有可见区,false无
public boolean getGlobalVisibleRect(Rect r, Point globalOffset); //globalOffset也是传入参数,内部set它的值
if (globalOffset != null) {
globalOffset.set(-mScrollX, -mScrollY);
}
public final boolean getLocalVisibleRect(Rect r); 返回view相对于自身左顶点的rect区
AbsListView
public int pointToPosition(int x, int y); 返回点(x,)所在item的position
ViewGroup extends View implements ViewParent, ViewManager
getChildDrawingOrder返回当前迭代子视图的索引,即获取当前正在绘制的视图索引.
如果需要改变ViewGroup子视图绘制的顺序,则需要重载这个方法.并且需要先调用 setChildrenDrawingOrderEnabled(boolean) 方法来启用子视图排序功能.
isChildrenDrawingOrderEnabled() 获取当前这个ViewGroup是否是按照顺序进行绘制的.
setClipToPadding(boolean); 否要在他应有的边界内进行绘制android:clipToPadding
setClipChildren(boolean); 子是否要在他应有的边界内进行绘制android:clipChildren
RecyclerView不再负责Item的摆放等显示方面的功能。所有和布局、绘制等方面的工作,被拆分成不同的类进行管理。
所以开发者可以自定义各种各样满足定制需求的的功能类。面是一些和RecyclerView相关的非常重要的类列表。
RecyclerView.Adapter:包装数据集合并且为每个条目创建视图。
RecyclerView.ViewHolder:保存用于显示每个数据条目的子View。
LayoutManager:将每个条目的视图放置于适当的位置。
ItemDecoration:在每个条目的视图的周围或上面绘制一些装饰视图。
ItemAnimator:在条目被添加、移除或者重排序时添加动画效果。
itemview有焦点时,key操作才能滚动、换页;
RecyclerView 本身也没有处理item事件的接口,需要自行添加
public static abstract class Adapter<VH extends ViewHolder>定义在RecyclerView内部
public abstract VH onCreateViewHolder(ViewGroup parent, int viewType); //创建viewHolder
public abstract void onBindViewHolder(VH holder, int position);//bindViewHolder
public static abstract class LayoutManager 定义在RecyclerView内部
getItemCount()内部调用adapter.getItemCount()
getColumnCountForAccessibility(null, null)返回spanCount -- 分隔列数
getRawCountForAccessibility(null, null)返回spanCount -- 分隔行数
StaggeredGridLayoutManager extends RecyclerView.LayoutManager
findViewByPosition(int position);
findFirstCompletelyVisibleItemPositions(int[] into); 首次完全可见的view位置,参数传入空数组。若是纵向,length为列数;横向为行数
findLastCompletelyVisibleItemPositions(int[] into);
findFirstVisibleItemPositions(int[] into); 首次可见的view位置(即使部份可见)
findLastVisibleItemPositions(int[] into);
View findContainingItemView(View view);
LinearLayoutManager extends RecyclerView.LayoutManager
findViewByPosition(int position);
findFirstCompletelyVisibleItemPosition(); 首个完全可见的View位置
findLastCompletelyVisibleItemPosition();
findFirstVisibleItemPosition(); 首个可见位置(即使部份可见)
findLastVisibleItemPosition();
View findContainingItemView(View view);
Activity
getWindow().getDecorView(); decorView是window中的最顶层view
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); 获取到程序显示的区域,包括标题栏,但不包括状态栏 rect.top = 状态栏高度
getWindow().findViewById(Window.ID_ANDROID_CONTENT); 获取window中程序实际所在view区域 不含标题栏、状态栏
getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop() - rect.top = 标题栏的高度
1 0
- Android 一些Api说明
- 关于Android使用新浪API的一些说明
- Shell API 的一些说明
- android api 说明
- Facebook的API的一些说明
- Facebook的API的一些说明
- SCTP 协议的一些API说明
- lxml.etree API的一些细节说明
- ]Android ADT SDK API 说明
- android LOCAL_MODULE_TAGS 的一些说明
- android window 一些属性说明
- android window 一些属性说明
- Android-MaterialRefreshLayout的一些说明
- android window 一些属性说明
- android window 一些属性说明
- Android API 的一些问题
- Google Maps Android API v2说明
- android 百度地图API使用教程说明
- 探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤
- Android常用布局各个属性的含义
- 替换指定位置的字符Remove,Insert,charAt
- python模块1
- 建站教程
- Android 一些Api说明
- 阶段总结
- ffmpeg常用命令
- node.js stream I
- QT绘图应用2:利用Qt绘制直方图和分位数图
- do {...} while (0) 的用途汇总(欢迎补充)
- 列变位法解密
- Mac OS Terminal设置
- js替换字符串replace()函数的用法