我下面的代码以它应该的方式为ImageView设置动画。问题是它不重复。 (表情符号是一个ImageView)
目前的作用:活动开始时,屏幕上会显示表情符号。单击屏幕时它会向上滑动,然后消失(应该如此)。
问题1:我不希望活动开始时可以看到表情符号。
问题2:onClick只能运行一次。在第一次点击之后,表情符号将不再出现。
ConstraintLayout mLayout = findViewById(R.id.constraintLayout);
mLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
emojiPopup();
}
});
public void emojiPopup() {
final ImageView emojiFace = findViewById(R.id.face);
emojiFace.animate().translationY(-200).alpha(1.0f).setDuration(500).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
emojiFace.setVisibility(GONE);
}
});
}
每次点击屏幕时都会发生public void onClick(View view) {emojiPopup();}
,为什么它只在第一次点击时才有效?
也许我采取了错误的做法,或者我没有看到明显的事情,有谁能告诉我我做错了什么?
答案 0 :(得分:1)
问题1
在ImageView
方法中将OnCreate()
设置为INVISIBLE。
问题2
第一个动画结束后,你将其可见性设置为GONE,之后你永远不会将其设置为VISIBLE,这就是你在第一个动画之后永远看不到它的原因。因此,在emojiPopup()
方法开始时,首先将其设置为VISIBLE,然后设置动画并将其隐藏。