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);
如果我误解了你的问题,请纠正我。
答
A TransitionDrawable
只是一种特殊的drawable。它不是自行绘制的,它必须放置在某处(例如,在ViewView上,在ImageView上,& c)才能显示。
如果你试图交叉衰减两个图像,你有两种可能的方法:
- 使用单 ImageView的一个
TransitionDrawable
。 - 使用两个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
你忘了加上'crossfader.setCrossFadeEnabled(真);' –
应当指出的是,半淡入淡出透明背景不起作用,这将使两个drawable在最后重叠。 – Warpzit