Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Класс TransitionDrawable

Рассмотрим пример плавного перетекания одной картинки в другую через класс TransitionDrawable.

Подготовим в папке res/drawable файл fadein.xml с использованием тега transition, в котором укажем ссылки на рисунки, между которыми будем переключаться.


<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:drawable="@drawable/cat"/>
    <item android:drawable="@drawable/ic_launcher"/>

</transition>

В разметке у ImaveView укажем в качестве источника подготовленный файл. Две кнопки будут выполнять анимацию в ту или иную сторону.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/start_transition_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Transition" />

    <Button
        android:id="@+id/reverse_transition_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Reverse Transition" />

    <ImageView
        android:id="@+id/transition_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/fadein" />

</LinearLayout>

Код:


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageView imageView = findViewById(R.id.transition_image);
    final TransitionDrawable transitionDrawableransitionDrawable = (TransitionDrawable) imageView
            .getDrawable();

    Button startTransition = findViewById(R.id.start_transition_button);
    startTransition.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View view) {
            transitionDrawableransitionDrawable.startTransition(1000);
        }
    });

    Button reverseTransition = findViewById(R.id.reverse_transition_button);
    reverseTransition.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View view) {
            transitionDrawableransitionDrawable.reverseTransition(1000);
        }
    });
}
Реклама