-
Notifications
You must be signed in to change notification settings - Fork 1
ViewExtensions
燒餅 edited this page Jun 1, 2017
·
1 revision
ViewExtensions
主要提供视图(View)、界面尺寸单位计算等相关功能。
这个扩展主要功能如下:
为 View 重载了 get 运算符,可以使用 []
代替传统的 findViewById
和 findViewByTag
。
举个例子:
Java 传统写法:
EditText editText = (EditText) view.findViewById(R.id.edit_text);
使用了扩展的 Kotlin 写法:
val editText = view[R.id.edit_text] as EditText
Q: 为什么不引入泛型函数呢,这样可以节约一个 Cast 转换?
A: 目前引入泛型函数后还有一些问题,比如
[]
无法像 Anko 里面扩展的函数find<EditText>(R.id.edit_text)
那样声明返回值的类型。况且 Cast 加上会让代码更加清晰,暂时来说不会考虑。
-
View.showKeyboard()
- 显示软键盘 -
View.hideKeyboard()
- 隐藏软键盘
一般 EditText 在其它 View 进行了一些操作后(比如滑动列表)应当及时收起软键盘,可以借助这个扩展方法一行解决问题。
-
View.makeVisible()
使视图可见性为View.VISIBLE
-
View.makeInvisible()
使视图可见性为View.INVISIBLE
-
View.makeGone()
使视图可见性为View.GONE
Context.inflateView(idRes)
ViewGroup.inflateView(idRes)
纯属只是省略了 LayoutInflater.from(context)
这一步。
dpToPx
pxToDp
spToPx
pxToSp
支持 Int、Float 类型变量,在 dp ↔ px、sp ↔ px 之间的单位换算,需要传入 Context
获取系统 DPI。
Context.getStatusBarHeight()
获取状态栏高度,单位为 px。
-
View.takeScreenshot()
返回当前 View 截图 Bitmap -
View.takeScreenshotOfRootView()
返回根 View 截图 Bitmap -
View.takeScreenshotWithoutConstrains()
返回当前 View 截图 Bitmap(不受约束)