第三方开源库:nineoldandroid:ValueAnimator 动态设置textview的高
来源:互联网 发布:寻妈记 知乎 编辑:程序博客网 时间:2024/06/11 13:09
动态改变textview的高度。依赖jar:nineoldandroids-2.4.0.jar
效果图:
省份代码:
//1 默认不显示layout_provices.getLayoutParams().height = 0;layout_provices.requestLayout();//2 拿到布局的高layout_provices.measure(0, 0);maxHeight1 = layout_provices.getMeasuredHeight();layout_tv.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//3 创建ValueAnimator对象,这个必须放在监听中,因isOpen = !isOpen是动画执行后才执行的;if (isOpen) {animator = ValueAnimator.ofInt(maxHeight1,0);} else {animator = ValueAnimator.ofInt(0,maxHeight1);}//4 更新布局的监听animator.addUpdateListener(new AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator valueAnimator) {int height = (Integer) valueAnimator.getAnimatedValue();//5拿到实时高度layout_provices.getLayoutParams().height = height;layout_provices.requestLayout();//6 更新布局,让布局参数生效}});//执行动画及监听animator.setDuration(300).addListener(new LayoutTvAnimatorListener());animator.start();}});
class LayoutTvAnimatorListener implements AnimatorListener{ @Overridepublic void onAnimationCancel(Animator animator) {}@Overridepublic void onAnimationEnd(Animator animator) {isOpen = !isOpen;}@Overridepublic void onAnimationRepeat(Animator animator) {}@Overridepublic void onAnimationStart(Animator animator) {//旋转图片ViewPropertyAnimator.animate(iv_arrow).rotationBy(180).setDuration(300).start();} }
TextView代码:
/**
* 1 拿到textview的5行时候的高,和内容全部显示的时候的高
* 2 创建ValueAnimator对象,设置value的范围
* 3 给textview设置监听,获取实时高度,更新高度
*/
1 拿到textview的5行时候的高,和内容全部显示的时候的高
当textview的高度大于显示时的高度的时候,方法getMeasuredHeight是拿不到高度的。
只有 textView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() 可以
<span style="white-space:pre"></span>textView.setMaxLines(5);textView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {//当父布局完成后调用这个方法@Overridepublic void onGlobalLayout() {textView.getViewTreeObserver().removeGlobalOnLayoutListener(this);//即使移除监听minHeight = textView.getMeasuredHeight();//getHeight()也可以//获取textview内容全部显示时候的高,(放在外面无效)textView.setMaxLines(Integer.MAX_VALUE);textView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {textView.getViewTreeObserver().removeGlobalOnLayoutListener(this);maxHeight = textView.getHeight();//默认显示5行数据textView.getLayoutParams().height = minHeight;textView.requestLayout();}});}});
2 创建ValueAnimator对象,设置value的范围
3 给textview设置监听,获取实时高度,更新高度
textView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {ValueAnimator animator = null;if (isOpen2) {//设置value的变化范围animator = ValueAnimator.ofInt(maxHeight,minHeight);} else {animator = ValueAnimator.ofInt(minHeight,maxHeight);}//给animator设置监听,实时的获取变化中的高度,把高赋值给textviewanimator.addUpdateListener(new AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator valueAnimator) {int value = (Integer) valueAnimator.getAnimatedValue();textView.getLayoutParams().height = value;textView.requestLayout();}});animator.setDuration(300).addListener(new TvAnimatorListener());animator.start();}});
class TvAnimatorListener implements AnimatorListener{ @Overridepublic void onAnimationCancel(Animator animator) {}@Overridepublic void onAnimationEnd(Animator animator) {isOpen2 = !isOpen2;}@Overridepublic void onAnimationRepeat(Animator animator) {}@Overridepublic void onAnimationStart(Animator animator) {} }
代码:http://download.csdn.net/detail/ss1168805219/9489604
0 0
- 第三方开源库:nineoldandroid:ValueAnimator 动态设置textview的高
- 动态设置TextView的高度
- nineoldAndroid
- 关于textview的行高设置
- 设置TextView的关键字高亮
- TextView 设置每行的行高
- Android中动态设置TextView的颜色
- 动态的为TextView设置drawableBottom
- Android中动态设置TextView的颜色
- Android 动态设置TextView drawableLeft的方式
- Android动态设置TextView的文本格式
- 动态设置TextView的android:drawableLeft属性
- 动态设置TextView四周的图片
- Activity中动态设置TextView的颜色
- android动态设置TextView的textColor问题
- 动态设置TextView的drawable属性
- 动态设置textView 位置
- 动态设置TextView值
- 如何简单的集成TOUCH ID
- DNS域名解析过程
- 数据结构实验之二叉树五:层序遍历
- Redis 缓存 + Spring 的集成示例
- javascript cookie 实现 cookieStorage
- 第三方开源库:nineoldandroid:ValueAnimator 动态设置textview的高
- 计算机中整数的存储
- Unity 控制物体绕x,y,z 轴旋转
- So Easy!
- kaptcha 验证码组件
- iTestin测试记录
- 工作笔记之-GestureDetector手势检测
- Selenium2 Python 自动化测试实战学习笔记(三)
- 给出入栈序列,快速判断出栈序列是否合法