项目上需要一个点击输入框,然后输入框拉长的需求,自己参考了别人的两个案例简单地实现了一下,作为一个新人开发来说,思路很简单,但是也是相当花时间。本人开发时间不足一年,所以写的代码可能有点烂,如有何处处理不当或者错误的地方请直说。
太年轻走了太多弯路。之后也有遇到更好的方案,但也没更新这篇文。
直接使用ObjectAnimator对view进行控制,不需要啰里啰唆这么多代码。
ObjectAnimator.ofInt(view, "width", view.getWidth(), maxValue).setDuration(duration).start();
与之前不同的是少了通过view当前的宽度在目标宽度的比例乘以默认持续时长duration得到需要的时长。
不加的原因有两个:1、动画时间较短,这部分的时间差基本很难感受到差别。2、增加时间计算的话又会啰里啰唆加很多代码。所以在投入较多收益不高的情况下选择性价比最高的方案。
已更新至Github
============================================================
以下内容过时,暂时留做记录
日常的基于百度的项目开发与实现 笑 。进入百度搜索能找到类似需求的这两片文章
第一篇排版有点乱,原谅我没怎么仔细看下去,原理应该是通过ScrollView的滚动监听然后设置搜索框的宽度,稍微仔细阅读过后发现竟然继承了ScrollView自定义了一个,这个处理方法在我觉得不太简单方便。开头的动图发现作者对动画的过度不够平滑,还有就是搜索框展开了之后都突出屏幕了,这些都是细节的问题,虽然是个demo但是看着也有点难受。
第二篇也差不多,不过在动画方面利用了系统提供的Transition提供了一个不错的效果,就算在Android 5.0以下,只要引入api 'com.android.support:design:25.3.1'就没有问题,但是我就是想自己试试,而且在看到需求的时候就已经有用属性动画的想法了,而Transition刚好是属性动画的封装,所以就尝试着自己写了一下。事实证明,还是调用现有的比较方便,不过自己写一遍也算是有点收获吧。
先上一张自己做的效果图吧,效果也还行,不过写的过程中遇到的问题挺多的。最后卡了一下是git录制原因。说好的点击展开呢,怎么又变滑动展开了??其实有留点击展开的方法啦,只不过滑动看着更有意思!