TextView展开Android Market中的animation

任何人都可以指出解决scheme如何在Android Marketanimation中扩展描述TextView的animation? 有TextView包装到FrameLayout后,点击“更多”标签后展开

Solutions Collecting From Web of "TextView展开Android Market中的animation"

解:

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; } };