做上层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 = 标题栏的高度

Android 一些Api说明相关推荐

  1. Android的API与差异化之路

              Android的API与差异化之路                 发挥Android特色:框架API和开源(开放)     Android平台就如同×××长城般,两岸的硬件业厂商 ...

  2. Android 中文API (94) —— MediaController

    前言 本章内容是android.widget.MediaController,版本为Android 2.3 r1,翻译来自"唐明",再次感谢"唐明" !期待你一 ...

  3. Android 中文 API 文档 (45) —— AbsoluteLayout.LayoutParams

    前言 本章内容是 android.widget.AbsoluteLayout.LayoutParams,版本为Android 2.2 r1,翻译来自"绵白糖",再次感谢" ...

  4. Android 中文API (92) —— MenuInflater

    前言 本章内容是android.view.MenuInflater,版本为Android 2.3 r1,翻译来自"獨鍆躌踄",欢迎大家访问他的博客:http://www.cnblo ...

  5. Android 中文 API (90) —— WindowManager

    一.结构 public interface WindowManager extends android.view.ViewManager android.view.WindowManager 二.概述 ...

  6. Android 中文API (70) —— BluetoothDevice[蓝牙]

    前言 本章内容是 android.bluetooth.BluetoothDevice,为Android蓝牙部分的章节翻译.蓝牙设备类,代表了蓝牙通讯国足中的远端设备.版本为 Android 2.3 r ...

  7. Android 设备管理API概览(Device Administration API)

    原文:http://android.eoe.cn/topic/android_sdk Android 2.2通过提供Android设备管理API的支持来引入企业应用支持.在系统级的设备管理API提供了 ...

  8. Android中文API(127) —— MessageQueue

    结构 继承关系 public class MessageQueue extends Object java.lang.Object android.os.MessageQueue 类概述 保存消息列表 ...

  9. android 中文 API (41) —— RatingBar.OnRatingBarChangeListener

    前言 本章内容是 android.widget.RatingBar.OnRatingBarChangeListener,版本为Android 2.2 r1,翻译来自madgoat,欢迎大家访问他的博客 ...

  10. Android 中文API (91) —— GestureDetector

    前言 本章内容是android.view.GestureDetector,版本为Android 2.3 r1,翻译来自"Haiya 胡蝶",再次感谢"Haiya 胡蝶&q ...

最新文章

  1. 序列信号产生器的verilog HDL 设计
  2. 【转】Docker 运行时资源限制-内存memory、交换机分区Swap、CPU
  3. 2013\National _C_C++_A\4.约数倍数选卡片
  4. Gartner:6个容器和Kubernetes策略的最佳实用技巧
  5. mupdf不支持x64_Delphi xe2使用x64编译器编译ASM代码时出错 . 不支持的语言功能:'ASM'...
  6. Python编程从入门到实践~文件写入
  7. 设计模式 建造者模式
  8. c语言全国计算机真题及答案,全国计算机C语言考试真题及答案.doc
  9. 13.3 mysql常用命令
  10. 快捷键打开管理员cmd
  11. PHP生成缩略图、加水印
  12. 如何在MATLAB画一个首尾相连的数据矩阵图形
  13. charles https 抓包
  14. 利用Python进行股票交易分析(三):A股量化交易策略的验证及数据分析。
  15. android修改虚拟内存(方法)
  16. RHEL5配置Samba服务器实现文件共享
  17. E10下64位浏览器与32位浏览器切换教程
  18. 大数据技术怎么学习,需要具备什么基础?简单说一下
  19. 【视频】极值理论EVT与R语言应用:GPD模型火灾损失分布分析
  20. 优雅的使用windows

热门文章

  1. pycharm配置安装autopep8自动规范代码
  2. table合并单元格
  3. XXL-JOB配置笔记
  4. 敷完面膜后要擦水乳吗_敷完面膜后要不要擦爽肤水
  5. 移动数组中的所有零到数组的末尾
  6. 共享技术红利 美团点评全面开放云能力并发布三大类AI产品
  7. JavaScript发展历史(JS)
  8. Django作业管理系统(1)
  9. uni-app ,uni is not defind uView安装不了
  10. uni-app 使用web的echarts画图表