android 2各textview 动画,TextView在Android Market中扩展动画

解:

private static int measureViewHeight( View view2Expand, View view2Measure ) {

try {

Method m = view2Measure.getClass().getDeclaredMethod("onMeasure", int.class, int.class);

m.setAccessible(true);

m.invoke(view2Measure,

MeasureSpec.makeMeasureSpec(view2Expand.getWidth(), MeasureSpec.AT_MOST),

MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

} catch (Exception e) {

return -1;

}

int measuredHeight = view2Measure.getMeasuredHeight();

return measuredHeight;

}

static public void expandOrCollapse( View view2Expand, View view2Measure,

int collapsedHeight ) {

if (view2Expand.getHeight() < collapsedHeight)

return;

int measuredHeight = measureViewHeight(view2Expand, view2Measure);

if (measuredHeight < collapsedHeight)

measuredHeight = collapsedHeight;

final int startHeight = view2Expand.getHeight();

final int finishHeight = startHeight <= collapsedHeight ?

measuredHeight : collapsedHeight;

view2Expand.startAnimation(new ExpandAnimation(view2Expand, startHeight, finishHeight));

}

class ExpandAnimation extends Animation {

private final View _view;

private final int _startHeight;

private final int _finishHeight;

public ExpandAnimation( View view, int startHeight, int finishHeight ) {

_view = view;

_startHeight = startHeight;

_finishHeight = finishHeight;

setDuration(220);

}

@Override

protected void applyTransformation( float interpolatedTime, Transformation t ) {

final int newHeight = (int)((_finishHeight - _startHeight) * interpolatedTime + _startHeight);

_view.getLayoutParams().height = newHeight;

_view.requestLayout();

}

@Override

public void initialize( int width, int height, int parentWidth, int parentHeight ) {

super.initialize(width, height, parentWidth, parentHeight);

}

@Override

public boolean willChangeBounds( ) {

return true;

}

};

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值