这两天新版界面改版,有个页面要求搜索栏跟随滑动会位移和缩放, 心想这还不简单么,具体如下是实现好的效果:

心想这还不简单么,第一想法是用 recyclerView.addOnScrollListener 计算好Y轴移动的距离和x缩放值再根据这些算出X轴偏移位置不就ok了么。

想法总是美好的,现实总是残酷的,view自带的setScale 缩放后导致搜索栏里的文字和图片同时放大到变形,背景图两侧也被拉伸,丑哭。

那动态设置view的宽度不就可以了么,继续试一下。。。

结果可想而知,不然就不会有这篇文章了,动态设置宽度用在addOnScrollListener里根本不起作用,直觉告诉我不能这么下去了

第二个想法是放弃这种方法,用CoordinatorLayout 相关去实现,当然还没开始动手,由于没有用过,得先去了解了一下 ,看着效果不错哦 用着简单 ,大致如下面这样

嗯。。相关的资料也了解的差不多了,也让我放弃这个方法了, 为什么呢。 。。这原理其实还是一样的啊 。。不还得缩放么 ,就是换一种方法实现而已。

由于工期紧张,本人又懒,直觉告诉我你别去找别的方法了,我说好吧, 那就用个笨方法实现吧, 反正实现出这个效果就好咯。对了,其中百度的时候有个平滑过度的,用不上啊,这个得根据滑动实时变化,动画方面好多学习还不深入,就当抛砖引玉了吧。

首先说下思路:

没有实现的主要问题是缩放时textview的拉伸问题,平移的值其实很好算,那就解决拉伸变形的问题不就可以了么。

由于人小白又笨暂时还没有特别好的方法,只是把自己的思路分享一下,大家有更好的方法欢迎沟通

第一步,我们不能缩放整个view,那我们可以吧view拆分成三部分,只缩放中间只有部分背景的地方,两侧view继续位移不影响

大致如下图, 这个是我计算偏移量的时候画的草图 :

因为控件放大后位置大小是固定的,在标题栏由于分辨率不同,位置不可控,所以我们要逆向推这个动画,控件默认放在顶端,计算平移到下方的所有改变的值。

接下来就是一顿算, 极致的发挥了小学数学的课本知识后,分别算出view1的X,Y偏移量,View3的X,Y的偏移量,最后算出中间view要缩放的值 ,再计算出偏移量 , 思路问题基本解决了

        float y = scale * searchHeightDP;float ty = (1 - scale) * titleHeightDP;float x = scale * getTrX(search_txt);
//        float sx = 1 + scale * getScX(search_txt, v_center, v_right); // 1是正好值但是有间隙float sx = 2 + scale * getScX(search_txt, v_center, v_right);float rightX = scale * getRiTrX(v_right);float centerX = scale * getCX(search_txt, v_right);float al = scale * 1;search_txt.setTranslationY(DensityUtil.dip2px(context, y));v_center.setTranslationY(DensityUtil.dip2px(context, y));v_right.setTranslationY(DensityUtil.dip2px(context, y));search_txt.setTranslationX(-x);v_center.setTranslationX(centerX);v_right.setTranslationX(rightX);v_center.setScaleX(sx);

注释的部分会有间隙 所以加了点值 ,所以导致这个搜索栏的背景不可以为透明,会“露馅”。

思路问题解决后就是具体微调了 。

调用时scale 设置为1- scale ,动画就反过来了

因为涉及到获取view宽高,oncrete里初始化会没变化,或者有问题,只需要在onWindowFocusChanged里重新设置一次默认值即可 。源码我会稍后放出来

背景也要适当修改,中间wiew建议用imageview 设置src,具体如图 

第一次写文章感觉写的有点乱 ,但是原创希望大家多多支持,欢迎互相探讨, qq 399140867

由于是公司项目,只上传了关键部分和使用方法,背景布局需自己写,标题栏下部需要流出一部分供执行动画,上方的是搜索栏位置可以改的

源码下载地址: https://download.csdn.net/download/u013140516/10850664

