6

ImageView üzerinde TranslateAnimation kullanmaya çalışıyorum, ancak ImageView hiç hareket etmiyor. Projeyi çalıştırdığımda hiçbir şey olmuyor. YanlışBir ImageView üzerinde TranslateAnimation çalışmıyor

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:id="@string/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="com.ennio.lojaprove.MainActivity"> 

<ImageView 
    android:id="@+id/img" 
    android:src="@drawable/bg" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="true" 
    android:scaleType="centerCrop" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" /> 
    <ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView" 
    android:src="@drawable/border" 
    android:scaleType="centerCrop" 
    android:layout_alignTop="@+id/img" 
    android:layout_centerHorizontal="true" /> 
    <ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView2" 
    android:src="@drawable/border" 
    android:scaleType="centerCrop" 
    android:layout_alignBottom="@+id/img" 
    android:layout_centerHorizontal="true" /> 
    <ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView3" 
    android:src="@drawable/pengesa" 
    android:layout_above="@+id/imageView2" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

    </RelativeLayout> 

yapıyorum:

import android.app.Activity; 
import android.os.*; 
import android.view.animation.AccelerateInterpolator; 
import android.view.animation.TranslateAnimation; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 
ImageView a; 
TranslateAnimation pengesat; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    a = (ImageView) findViewById(R.id.imageView3); 
    pengesat = new TranslateAnimation(0.0f, 1.0f, 0.0f, 0.0f); 
    pengesat.setDuration(5000); 
    pengesat.setRepeatCount(1); 
    pengesat.setInterpolator(new AccelerateInterpolator()); 
    Thread myThread= new Thread(new Runnable(){ 
     @Override 
     public void run() { 
      a.post(new Runnable() { 
       @Override 
       public void run() { 
        a.startAnimation(pengesat); 
       } 
      }); 
     } 
    }); 
    myThread.start(); 
    } 
} 

Ve işte benim xml kod: İşte benim kod?

cevap

2

Animasyonu başka bir iş parçacığından başlatmanız gerekmez. o

a = (ImageView) findViewById(R.id.imageView3); 
pengesat = new TranslateAnimation(0.0f, 1.0f, 0.0f, 0.0f); 
pengesat.setDuration(5000); 
pengesat.setRepeatCount(1); 
pengesat.setInterpolator(new AccelerateInterpolator()); 
a.startAnimation(pengesat); 
+0

fark etmez mi:/evreye olmaksızın çalışmak için kullanılan, ama vardı " 30/31/32 kare atlandı "hatası. Bu yüzden başka bir thread – Eae

+0

dan animasyon başlatmaya çalıştım Yani senin değerleri çok küçük olabilir? .. Bu deneyin: pengesat = yeni TranslateAnimation (0.0f, 100.0f, 0.0f, 100.0f); – mohax

+0

Evet, o olmadan çalıştı iplik. Ama kareler atlanır. Yeni değerlerle iplikten animasyon başlatmayı denedim, 'ImageView' hiç denemedim – Eae

0
başlatıldı oluyor sonra Dolayısıyla, sadece başlatmak

enter image description here

Sen işe yapmaya işleyicisi kullanabilirsiniz

+0

denedim, işe yaradı. Ama çerçeveler atla gibi görünüyor, ancak logomda çerçevelerin atlandığını söylemiyor:/sorun ne olabilir? Bu, – Eae

+0

gibi düzgün bir animasyon değil Belki de animasyonu onWindowFocusChanged() yönteminde başlatmayı deneyebilirsiniz. Yöntem, kaynak nedeni etkinken pencerenin durumu değişmiş olsa da çalışır. – caowenhua

+0

Ve bunu 13'den daha büyük yapıyorsunuz. Ayrıca view.animate() .... 'yi de kullanabilirsiniz (hangi animasyonu oynatmak istediğiniz) .setDuration (5000) .start(); – caowenhua

İlgili konular