{DATE}
© Денис Колисниченко
В предыдущей статье мы не зря добавили изображения в каталог ресурсов: сейчас мы рассмотрим класс TransitionDrawable, который используется для создания переходов между изображениями.
Для нашего приложения файл res/layout/main.xml уже готов,
осталось создать только файл transition.xml в каталогах res/drawable*. В данном
файле определяется
эффект перехода между изображениями. Код файла transition.xml приведен в листинге 1.
В файле transition.xml описываются изображения, которые будут меняться во время
перехода.
Листинг 1. Файл transition.xml
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/p1"></item>
<item android:drawable="@drawable/p2"></item>
</transition>
Организация самого перехода возлагается на Java-код. Полный код приложения приведен в листинге 2. Чтобы код приложения был более понятным, объясню, как должно работать будущее приложение. При загрузке приложения в ImageView1 загружается изображение, указанное в файле разметки. При щелчке на ImageView1 загружается следующее изображение, указанное в transition.xml. Длительность плавного перехода между картинками задается методом startTransition() в миллисекундах, 1000 мс = 1 с.
Листинг 2. Переход между изображениями
package com.samples.hel31;
import android.app.Activity;
import android.os.Bundle;
import android.content.res.Resources;
import android.graphics.drawable.TransitionDrawable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
public class A31Activity extends Activity implements OnClickListener {
В В В /** Called when the activity is first created. */
В В В В В В В
В В В В В В В private ImageView image;
В В В В В В В private TransitionDrawable trans;
В В В В В В В
В В В @Override
В В В public void onCreate(Bundle savedInstanceState) {
В В В В В В В super.onCreate(savedInstanceState);
В В В В В В В setContentView(R.layout.main);
       // находим ImageView1 в разметке
В В В В В В В image = (ImageView)findViewById(R.id.imageView1);
       // устанавливаем обработчик щелчка
В В В В В В В image.setOnClickListener(this);
В В В В В В В Resources res = this.getResources();
       // создаем объект класса TransisionDrawable — он и отвечает
       // за переход между изображениями
В В В В В В В trans = (TransitionDrawable)res.getDrawable(R.drawable.transition);
В В В }
   // реакция на щелчок на ImageView1
В В В public void onClick(View v) {
В В В В В В image.setImageDrawable(trans);
В В В В В В trans.startTransition(1000);
В В В }
}
Запустите приложение и щелкните на изображении. К сожалению, сделать снимок экрана нельзя — все равно ничего не будет понятно (специально для dkws.org.ua).
Вы можете использовать следующие методы класса TransitionDrawable:
r setCrossFadeEnabled(boolean enabled) - включает эффект CrossFade, который заключается в плавном затухании при переходе между первым и вторым изображениями.
r boolean isCrossFadeEnabled() - возвращает true, если эффект CrossFade включен.
r resetTransition() - сбрасывает переход, показывается только первый слой.
r reverseTransition (int duration) - переход в обратном порядке.
r startTransition(int duration) - запускает процесс перехода.