Java 动画不';t端-安卓
在我的应用程序中,我有一个按钮显示一个下拉菜单,在该菜单中我们有一些选项,其中一个是“抛硬币”, 此选项的目的是翻转硬币轻松动画,该动画显示在textView中,并显示硬币的正面或反面,而不是textView中的文本。 我有两个问题:Java 动画不';t端-安卓,java,android,xml,animation,Java,Android,Xml,Animation,在我的应用程序中,我有一个按钮显示一个下拉菜单,在该菜单中我们有一些选项,其中一个是“抛硬币”, 此选项的目的是翻转硬币轻松动画,该动画显示在textView中,并显示硬币的正面或反面,而不是textView中的文本。 我有两个问题: 动画没有我想要的效果,它应该在1秒内出现一枚硬币,而不是文本视图中的文本,它停留在那里,2秒后他消失了,但消失后,硬币图像回到文本视图中,它不应该再次出现 这不是一个真正的问题,而是一个可选的问题,比如“你知道怎么做吗?”。我不知道如何创建硬币多次旋转的翻转动画
<item
android:id="@+id/flipacoin"
android:title="@string/flipACoin" />
<item
android:id="@+id/rolladice"
android:title="@string/rollADice" />
<item
android:id="@+id/imagebackground"
android:title="@string/changeImage" />
JAVA动画功能:
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.flipacoin:
flipACoin();
return true;
case R.id.rolladice:
Toast.makeText(this,"TODO roll a dice",Toast.LENGTH_SHORT).show();
return true;
case R.id.imagebackground:
Toast.makeText(this,"TODO image background",Toast.LENGTH_SHORT).show();
return true;
default:
return false;
}
}
public void flipACoin(){
coin.setText(null); //this is for remove the text inside the textView
coin.setBackground(RANDOM.nextFloat() > 0.5f ? getResources().getDrawable(R.drawable.tails) : getResources().getDrawable(R.drawable.heads));
Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setInterpolator(new DecelerateInterpolator());
fadeIn.setDuration(1000);
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new AccelerateInterpolator());
fadeOut.setStartOffset(2000);
fadeOut.setDuration(1000);
AnimationSet animation = new AnimationSet(false);
animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
coin.setAnimation(animation);
}
当您在开始时设置背景时,它仅在动画之后保持不变。要将文本和背景设置回null,可以添加动画侦听器。下面是实现此功能的示例应用程序:
public类MainActivity扩展了AppCompatActivity
{
文本视图硬币;
随机;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
随机=新随机();
硬币=findViewById(R.id.coin);
(findviewbyd(R.id.click)).setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图)
{
flipACoin();
}
});
}
公共空间
{
coin.setText(空);
coin.setBackground(ResourcesCompat.getDrawable(getResources()),
RANDOM.nextFloat()>0.5f?R.drawable.ic_launcher_背景:R.drawable.ic_launcher_前景,
无效的
));
动画fadeIn=新的AlphaAnimation(0,1);
设置内插器(新减速器内插器());
fadeIn.setDuration(1000);
动画淡出=新的AlphaAnimation(1,0);
设置内插器(新的加速器内插器());
衰减设置起始偏移量(2000);
衰减设置持续时间(1000);
AnimationSet animation=新的AnimationSet(false);
添加动画(fadeIn);
动画。添加动画(淡出);
//侦听器,它将在动画开始/结束/重复时执行该函数
animation.setAnimationListener(新的animation.AnimationListener()
{
@凌驾
onAnimationStart上的公共无效(动画)
{
Log.d(“MyTag”,“onAnimationStart:”);
}
@凌驾
public void onAnimationEnd(动画)//动画结束时,将文本和背景设置为null
{
Log.d(“MyTag”,“onAnimationEnd:”);
硬币。退避地(空);
coin.setText(“默认”);
}
@凌驾
onAnimationRepeat上的公共无效(动画)
{
Log.d(“MyTag”,“onAnimationRepeat:”);
}
});
coin.setAnimation(动画);
}
}
activity_main.xml: