Crossfading使用TransitionDrawable不工作在android

问题描述:

我有两个图像,我想淡入淡出。 最初他们都使用imageview。然后我使用.getDrawable()获取图像的可绘制。Crossfading使用TransitionDrawable不工作在android

这是我用

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

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

它仅示出了第一个数组元素,这也无妨示出,因为两个图像被在XML设置为可见的图像的代码。

过渡不启动

任何帮助,将不胜感激:)

下面是一个例子IF你有2个可绘制,并希望他们的动画在某些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); 

    } 
} 

然后,如果你想转换回原始图像,你可以拨打电话

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

如果我误解了你的问题,请纠正我。

+2

你忘了加上'crossfader.setCrossFadeEnabled(真);' –

+1

应当指出的是,半淡入淡出透明背景不起作用,这将使两个drawable在最后重叠。 – Warpzit

A TransitionDrawable只是一种特殊的drawable。它不是自行绘制的,它必须放置在某处(例如,在ViewView上,在ImageView上,& c)才能显示。

如果你试图交叉衰减两个图像,你有两种可能的方法:

  1. 使用 ImageView的一个TransitionDrawable
  2. 使用两个ImageViews和crossfade them with animations

您应该使用setCrossFadeEnabled属性格式

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

也许你像这样的
- RES /绘制/ 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); 

如果它是有益的,你可以看到谷歌-DEV:

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