Android buttonimage摇动动画

Posted

技术标签:

【中文标题】Android buttonimage摇动动画【英文标题】:Android buttonimage shake animation 【发布时间】:2014-02-17 19:27:36 【问题描述】:

我是 android 新手,我正在寻找一种在点击时摇动按钮图像的方法。到目前为止我得到了这个,但它一直在崩溃。或者,如果您单击它,则没有任何效果。 我希望你们能帮助我。如果我忘记了什么就说出来。代码可能很乱。

我有一个动画文件夹。用shakeanim.xml

代码:

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

     <ImageButton
         android:id="@+id/imageButton1"
         android:layout_
         android:layout_
         android:layout_centerHorizontal="true"
         android:layout_centerVertical="true"
         android:src="@drawable/chest"
        android:background="@null"/>

     <TextView
         android:id="@+id/textView1"
         android:layout_
         android:layout_
         android:layout_above="@+id/imageButton1"
         android:layout_centerHorizontal="true"
         android:layout_marginBottom="51dp"
         android:text="100 Clicks" />

</RelativeLayout>

MainActivity.java

package com.example.egghatcher;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageButton;
import android.widget.TextView;


public class MainActivity extends Activity 

    ImageButton imageButton;

    TextView clicksToGo;

    Animation shake;

    private int clicks = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        shake = AnimationUtils.loadAnimation(this, R.anim.shakeanim);
    

    public void addListenerOnButton() 

        imageButton = (ImageButton) findViewById(R.id.imageButton1);

        clicksToGo = (TextView)findViewById(R.id.textView1);

        imageButton.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View v) 
                clicks--;               
                clicksToGo.setText("You need to click " + clicks + " more times to open it");
                findViewById(R.id.imageButton1).startAnimation(shake);  
             
        );

    



shakeanim.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromXDelta="0"
    android:interpolator="@android:anim/cycle_interpolator"

    android:toXDelta="10" />

【问题讨论】:

如果你真的想让它晃动,你应该使用来回的自定义 interpolaror 很遗憾,您不能在动画的 XML 资源中使用插值器,它只能以编程方式使用。 检查这个:***.com/questions/9448732/… 【参考方案1】:

用这个替换你的shakeanim.xml文件。

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:duration="150"
        android:fromXDelta="-10%"
        android:repeatCount="5"
        android:repeatMode="reverse"
        android:toXDelta="10%"/>
</set>

顺便说一句,您可以像这样更改您的 MainActivity“setOnClickListener”,因为您已经声明了 imageButton。

imageButton.setOnClickListener(new OnClickListener() 

            @Override 
            public void onClick(View v) 
                clicks--;               
                clicksToGo.setText("You need to click " + clicks + " more times to open it");
                imageButton.startAnimation(shake);  
              
        ); 

如果这有帮助,请将其标记为正确答案。谢谢

【讨论】:

动画跳跃! 这个formXDelta有什么作用

以上是关于Android buttonimage摇动动画的主要内容,如果未能解决你的问题,请参考以下文章

android 动画, 请问这个动画怎么解决啊?哪位有思路啊?谢谢!

UIView 摇动动画

摇动动画(3d版)

使用 jQuery 触发 CSS 摇动动画,每隔一段时间都有效……为啥?

markdown 摇动动画

text Swift 4的基本摇动动画(文本字段,按钮)