6

ImageViewTranslateAnimationを使用しようとしていますが、ImageViewはまったく動きません。プロジェクトを実行すると何も起こりません。ここに私のコードは次のとおりです。ImageViewのTranslateAnimationが機能しません。

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(); 
    } 
} 

そして、ここでは私のXMLコードは次のとおりです。

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

は私が間違って何をしているのですか?

答えて

2

別のスレッドからアニメーションを開始する必要はありません。それは

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

任意の違いはありませんでした:/、それはスレッドなしで動作するために使用さが、私が持っていました」 30/31/32フレームをスキップしました "エラー。だから私は別のスレッドからアニメーションを開始しようとしたのです – Eae

+0

あなたの値が小さすぎるかもしれませんか?これを試してください: 'pengesat = new TranslateAnimation(0.0f、100.0f、0.0f、100.0f);' – mohax

+0

はい、糸。しかし、フレームはスキップします。新しい値を持つスレッドからアニメーションを開始しようとしましたが、 'ImageView'はまったく動かなかった – Eae

0
を初期化しています後にそうちょうどそれを開始

enter image description here

あなたが仕事を行うにハンドラを使用することができます

+0

私はそれを試しました、それは働いた。しかし、私のロゴでは、フレームがスキップしているとは言えませんが、フレームがスキップされているように見えます。/何が問題なのでしょうか?このような滑らかなアニメーションではありません – Eae

+0

onWindowFocusChanged()メソッドでアニメーションを開始しようとする可能性があります。ウィンドウのステータスが変更されているにもかかわらず、アクティビティがアクティブなときにメソッドが機能します。 – caowenhua

+0

そして、あなたはそれをapi13よりも大きくします。あなたはまた、view.animate()....(どのアニメーションを再生したいか)を使うこともできます。 – caowenhua

関連する問題