Android 一些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 = 标题栏的高度




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值