2014-02-17 3 views
10

Я новичок в android и им ищут способ пожать мое изображение на клик. Я получил это до сих пор, но он все время падает. Или, если вы нажмете на него, ничего не получится. Надеюсь, вы, люди, можете мне помочь. если я забыл все, просто скажу это. код может быть грязным.Android buttonimage shake animation

У меня есть папка с анимацией. с shakeanim.xml

код:

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    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_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:src="@drawable/chest" 
     android:background="@null"/> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     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" /> 
+0

Если вы действительно хотите, чтобы он дрожал, вы должны использовать пользовательский интерполяр, который идет взад и вперед. – pskink

+0

К сожалению, вы не можете использовать интерполятор в вашем XML-ресурсе анимации, и он доступен только программно. –

+1

Проверьте это: http://stackoverflow.com/questions/9448732/shaking-wobble-view-animation-in-android – zaingz

ответ

16

Замените файл 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); 
      } 
     }); 

Если это поможет, пожалуйста, отметьте его как правильный ответ. Спасибо

+0

анимация прыгает! –

+0

что это с этой формойXDelta – Dennis