Intereting Posts
Можете ли вы использовать один и тот же OnClickListener для разных кнопок? Завершение всех мероприятий, начатых до начала деятельности Масштабирование фонового изображения в LinearLayout Ошибка: невозможно найти adb в SDK в Android Studio Android добавляет подменю в menuItem, где есть addSubMenu ()? Как найти нетранслированные строки? (андроид) Ускорение сборки студийной студии Android Изменение макета виджетов программно Android – Перетаскивание – Тень анимации в цель IABHelper. QueryInventoryAsync не возвращает никаких покупок, но запуск потока продукта невозможен с помощью «Item Own Owned» Ошибка приложения: эта версия приложения не настроена для выставления счетов на рынке Android MediaPlayer Error (-38, 0) "остановить вызов в состоянии 0" Что такое «jobject this» в JNI и для чего он используется? Вкладки Android Tablayout с уведомлением, например whatsApp Есть диаграмма зависимостей задачи построения диаграммы Android?

Анимация режимов видимости, GONE и VISIBLE

Таким образом, я пытаюсь оживить, когда я устанавливаю видимость линейного слияния с другими виджетами: от GONE до VISIBLE и наоборот. Я использую togglebuttons для отображения и скрытия. Вот изображение, чтобы показать, что я хочу сделать:

Введите описание изображения здесь

Я могу показать и скрыть, но им не следует, как я могу анимировать скользящее правильно …. 🙁

