单击时如何进行图像抖动/摆动?

问题描述 投票:9回答:4

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

谢谢!

android android-image
4个回答
17
投票

尝试使用这个:

<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>

15
投票

试试这个在imageview点击监听器上摇动图像。

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

看到这个代码片段来自android API Demo here


5
投票

我喜欢这一个

<?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>

0
投票

上一个是不正确尝试这一个。

<?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" />
© www.soinside.com 2019 - 2024. All rights reserved.