【问题标题】:How do I make an image shake/wiggle when clicked?单击时如何使图像抖动/摆动?
【发布时间】:2012-05-04 20:18:34
【问题描述】:

我有一个图像按钮,我想在触摸它时使其摇晃/摆动。我希望它以类似于长时间按下 iPhone 应用程序图标的方式摆动。

谢谢!

【问题讨论】:

标签: android android-image


【解决方案1】:

尝试使用这个:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
        android:duration="70"
        android:fromDegrees="-5"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="5"
        android:repeatMode="reverse"
        android:interpolator="@android:anim/linear_interpolator"
        android:toDegrees="5" />
    <translate
        android:fromXDelta="-10"
        android:toXDelta="10"
        android:repeatCount="5"
        android:repeatMode="reverse"
        android:interpolator="@android:anim/linear_interpolator"
        android:duration="70" />
</set>

【讨论】:

  • 并将此代码作为资源文件保存到名为“shake.xml”的文件夹“anim”中。然后你可以使用下面@Rajkumari 的代码。快乐的编码人。 :)
【解决方案2】:

尝试在 imageview 点击监听器上晃动图像。

 public void onClick(View v)
  {
    Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);
    findViewById(R.id.pw).startAnimation(shake);
   }

看到这个 sn-p 取自 android API Demo here

【讨论】:

  • 动画在上面@Simon Heinen的代码中。 :)
【解决方案3】:

我喜欢这个

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fillAfter="true">

    <translate
        android:fromXDelta="-20"
        android:toXDelta="19"
        android:duration="20" />
    <translate
        android:startOffset="20"
        android:fromXDelta="19"
        android:toXDelta="-18"
        android:duration="20" />
    <translate
        android:startOffset="40"
        android:fromXDelta="-18"
        android:toXDelta="17"
        android:duration="20" />
    <translate
        android:startOffset="60"
        android:fromXDelta="17"
        android:toXDelta="-16"
        android:duration="20" />
    <translate
        android:startOffset="80"
        android:fromXDelta="-16"
        android:toXDelta="14"
        android:duration="20" />
    <translate
        android:startOffset="100"
        android:fromXDelta="14"
        android:toXDelta="-12"
        android:duration="20" />
    <translate
        android:startOffset="120"
        android:fromXDelta="-12"
        android:toXDelta="10"
        android:duration="20" />
    <translate
        android:startOffset="140"
        android:fromXDelta="10"
        android:toXDelta="-7"
        android:duration="20" />
    <translate
        android:startOffset="160"
        android:fromXDelta="-7"
        android:toXDelta="4"
        android:duration="20" />
    <translate
        android:startOffset="200"
        android:fromXDelta="4"
        android:toXDelta="0"
        android:duration="20" />
    <translate
        android:startOffset="220"
        android:fromXDelta="0"
        android:toXDelta="0"
        android:duration="20" />
</set>

【讨论】:

    【解决方案4】:

    上面的不正确试试这个。

    <?xml version="1.0" encoding="utf-8"?>
    <rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="100"
    android:fromDegrees="-5"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:repeatMode="reverse"
    android:toDegrees="5" />
    

    【讨论】:

    • 还请对您的代码进行一些解释,以更好地帮助其他人理解它。而不是只是粘贴代码说它更好。
    猜你喜欢
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多