这个问题比较好玩,首先放上动画改变控件长宽的方法,比较简单,因为得通过LayoutParams设置宽高,所以说不能使用ObjectAnimator。

    private void animOut() {        ValueAnimator animator = ValueAnimator.ofInt(0, ScreenUtil.dip2px(25));        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator animation) {                ViewGroup.LayoutParams params = getLayoutParams();                params.height = (int) animation.getAnimatedValue();                setLayoutParams(params);            }        });        animator.setDuration(400);        animator.start();    }    private void animIn() {        ValueAnimator animator = ValueAnimator.ofInt(ScreenUtil.dip2px(25), 0);        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator animation) {                ViewGroup.LayoutParams params = getLayoutParams();                params.height = (int) animation.getAnimatedValue();                setLayoutParams(params);            }        });        animator.setDuration(400);        animator.start();    }

因为我是直接重写TextView,所以就没有tvXx.getLayoutParams了。

然后需要显示的话animOut() ;隐藏的话animIn() 

先确定一件事,上面的代码是正确的,可以使用的。当然假如你控件开始的时候是Gone就得先设置成VISIBLE。

失效的话,是隐藏的问题,它动画也会先进行,只是最后结果,却是本来高度为0的控件,变成WRAP_CONTENT,或者被拉伸,依旧显示在界面上。

碰到这种情况,比较偶然,当它的父布局是ConstraintLayout的时候就会最终控件无法隐藏。看到这里,有没有恍然大悟的。

问题就出现在 ValueAnimator.ofInt(ScreenUtil.dip2px(25), 0)  这里,可以看出,最终控件的高度是0,在ConstraintLayout布局中,高度是0代表着有高度,受到它边规则的影响,假如说他只有上面依赖于另一个控件,那他就是WRAP_CONTENT,假如上下都依赖了控件,他就会根据规则拉伸。

虽然没在LinearLayout里尝试,可以猜测,当设置了layout_weight属性,使用上面的animIn()也会出现这种问题。

 

解决办法,让该控件父布局不是ConstraintLayout,就行了。界面我也不贴了,就是一个小问题。

更多相关文章

  1. 【5年Android从零复盘系列之五】关于页面布局控件开发总结
  2. Android兼容android7.0、及Android8.0以上apk安装权限问题(二)
  3. Android(安卓)控件大全
  4. Android(安卓)开发中找不到 “gen”目录的问题
  5. Android(安卓)Studio:Fetching android sdk component informati
  6. 解决Android(安卓)自定义RatingBar 不能显示半星问题
  7. 三个博客和一张关系图,掌握Android(安卓)WebView控件
  8. Android界面开发问题总结
  9. java.lang.BootstrapMethodError: Exception from call site #1

随机推荐

  1. Android(安卓)Studio Gradle Could not r
  2. 初学者之Android(安卓)HelloWorld项目
  3. Android之Canvas绘图
  4. Android(安卓)实现简单的分页
  5. AIDL介绍
  6. android 学习之触摸事件 -- 认识MotionEv
  7. android JSON解析数据-解析天气预报
  8. android src 各个版本源码下载
  9. android与js之间的交互
  10. Android(安卓)5.0新控件常用属性收集