我有一张ImageView
和16张图片。我想根据这些图像更改背景图像。我使用Handler
但结果并没有顺利改变。如何让变化更加顺畅?你认为AnimationDrawable
更好吗?这是我的代码
private static int[] drawable_img_Array = { R.drawable.img01, R.drawable.img02,R.drawable.img03,R.drawable.img04,
R.drawable.img05, R.drawable.img06,R.drawable.img07,R.drawable.img08,
R.drawable.img09, R.drawable.img10,R.drawable.img11,R.drawable.img12,
R.drawable.img13, R.drawable.img14,R.drawable.img15};
final Handler handler = new Handler();
handler.postDelayed(new Runnable(){
public void run(){
if(i<drawable_img_Array.length) {
imgView.setImageResource(drawable_img_Array[i]);
i++;
} else {
i=0;
}
handler.postDelayed(this, 100);
}
}, 100);
这是我使用AnimationDrawable
的第二种方式 animation = new AnimationDrawable();
for (int j=0;j<drawable_ring_Array.length;j++)
{
animation.addFrame(getResources().getDrawable(drawable_img_Array[j]), 100);
}
animation.setOneShot(false);
ImageView imgView = (imgView) findViewById(R.id.img);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(400, 400);
params.alignWithParent = true;
params.addRule(RelativeLayout.CENTER_IN_PARENT);
imgView.setLayoutParams(params);
imgView.setImageDrawable(animation);
imgView.post(new Starter());
答案 0 :(得分:2)
您的代码中存在一些逻辑错误。具体如下:
首先,您的其他部分将无法按预期工作。 它应该是这样的:
} else {
i=0;
imgView.setImageResource(drawable_img_Array[i]);
i++;
}
最后,这可能是在UI线程上运行代码的真正问题,如
private static int[] drawable_img_Array = {R.drawable.img01,
R.drawable.img02, R.drawable.img03, R.drawable.img04,
R.drawable.img05, R.drawable.img06, R.drawable.img07, R.drawable.img08,
R.drawable.img09, R.drawable.img10, R.drawable.img11, R.drawable.img12,
R.drawable.img13, R.drawable.img14, R.drawable.img15};
final Handler handler = new Handler();
handler.new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (i < drawable_img_Array.length) {
imgView.setImageResource(drawable_img_Array[i]);
i++;
} else {
i=0;
imgView.setImageResource(drawable_img_Array[i]);
i++;
}
handler.postDelayed(this, 100);
}
});
}
}
, 100);
希望它能够发挥作用,如果不是发布日志/错误,我们可以提供帮助。
答案 1 :(得分:0)
<ImageSwitcher
android:id="@+id/image_switcher"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inAnimation="@anim/fade_in_image"
android:outAnimation="@anim/fade_out_image">
</ImageSwitcher>
您可以创建所需的动画并将其用于输入/输出。
现在,当调用imageSwitcher.setImageResource(myNextImage)
时,它将为转换设置动画。