Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 218

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 169
Класс TransitionDrawable - Сайт Дениса Колисниченко
 

Облачный хостинг VDS за 2 минуты

Настоящий облачный VDS-хостинг от UltraVDS: тестируем производительность

Дельта синхронизация без облака

Ранее мы показывали разные способы синхронизации криптодиска между ПК и Android-устройством.

Класс TransitionDrawable


© Денис Колисниченко

В предыдущей статье мы не зря добавили изображения в каталог ресурсов: сейчас мы рассмотрим класс 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) - запускает процесс перехода.