Android:AnimationDrawable压缩我的形象

时间:2014-01-20 15:09:00

标签: android imageview animationdrawable

我有这种奇怪的行为,我无法找到解决方案...... 这只发生在我的模拟器API级别10,在我的智能手机(Android 4.1)上工作正常。

我写了一个动态动画来显示滚动的骰子,其中10个随机帧被选为动画的帧,持续时间为50ms。

当我按下按钮时,动画运行,但挤压到零高度.....(你仍然可以看到动画骰子的一些颜色),布局也搞砸了。 但这不会发生在我的手机上。

Before animation During animation

以下是java代码的一部分:

public void RollDice(View view) {
    int id=-1;
        AnimationDrawable diceAnimation = new AnimationDrawable();

        //create 10 random frames from dice1.jpg to dice6.jpg into diceAnimation
        for(int j=0;j<10;j++){
            id=getResources().getIdentifier("dice"+String.valueOf(rng.nextInt(6)+1), "drawable", getPackageName());
            diceAnimation.addFrame(getResources().getDrawable(id), 50);
        }

        //assigning and starting animation
        diceAnimation.setOneShot(true);
        dice.setImageDrawable(diceAnimation);
        diceAnimation.start();
}

和xml的部分:

<ImageView
 android:id="@+id/Dice1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:contentDescription="@string/diceimage"
 android:src="@drawable/dice1" />

按钮onclick调用RollDice()。

作为最后的评论,如果我在ImageView中进行硬编码,比如android:layout_height =“100dp”,那么骰子会在动画期间显示,但会变成有趣的形状......

During animation with 100dp

我尝试了大多数缩放方法,adjustviewbound等没有运气......

2 个答案:

答案 0 :(得分:1)

我不知道你的问题是否已经解决。 但我想补充一下这个问题的答案。

你可以试试这个:

首先,将图像视图layout_width从match_parent设置为wrap_content。

其次使用以下代码,以使骰子完全消失:

frameAnimation.setVisibility(已废弃的);

答案 1 :(得分:0)

可能有你的答案,谨慎尝试,因为我自己是初学者。

ViewGroup.MarginLayoutParams mParams = new ViewGroup.MarginLayoutParams(view.getLayoutParams());

ImageView view = (ImageView)findViewById(R.id.image_dice);
layoutParams = new RelativeLayout.LayoutParams(mParams);
layoutParams.width=120;
layoutParams.height=120;
view.setLayoutParams(layoutParams);

将它应用到你的图像中会动态调整.xml,至少当我从网上抓取大量不同大小的图像时,它对我有用。