我遇到以下问题:我创建了一个扩展ConstraintLayout的新类,并且我重写了onTouchEvent函数以使Layout动画化。
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
ObjectAnimator scaleDownX = ObjectAnimator.ofFloat(this, "scaleX", 0.85f);
ObjectAnimator scaleDownY = ObjectAnimator.ofFloat(this, "scaleY", 0.85f);
scaleDownX.setDuration(100);
scaleDownY.setDuration(100);
AnimatorSet scaleDown = new AnimatorSet();
scaleDown.play(scaleDownX).with(scaleDownY);
scaleDown.start();
break;
case MotionEvent.ACTION_CANCEL:
Log.d("arne", "CANCEL");
// Beide Cases lösen das Event aus
// ACTION_CANCEL minimiert den Button auch, wenn man den Knopf nicht loslässt, sondern weg wischt
case MotionEvent.ACTION_UP:
ObjectAnimator scaleUpX = ObjectAnimator.ofFloat(this, "scaleX", 1f);
ObjectAnimator scaleUpY = ObjectAnimator.ofFloat(this, "scaleY", 1f);
scaleUpX.setDuration(100);
scaleUpY.setDuration(100);
AnimatorSet scaleUp = new AnimatorSet();
scaleUp.play(scaleUpX).with(scaleUpY);
scaleUp.start();
break;
}
return super.onTouchEvent(event);
}
这对于Buttons来说是完美的,如果我按住按钮不放,事件会在一秒钟内触发多次。
但是在ConstraintLayout上,它仅触发一次,就像onClick事件一样。
这对我的理解有点奇怪。
您对此问题有解决方案吗?
答案 0 :(得分:0)
好的,我终于找到了解决方法。
您只需要将布局设置为可点击即可。
data