可以变形的自定义Layout
来源:互联网 发布:linux文件权限为400 编辑:程序博客网 时间:2024/04/30 00:32
做移动开发的,有时候觉得ios的一些动画设计很漂亮.
例如短信横滑弹出个Button,搜索框点击变窄.
然而这些在安卓上利用Animation确实无法做到的,
因为Animation是对控件整体而言的变形变化.
所以我也就做了一个自定义的Layout来实现ios上这些效果
暂且把这个效果叫做边界移动,TransformLayout
希望可以用这个控件让大家了解下
怎么制作动画,什么是插值器
上面三个蓝色的区域会根据你中间区域手指触摸的位置而改变右边的位置,
具体有三种显示的方式,改变内容大小,遮盖区域和移动区域.
然而,实际上容器的大小是没变的,还是占用原来的那部分区域
它仅仅是控制了Canvas的绘制区域,或是通知了ChileView的位置和大小.
这三种方式的关键代码为
1.TRANSFORM_CONTENT 关键代码:TransformLayout(line95) TransformLayout(line96)
2.TRANSFORM_SHADE 关键代码:TransformLayout(line108)
3.TRANSFORM_MOVE 关键代码:TransformLayout(line111)
开发过程,首先应编写变形一次的功能,即
setBorder(int left, int top, int right, int botom) 这个方法
测试如例子所示,通过touch来手动调用,查看变形效果,
然后再写动画变形功能,
通过利用Handler,第一次将Runable丢入, TransformLayout(line186)
而Runable也会延时将自己丢进去, TransformLayout(line203)
Runable当然也要有计算变形的参数和调用上面变形一次的方法了 TransformLayout(line202)
通过上面几步就可以将一个变形一次的功能转变为一个动画效果了!!
这里有个小技巧,通过利用数组,巧妙的省掉了3个if判断,不知道你学到了没~~ conveniently[whichSide]
另外这里有一个Interpolator的接口,叫做插值器,
可以理解为动画效果与时间t的函数关系,
ios上为啥觉得动画很顺眼,就因为有这个插值器婶婶的存在啊~~
我这里附送了一堆插值器,而安卓自身也提供了一部分,自己查查,
Animation也有setInterpolator()方法,要多多利用
读过高中的应该都知道什么叫含树了吧
在开源项目AndroidMiscWidgets可以查看插值器的函数图形和测试效果哦
例如短信横滑弹出个Button,搜索框点击变窄.
然而这些在安卓上利用Animation确实无法做到的,
因为Animation是对控件整体而言的变形变化.
所以我也就做了一个自定义的Layout来实现ios上这些效果
暂且把这个效果叫做边界移动,TransformLayout
希望可以用这个控件让大家了解下
怎么制作动画,什么是插值器
老习惯,先上图:
上面三个蓝色的区域会根据你中间区域手指触摸的位置而改变右边的位置,
具体有三种显示的方式,改变内容大小,遮盖区域和移动区域.
然而,实际上容器的大小是没变的,还是占用原来的那部分区域
它仅仅是控制了Canvas的绘制区域,或是通知了ChileView的位置和大小.
这三种方式的关键代码为
1.TRANSFORM_CONTENT 关键代码:TransformLayout(line95) TransformLayout(line96)
2.TRANSFORM_SHADE 关键代码:TransformLayout(line108)
3.TRANSFORM_MOVE 关键代码:TransformLayout(line111)
开发过程,首先应编写变形一次的功能,即
setBorder(int left, int top, int right, int botom) 这个方法
测试如例子所示,通过touch来手动调用,查看变形效果,
然后再写动画变形功能,
通过利用Handler,第一次将Runable丢入, TransformLayout(line186)
而Runable也会延时将自己丢进去, TransformLayout(line203)
Runable当然也要有计算变形的参数和调用上面变形一次的方法了 TransformLayout(line202)
通过上面几步就可以将一个变形一次的功能转变为一个动画效果了!!
这里有个小技巧,通过利用数组,巧妙的省掉了3个if判断,不知道你学到了没~~ conveniently[whichSide]
另外这里有一个Interpolator的接口,叫做插值器,
可以理解为动画效果与时间t的函数关系,
ios上为啥觉得动画很顺眼,就因为有这个插值器婶婶的存在啊~~
我这里附送了一堆插值器,而安卓自身也提供了一部分,自己查查,
Animation也有setInterpolator()方法,要多多利用
读过高中的应该都知道什么叫含树了吧
在开源项目AndroidMiscWidgets可以查看插值器的函数图形和测试效果哦
这里下载吧 ♫ ♬ ♪ 想不到还要写什么了~~
- 可以变形的自定义Layout
- Android 自定义 一个可以控制子控件是否可以点击的layout
- Android 自定义Dialog可以传入layout
- 自定义的layout(实训)
- 自定义view的Layout过程
- 使用draggablegridview开源库添加自定义控件可以显示,添加自定义的layout文件可以显示背景色但是无法显示其控件
- 自定义Layout
- Android自定义带标题边框的Layout
- 继承Layout自定义View的问题
- 自定义layout中布局文件的属性
- Activity与顶层自定义Layout的通信
- 自定义actiongbar的layout和小知识点
- 【自定义view系列】View的layout过程
- Android自定义带标题边框的Layout
- layout中使用自定义的view
- iOS 返回一张可以随意拉伸不变形的图片
- 返回一张可以随意拉伸不变形的图片
- 解决FrameLayout上的Layout可以点击 下层的方法:
- 动态链接库的学习总结
- H264 NALU单元格式
- 笔记本电脑配置wifi
- ios 监听(NSNotification)的使用(在项目中已使用) .
- 调用其他照相机应用拍照
- 可以变形的自定义Layout
- Linux进程-进程的创建
- LoadRunner手动为参数化赋变量的值,循环创建Socket并发送Buf
- 6.2.1 继承映射:采用subclass元素的继承映射
- GitHub上最火的20个iOS开源项目
- window 定时关机 (夜间智能定时关机)
- jquery中国地图热点提示信息,可作链接特效
- 【PHP基础入门】配置Phpstorm与xampp
- Unity GL 绘制图形