代码之家  ›  专栏  ›  技术社区  ›  DeimosPhx

单击时按钮旋转

  •  0
  • DeimosPhx  · 技术社区  · 7 年前

    我有一个按钮,当我点击它时,它会向上旋转90度。当我再次点击它时,它会下降90度(回到之前的位置)。

    问题是,如果我发送垃圾邮件,按钮的旋转确实会变得疯狂,按钮最终指向一个不应该指向的方向。

    以下是旋转代码:

    public void onClick(View v){
        float deg = myButton.getRotation();
        if(clicked) deg -= 90;
        else deg += 90;
        myButton.animate().rotation(deg);
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Gotiasits    7 年前

    按钮以错误旋转结束的第一个原因是,某些单击会考虑到“错误”旋转。

    第二个问题是,当单击按钮时,您不会更新“clicked”布尔值。我建议使用ObjectAnimator,因为您不必依赖当前旋转位置来旋转。

    public void onClick(View v){
    
        ObjectAnimator.ofFloat(myButton, "rotation", clicked ? 90f : 0f).start();    
        clicked = !clicked
    }