android 搜索栏滑动跟随缩放和移动,缩放变形问题相关推荐

  1. Android自定义-滑动缩放渐变填充曲线折线图表

    文章目录 自定义 一.基础操作 1.新建类 2.坐标系 3.简单的折线图 二.修饰折线图 1.折线图添加文字修饰. 三. 任意区域`可点击`的折线图 1.画布区域点击事件 1.区域点击带来的精彩 四. ...

  2. android 手势事件 重写,Android实现通过手势控制图片大小缩放的方法

    本文实例讲述了Android实现通过手势控制图片大小缩放的方法.分享给大家供大家参考,具体如下: 该程序实现的是通过手势来缩放图片,从左向右挥动图片时图片被放大,从右向左挥动图片时图片被缩小,挥动速度 ...

  3. 让Android自带的Gallery实现多点缩放,拖动和边界回弹效果,效果流畅

    http://www.havenliu.com/android/668.html 公司项目要开发一个Android看漫画的软件.看了效果,需要滑动翻页,多点缩放,拖动等.但看每个效果在android上 ...

  4. android layout后还原位置,Android图片框架photoview如何记住所有状态并还原,包括缩放度,缩放后的移动的距离等等...

    Android图片框架photoview如何记住状态并还原,包括缩放度,缩放后的移动的距离等等,尝试了好多方法都没有作用. private void generateImages() { for (i ...

  5. Android Property Animation属性动画:scale缩放动画(4)

     Android Property Animation属性动画:scale缩放动画(4) 和之前我写的附录文章1,2,3相似,本文将接着使用Android Property Animation属性 ...

  6. echarts横向滚动_ECharts滑动条型数据区域缩放组件(dataZoomSlider)

    dataZoom[i]-slider 滑动条型数据区域缩放组件(dataZoomSlider) dataZoom[i]-slider.type   |   string [ default: 'sli ...

  7. Android matrix 控制图片的旋转、缩放、移动

    本文主要讲解利用android中Matrix控制图形的旋转缩放移动,具体参见一下代码: /** * 使用矩阵控制图片移动.缩放.旋转 * @author 张进 */ public class Comm ...

  8. android scaleanimation动画,Animation之ScaleAnimation(缩放动画片)

    Animation之ScaleAnimation(缩放动画) ScaleAnimation(缩放动画) 缩放的意思就是对图片或者文字等进行扩大或缩小.下面开始编写代码,相关重要属性参数的解释都在代码中 ...

  9. android淡入淡出动画循环,Android应用开发之淡入淡出、缩放、旋转、平移、组合动画效果代码实现...

    本文将带你了解Android应用开发Android动画开发之淡入淡出.缩放.旋转.平移.组合动画效果代码实现,希望本文对大家学Android有所帮助. 1.activity_main.xml文件 an ...

最新文章

  1. TestNG学习随笔
  2. 使用PlanAhead查看Virtex-7系列FPGA的底层架构
  3. MQTT——控制报文格式
  4. iOS开发网络篇—使用ASI框架进行文件下载
  5. PTA浙大版python程序设计题目集--第2章-4 特殊a串数列求和 (20 分)
  6. CSS基础学习-6.CSS属性_列表、表格
  7. 从零开始编写自己的C#框架(20)——框架异常处理及日志记录
  8. 面试必会系列 - 1.1 Java SE 基础
  9. 《深入浅出数据分析》第十章第十一章
  10. 电商订单ElasticSearch同步解决方案--使用logstash
  11. git commit 规范校验配置和版本发布配置
  12. 【PAT】2020年春季考试乙级题目、答案、摸鱼、游记、93分
  13. BusyBox 中添加新命令
  14. Depth Map Prediction from a Single Image using a Multi-Scale Deep Network(NIPS2014)论文阅读
  15. 设置java环境变量path_配置java环境变量path怎么设置
  16. 在从服务器接收结果时发生传输级错误。(provider: TCP 提供程序, error: 0 - 信号灯超时时间已到)...
  17. photoshop 插件_所有设计师必须拥有的20个免费和有用的Photoshop插件
  18. 大数据第三季--Hbase(day6)-徐培成-专题视频课程
  19. 8uftp更改上传的网页内容
  20. 为什么快捷指令无法将媒体转换为文本_快捷指令自动化可以做什么,不能做什么?...

热门文章

  1. 吃鸡不能玩显示服务器错误,绝地求生游戏报错解决方法汇总
  2. 好压打开压缩包文件名乱码问题一步教你解决
  3. 0c400汇编语言地址,在S7300/400型PLC中使用高级语言编程实例
  4. 论文阅读:ResMLP: Feedforward networks for image classification with data-efficient training
  5. 解读Go语言的2020:变革前夜
  6. 苹果手机壳_全包边苹果液态硅胶手机壳!品质超级无敌好!
  7. 收拾好心情,抬头看看空旷的天空,续继往前走
  8. 【解决方案】高速公路视频安全管理平台EasyCVR视频智能分析安防监控助力高速安全、实施紧急救援
  9. js实现页面跳转并传值
  10. SVG阴影滤镜及渐变基础