Heres my xml:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="vertical"> <ScrollView android:id="@+id/ScrollView01" android:layout_width="wrap_content" android:layout_height="wrap_content"> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="vertical"> <!-- TITULO1 --> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal" android:background="#848284" android:padding="4px"> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/TextView01" android:text="Informação Geral" android:textColor="#FFFFFF" android:gravity="left" android:textStyle="bold" android:singleLine="true" android:ellipsize="end" android:layout_gravity="center_vertical" android:textSize="18px" android:paddingLeft="4px"> </TextView> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_gravity="right|center_vertical" android:gravity="right|center_vertical" android:paddingTop="2px"> <ToggleButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:textOff="Expandir" android:textOn="Minimizar" android:id="@+id/mostrar" android:width="80px"> </ToggleButton> </LinearLayout> </LinearLayout> <!--LINHA SEPARADORA--> <View android:id="@+id/View01" android:layout_width="wrap_content" android:background="#B5B5B5" android:layout_height="2px"> </View> <!-- CONTENT INITIALLY HIDDEN (GONE) --> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone" android:id="@+id/informgeral" android:orientation="vertical"> <LinearLayout android:id="@+id/LinearLayout01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:paddingBottom="5px" android:paddingTop="5px" android:paddingLeft="8px" android:orientation="vertical"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/consult_nrprocesso" android:textStyle="bold" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:ellipsize="end" android:layout_width="wrap_content" android:singleLine="true" android:text="@string/srch_number_proc"/> <TextView android:id="@+id/consult_nrprocessovalue" android:layout_width="0px" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:singleLine="true" android:ellipsize="end"/> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent"> <TextView android:id="@+id/consult_tipoprocinfo" android:text="Numero Atribuido ao Processo" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:singleLine="true" android:ellipsize="end" android:layout_width="wrap_content" android:textSize="12px"/> </LinearLayout> </LinearLayout> <View android:id="@+id/View01" android:layout_width="wrap_content" android:background="#B5B5B5" android:layout_height="1px"> </View> <LinearLayout android:id="@+id/LinearLayout02" android:layout_height="wrap_content" android:orientation="vertical" android:paddingTop="5px" android:paddingBottom="5px" android:layout_width="fill_parent" android:paddingLeft="8px"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/consult_tipoproc" android:textStyle="bold" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:ellipsize="end" android:layout_width="wrap_content" android:singleLine="true" android:text="@string/proc_type"/> <TextView android:id="@+id/consult_tipoprocvalue" android:layout_width="0px" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:singleLine="true" android:ellipsize="end"/> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent"> <TextView android:id="@+id/consult_tipoprocinfo" android:text="Variante do Processo em causa" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:singleLine="true" android:ellipsize="end" android:layout_width="wrap_content" android:textSize="12px"/> </LinearLayout> </LinearLayout> <View android:id="@+id/View01" android:layout_width="fill_parent" android:background="#B5B5B5" android:layout_height="1px"> </View> <LinearLayout android:id="@+id/LinearLayout03" android:layout_height="wrap_content" android:orientation="vertical" android:paddingTop="5px" android:paddingBottom="5px" android:layout_width="fill_parent" android:paddingLeft="8px"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/consult_etapa" android:textStyle="bold" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:ellipsize="end" android:layout_width="wrap_content" android:singleLine="true" android:text="@string/srch_task"/> <TextView android:id="@+id/consult_etapavalue" android:layout_width="0px" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:singleLine="true" android:ellipsize="end"/> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content"> <TextView android:id="@+id/consult_etapainfo" android:text="Etapa onde se encontra o processo" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:singleLine="true" android:ellipsize="end" android:layout_width="wrap_content" android:textSize="12px"/> </LinearLayout> </LinearLayout> <View android:id="@+id/View01" android:layout_width="wrap_content" android:background="#B5B5B5" android:layout_height="1px"> </View> <LinearLayout android:id="@+id/LinearLayout04" android:layout_height="wrap_content" android:orientation="vertical" android:paddingTop="5px" android:paddingBottom="5px" android:layout_width="fill_parent" android:paddingLeft="8px"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/consult_criadopor" android:textStyle="bold" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:ellipsize="end" android:layout_width="wrap_content" android:singleLine="true" android:text="@string/criado_por"/> <TextView android:id="@+id/consult_criadoporvalue" android:layout_width="0px" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:singleLine="true" android:ellipsize="end"/> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content"> <TextView android:id="@+id/consult_criadoporinfo" android:text="Entidade responsável pela criação do Processo." android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:singleLine="true" android:ellipsize="end" android:layout_width="wrap_content" android:textSize="12px"/> </LinearLayout> </LinearLayout> <View android:id="@+id/View01" android:layout_width="wrap_content" android:background="#B5B5B5" android:layout_height="1px"> </View> <LinearLayout android:id="@+id/LinearLayout05" android:layout_height="wrap_content" android:orientation="vertical" android:paddingTop="5px" android:paddingBottom="5px" android:layout_width="fill_parent" android:paddingLeft="8px"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/consult_assunto" android:textStyle="bold" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:ellipsize="end" android:layout_width="wrap_content" android:singleLine="true" android:text="@string/proc_subject"/> <TextView android:id="@+id/consult_assuntovalue" android:layout_width="0px" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:singleLine="true" android:ellipsize="end"/> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content"> <TextView android:id="@+id/consult_assuntoinfo" android:text="Assunto do Processo" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:singleLine="true" android:ellipsize="end" android:layout_width="wrap_content" android:textSize="12px"/> </LinearLayout> </LinearLayout> <View android:id="@+id/View01" android:layout_width="wrap_content" android:background="#B5B5B5" android:layout_height="1px"> </View> <LinearLayout android:id="@+id/LinearLayout05" android:layout_height="wrap_content" android:orientation="vertical" android:paddingTop="5px" android:paddingBottom="5px" android:layout_width="fill_parent" android:paddingLeft="8px"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/consult_datainicio" android:textStyle="bold" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:ellipsize="end" android:layout_width="wrap_content" android:singleLine="true" android:text="@string/srch_datebeg"/> <TextView android:id="@+id/consult_datainiciovalue" android:layout_width="0px" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:singleLine="true" android:ellipsize="end"/> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content"> <TextView android:id="@+id/consult_dataincioinfo" android:text="Data da criação do Processo" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:singleLine="true" android:ellipsize="end" android:layout_width="wrap_content" android:textSize="12px"/> </LinearLayout> </LinearLayout> </LinearLayout> <!-- TITULO2 --> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal" android:background="#848284" android:padding="4px"> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/TextView01" android:text="Informação Complementar" android:textColor="#FFFFFF" android:gravity="left" android:textStyle="bold" android:singleLine="true" android:ellipsize="end" android:layout_gravity="center_vertical" android:paddingLeft="4px" android:textSize="16px"> </TextView> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_gravity="right|center_vertical" android:gravity="right|center_vertical" android:paddingTop="2px"> <ToggleButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:textOff="Expandir" android:textOn="Minimizar" android:id="@+id/mostrar2" android:width="80px"> </ToggleButton> </LinearLayout> </LinearLayout> <View android:id="@+id/View01" android:layout_width="wrap_content" android:background="#B5B5B5" android:layout_height="2px"> </View> <!-- TITULO3 --> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal" android:background="#848284" android:padding="4px"> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/TextView01" android:text="Documentos Anexados" android:textColor="#FFFFFF" android:gravity="left" android:textStyle="bold" android:singleLine="true" android:ellipsize="end" android:layout_gravity="center_vertical" android:textSize="18px" android:paddingLeft="4px"> </TextView> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_gravity="right|center_vertical" android:gravity="right|center_vertical" android:paddingTop="2px"> <ToggleButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:textOff="Expandir" android:textOn="Minimizar" android:id="@+id/mostrar" android:width="80px"> </ToggleButton> </LinearLayout> </LinearLayout> <!--LINHA SEPARADORA--> <View android:id="@+id/View01" android:layout_width="wrap_content" android:background="#B5B5B5" android:layout_height="2px"> </View> <!-- TITULO4 --> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal" android:background="#848284" android:padding="4px"> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/TextView01" android:text="Etapas" android:textColor="#FFFFFF" android:gravity="left" android:textStyle="bold" android:singleLine="true" android:ellipsize="end" android:layout_gravity="center_vertical" android:textSize="18px" android:paddingLeft="4px"> </TextView> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_gravity="right|center_vertical" android:gravity="right|center_vertical" android:paddingTop="2px"> <ToggleButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:textOff="Expandir" android:textOn="Minimizar" android:id="@+id/mostrar" android:width="80px"> </ToggleButton> </LinearLayout> </LinearLayout> <!--LINHA SEPARADORA--> <View android:id="@+id/View01" android:layout_width="wrap_content" android:background="#B5B5B5" android:layout_height="2px"> </View> </LinearLayout> </ScrollView> 

