Intereting Posts
Анимация текстового размера TextView Сохранение пользовательского интерфейса при изменении ориентации – onSaveInstanceState не работает, как ожидалось, если сохранить фрагмент Добавьте указанное пользователем место в поле ввода, нажав кнопку, чтобы остановить геокомплект Лучшие практики Android для решения проблемы с пакетом пакетов Рисование большого фонового изображения с помощью libgdx – лучшие практики? Как вы можете сделать поддержку распознавания речи эмулятором Android Как изменить размер растрового изображения в Android? Понимание MvxCachingFragmentCompatActivity Как программно добавлять подписки на календарь на Android? React Native – initialProperties Android Как установить ширину ListView в PopupWindow на Android? Аксессуар (аналогичный inputAccessoryView для iOS) для Android-клавиатуры Снимок экрана SurfaceView в андроиде Хранение ресурса Bitmap в статической переменной Плюсы и минусы использования Thread или TimerTask для Android-игры

TextView расширяет анимацию, как в Android Market

Может ли кто-нибудь указать на решение, как сделать анимацию расширения описания TextView в анимации Android Market? Есть TextView, завернутый в FrameLayout, который расширяется после нажатия на метку More.

Решение:

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