Android 一些Api说明
做上层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说明相关推荐
- Android的API与差异化之路
Android的API与差异化之路 发挥Android特色:框架API和开源(开放) Android平台就如同×××长城般,两岸的硬件业厂商 ...
- Android 中文API (94) —— MediaController
前言 本章内容是android.widget.MediaController,版本为Android 2.3 r1,翻译来自"唐明",再次感谢"唐明" !期待你一 ...
- Android 中文 API 文档 (45) —— AbsoluteLayout.LayoutParams
前言 本章内容是 android.widget.AbsoluteLayout.LayoutParams,版本为Android 2.2 r1,翻译来自"绵白糖",再次感谢" ...
- Android 中文API (92) —— MenuInflater
前言 本章内容是android.view.MenuInflater,版本为Android 2.3 r1,翻译来自"獨鍆躌踄",欢迎大家访问他的博客:http://www.cnblo ...
- Android 中文 API (90) —— WindowManager
一.结构 public interface WindowManager extends android.view.ViewManager android.view.WindowManager 二.概述 ...
- Android 中文API (70) —— BluetoothDevice[蓝牙]
前言 本章内容是 android.bluetooth.BluetoothDevice,为Android蓝牙部分的章节翻译.蓝牙设备类,代表了蓝牙通讯国足中的远端设备.版本为 Android 2.3 r ...
- Android 设备管理API概览(Device Administration API)
原文:http://android.eoe.cn/topic/android_sdk Android 2.2通过提供Android设备管理API的支持来引入企业应用支持.在系统级的设备管理API提供了 ...
- Android中文API(127) —— MessageQueue
结构 继承关系 public class MessageQueue extends Object java.lang.Object android.os.MessageQueue 类概述 保存消息列表 ...
- android 中文 API (41) —— RatingBar.OnRatingBarChangeListener
前言 本章内容是 android.widget.RatingBar.OnRatingBarChangeListener,版本为Android 2.2 r1,翻译来自madgoat,欢迎大家访问他的博客 ...
- Android 中文API (91) —— GestureDetector
前言 本章内容是android.view.GestureDetector,版本为Android 2.3 r1,翻译来自"Haiya 胡蝶",再次感谢"Haiya 胡蝶&q ...
最新文章
- 序列信号产生器的verilog HDL 设计
- 【转】Docker 运行时资源限制-内存memory、交换机分区Swap、CPU
- 2013\National _C_C++_A\4.约数倍数选卡片
- Gartner:6个容器和Kubernetes策略的最佳实用技巧
- mupdf不支持x64_Delphi xe2使用x64编译器编译ASM代码时出错 . 不支持的语言功能:'ASM'...
- Python编程从入门到实践~文件写入
- 设计模式 建造者模式
- c语言全国计算机真题及答案,全国计算机C语言考试真题及答案.doc
- 13.3 mysql常用命令
- 快捷键打开管理员cmd
- PHP生成缩略图、加水印
- 如何在MATLAB画一个首尾相连的数据矩阵图形
- charles https 抓包
- 利用Python进行股票交易分析(三):A股量化交易策略的验证及数据分析。
- android修改虚拟内存(方法)
- RHEL5配置Samba服务器实现文件共享
- E10下64位浏览器与32位浏览器切换教程
- 大数据技术怎么学习,需要具备什么基础?简单说一下
- 【视频】极值理论EVT与R语言应用:GPD模型火灾损失分布分析
- 优雅的使用windows