开发日志整理2【android layout用法注意点】

记得在开发的时候,想要实现一个动画效果。就是某个控件能够在focus的时候,自身的高度能够向上增长。

实现这个方法有好多种方法。比如采用动态改变控件的高度或者采用layout的方式。

一开始啥也没想,就用了layout方法在属性动画中valueAnimator里面去变化

先看下这个View.layout(int left, int top, int right, int bottom)

它里面的四个参数表示当前需要layout的控件在父控件内左,上,右,下四个点的坐标。

  • 所以第一个需要注意:

        坐标是父控件内部的相对坐标,而不是整个显示窗口的坐标。比如坐标(0, 0)的位置,指的就是父控件的左上方的那个点。


我的目标是动态增长,所以我在valueAnimator里面使用IntEvaluator去实现动态增长。

就是不断的去修改第二个参数从getTop()->0变化。

最终是成功了,但是遇到了个问题。就是有的时候这个已经增长了的控件会突然变回原样。一开始是以为动画执行的有问题。可后来发现并不如此。

  • 第二个注意:

         由于我这个view是个自定义Relativelayout,它里面还有一个textview控件,我的代码是需要通过网络读取一段文字的信息从远程服务器上。并且显示到这个textview上面。

         由于设置文字的时候触发了setText()导致了,子布局onlayout刷新,从而导致这个父控件也跟着刷新。触发了layout的重新计算,恢复到初始的状态。

        所以,有的时候相邻的layout或者子layout发生了变化,比如文字更新,图片刷新,大小变化等等,都会使得某个已经layout的view会重置。

  • 第三个注意:

        就是我这个布局里面的textview是设置成居中的,但是一旦我的自定义父布局由于layout的原因,高度发生了变化。这个原本居中的子布局textview并没有相应的也跟着居中。踌躇中。。。后来才知道layout只是会改变父控件的布局,但是并不会影响子控件的位置。说的再直白点 layout导致骨肉分离。你原本在layout.xml中设置的centerInParent这些完全无用。

         该怎么办呢?

        呵呵。。。。不卖关子了。。直说吧。。。就是采用view.getLayoutParams().heigh来动态修改控件属性从而保证子布局的一致性。记得最后要target.requestLayout.

经验所得,希望对大家能有所帮助,少走弯路。

    

      



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值