2014-07-05 29 views
20

Mam dwa obrazy, które chcę przejść zanikać. Początkowo oba korzystają z widoku obrazu. Następnie używam metody .getDrawable(), aby uzyskać możliwość rysowania obrazów.Crossfading za pomocą TransitionDrawable nie działa na Androidzie

Jest to kod użyłem

Drawable backgrounds[] = new Drawable[2]; 
backgrounds[0] = BackgroundImage.getDrawable(); 
backgrounds[1] = BackgroundImageBlurred.getDrawable(); 

TransitionDrawable crossfader = new TransitionDrawable(backgrounds); 
crossfader.startTransition(3000); 

To tylko pokazuje obraz na pierwszym elemencie tablicy, która pokazuje zresztą, ponieważ oba obrazy zostały ustawione na widoczne w pliku XML.

Przejście nie uruchamia

Każda pomoc będzie mile widziane :)

Odpowiedz

27

Oto przykład IF masz 2 kanału alfa i chcesz ożywić swoje przejścia w pewnym ImageView:

package com.example.app; 

import android.app.Activity; 
import android.content.res.Resources; 
import android.graphics.drawable.Drawable; 
import android.graphics.drawable.TransitionDrawable; 
import android.os.Bundle; 
import android.widget.ImageView; 

class MainActivity extends Activity { 

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

     Drawable backgrounds[] = new Drawable[2]; 
     Resources res = getResources(); 
     backgrounds[0] = res.getDrawable(android.R.drawable.btn_star_big_on); 
     backgrounds[1] = res.getDrawable(android.R.drawable.btn_star_big_off); 

     TransitionDrawable crossfader = new TransitionDrawable(backgrounds); 

     ImageView image = (ImageView)findViewById(R.id.image); 
     image.setImageDrawable(crossfader); 

     crossfader.startTransition(3000); 

    } 
} 

Następnie, jeśli chcesz wrócić do oryginalnego obrazu, możesz zadzwonić pod numer

// Make sure the transition occurred 
crossfader.startTransition(0); 
// Reverse transition 
crossfader.reverseTransition(3000); 

Proszę, popraw mnie, jeśli źle zrozumiałem twoje pytanie.

+2

zapomniałeś dodać 'crossfader.setCrossFadeEnabled (true);' –

+1

Należy zauważyć, że przenikanie z pół- przezroczyste tło nie działa, spowoduje to nałożenie się obu zakładek na koniec. – Warpzit

2

A TransitionDrawable to tylko specjalny rodzaj ciągnięcia. Nie jest narysowany sam, musi być umieszczony gdzieś (np. Na tle widoku, na ImageView, & c) do wyświetlenia.

Jeśli starasz się płynne przejście dwa obrazy, masz dwa możliwe podejścia:

  1. użyć pojedynczy ImageView z TransitionDrawable.
  2. Użyj dwóch ImageViews i crossfade them with animations.
10

Należy użyć setCrossFadeEnabled propery

final TransitionDrawable briefcaseTransition = (TransitionDrawable) briefcase.getDrawable(); 
briefcaseTransition.setCrossFadeEnabled(true); 
briefcaseTransition.startTransition(500); 
3

Może Ci się ten jeden
- res/rozciągliwej/transition.xml:

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

ImageView:

<ImageButton android:id="@+id/button" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:src="@drawable/transition" /> 

Javacode:

ImageButton button = (ImageButton) findViewById(R.id.button); 
TransitionDrawable drawable = (TransitionDrawable) button.getDrawable(); 
drawable.startTransition(500); 

Jeśli jest pomocny, można zobaczyć, Google-dev:

http://developer.android.com/guide/topics/resources/drawable-resource.html

Powiązane problemy