И вот код Java, который вызывает событие кнопки:

 final ToggleButton bt=(ToggleButton) findViewById(R.id.mostrar); bt.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (bt.isChecked()) { /*TranslateAnimation slide = new TranslateAnimation(0, 0, 0, -findViewById(R.id.informgeral).getHeight()*2); slide.setDuration(500); slide.setFillAfter(true); findViewById(R.id.informgeral).startAnimation(slide);*/ findViewById(R.id.informgeral).setVisibility(View.VISIBLE);; } else { /* TranslateAnimation slide = new TranslateAnimation(0, 0, 0, findViewById(R.id.informgeral).getHeight()); slide.setDuration(500); slide.setFillAfter(true); findViewById(R.id.informgeral).startAnimation(slide);*/ //findViewById(R.id.listBut).startAnimation(slide); findViewById(R.id.informgeral).setVisibility(View.GONE);; } } }); 

Solutions Collecting From Web of "Анимация режимов видимости, GONE и VISIBLE"

Как сказал Томаш раньше: нет простого пути.

Вы можете взглянуть на мой ответ здесь .
В нем объясняется, как реализовать сдвиг (изменение размеров).
В этом случае это был левый и правый вид: левое расширение, исчезающее справа.
Это может не делать то, что вам нужно, но с изобретательным духом вы можете заставить его работать;)

Чтобы изменить анимацию макета, вы можете добавить в свой LinearLayout следующий атрибут

 android:animateLayoutChanges="true" 

И он автоматически изменит ваши изменения.

================================================

Для информации, если используется android:animateLayoutChanges="true" , тогда пользовательская анимация через anim xml не будет работать

Само изменение видимости может быть легко анимировано путем переопределения метода setVisibility. Посмотрите полный код:

 public class SimpleViewAnimator extends FrameLayout { private Animation inAnimation; private Animation outAnimation; public SimpleViewAnimator(Context context) { super(context); } public void setInAnimation(Animation inAnimation) { this.inAnimation = inAnimation; } public void setOutAnimation(Animation outAnimation) { this.outAnimation = outAnimation; } @Override public void setVisibility(int visibility) { if (getVisibility() != visibility) { if (visibility == VISIBLE) { if (inAnimation != null) startAnimation(inAnimation); } else if ((visibility == INVISIBLE) || (visibility == GONE)) { if (outAnimation != null) startAnimation(outAnimation); } } super.setVisibility(visibility); } } 

Это довольно старый вопрос, все еще комментарии показывают, что у людей все еще есть проблемы, поэтому вот мое решение со следующими дополнительными функциями:

  • Отрегулируйте анимацию (скорость, тип, …)
  • Не нужно расширять какой-либо класс
  • В моем случае, animateLayoutChanges имеет проблемы в новом CoordinatorLayout

Функция – пример (у меня есть эта функция в классе утилиты)

 public static void animateViewVisibility(final View view, final int visibility) { // cancel runnning animations and remove and listeners view.animate().cancel(); view.animate().setListener(null); // animate making view visible if (visibility == View.VISIBLE) { view.animate().alpha(1f).start(); view.setVisibility(View.VISIBLE); } // animate making view hidden (HIDDEN or INVISIBLE) else { view.animate().setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { view.setVisibility(visibility); } }).alpha(0f).start(); } } 

Настройка анимации

После вызова view.animate() вы можете настроить анимацию на все, что вы хотите (задайте продолжительность, установите интерполятор и многое другое …). Вы можете также скрыть представление, масштабируя его, а не корректируя его альфа-значение, просто замените alpha(...) на scaleX(...) или scaleY(...) в методе утилиты, если хотите, чтобы

Вероятно, вы захотите использовать ExpandableListView, специальный ListView, который позволяет открывать и закрывать группы.

Нет простого способа оживить скрытие / показ просмотров. Вы можете попробовать метод, описанный в следующем ответе: Как мне оживить View.setVisibility (GONE)

Вы можете использовать раскрываемое окно списка, описанное в демонстрациях API, чтобы показать группы

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList1.html .

Чтобы оживить движение элементов списка, вам придется переопределить метод getView и применить анимацию перевода для каждого элемента списка. Значения для анимации зависят от положения каждого элемента списка. Это было то, что я пробовал в простом представлении списка долгое время назад.

Если кто-то еще борется с этим в настоящем, вот гораздо более простая версия:

В XML можно установить свойство родительского макета:

 android:animateLayoutChanges="true" 

Это будет отображать представления, когда они будут добавлены / удалены.
Содержите ссылку на представление и вставьте его по своему правильному указателю, а вы – золото.