我有这种奇怪的行为,我无法找到解决方案...... 这只发生在我的模拟器API级别10,在我的智能手机(Android 4.1)上工作正常。
我写了一个动态动画来显示滚动的骰子,其中10个随机帧被选为动画的帧,持续时间为50ms。
当我按下按钮时,动画运行,但挤压到零高度.....(你仍然可以看到动画骰子的一些颜色),布局也搞砸了。 但这不会发生在我的手机上。
以下是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”,那么骰子会在动画期间显示,但会变成有趣的形状......
我尝试了大多数缩放方法,adjustviewbound等没有运气......
答案 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,至少当我从网上抓取大量不同大小的图像时,它对我有用。