android布局放大缩小,android 评论框 缩小/放大

知识点学习地址

22087c9e50c7

图片.gif

需求

1、点击文本输入框,文本输入框整体拉长,右边的布局消失不见

2、点击空白的地方要进行还原的操作

开发期间遇见的问题

1、由于float类型和int类型的精度不同,会导致有些许误差,主要是因为etEditLayoutParams.width类型是int类型,所以在转换的时候会丢失进度,比如最后几次增加的dist是0.85748,在int类型下直接是0了,所以宽度就没那么宽了。那么我们就可以考虑进行四舍五入

2、当初我设置constraintLayout.setTranslationX,里面存放int类型,导致不能很好的展示数据,所以我们再设置值的时候需要设置float类型

总结

1、TextView在xml里面设置Width=100px,marginLeft=20px,textView.getWidth()为100px

2、在xml里面父布局是LinearLayout,子布layout_width=0dp,layout_weight=1,子view.getLayoutParams().width获取的宽度是0,只能通过子view.getWidth()才能获取到宽度

3、setTranslationX是属于属性动画,会改变点击位置

4、layoutParams.height 可以跟view.getHeight()不同,第一个是期望多高,第二个是最后显示在屏幕上真实的高度

部分代码展示

/**

* @date: 2019/7/4 0004

* @author: gaoxiaoxiong

* @description: 输入框展开

**/

private void etTextToExpand() {

final int[] constrainStart = {defaultConsoleLayout};

ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);

valueAnimator.setDuration(animatorDurtime);

valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

float currentValue = (float) animation.getAnimatedValue();//0---->1逐渐变大

float toSmalScale = 1 - currentValue;

float dist = constrainStart[0] - (constrainStart[0] * toSmalScale);//每次增加的量

//这里进行4舍五入的目的是为了保存缩小后的最大值,这样的误差才是最小的,用户看着不会别扭

constrainStart[0] = Math.round(constrainStart[0] * toSmalScale);//4舍五入

constraintLayout.setTranslationX(constraintLayout.getTranslationX() + dist);

//扩大

LinearLayout.LayoutParams etEditLayoutParams = (LinearLayout.LayoutParams) etFlowDetail.getLayoutParams();

etEditLayoutParams.width = etEditLayoutParams.width + Math.round(dist);//这里需要对每次增加的量进行四舍五入,因为它会直接影响到我最后的宽度因素

etFlowDetail.setLayoutParams(etEditLayoutParams);

}

});

valueAnimator.addListener(new Animator.AnimatorListener() {

@Override

public void onAnimationStart(Animator animation) {

}

@Override

public void onAnimationEnd(Animator animation) {

anmoIsLoading = false;

}

@Override

public void onAnimationCancel(Animator animation) {

}

@Override

public void onAnimationRepeat(Animator animation) {

}

});

valueAnimator.start();

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值