Подтвердить что ты не робот

Пример простой анимации анимации

Я пытаюсь реализовать анимацию анимации "гиперпространства", описанную в http://developer.android.com/guide/topics/resources/animation-resource.html ( "Ресурсы анимации" ) - однако она не работает так, как написано, Когда я запускаю приложение, я просто получаю пустой вид под панелью заголовков приложений. Что я делаю не так?

В примере, вот мой код. Я создал res/anim/hyperspace_jump.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0" 
        android:toXScale="1.4" 
        android:fromYScale="1.0" 
        android:toYScale="0.6" 
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="700">
        <scale
            android:fromXScale="1.4" 
            android:toXScale="0.0"
            android:fromYScale="0.6"
            android:toYScale="0.0" 
            android:pivotX="50%" 
            android:pivotY="50%" 
            android:duration="400" />
        <rotate
            android:fromDegrees="0" 
            android:toDegrees="-45"
            android:toYScale="0.0" 
            android:pivotX="50%" 
            android:pivotY="50%"
            android:duration="400" />
    </set>
</set>

Я также создал layout/main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>

</LinearLayout>

Наконец, у меня есть активность:

package com.tomoreilly.geology;

import android.app.Activity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ImageView image = (ImageView) findViewById(R.id.ImageView01);
        Animation hyperspaceJump = 
            AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
        image.startAnimation(hyperspaceJump);
    }
}

Но я не вижу анимации при запуске приложения. Не хватает ли некоторых деталей, которые не описаны в примере "Ресурсы анимации"?

Спасибо, Том

4b9b3361

Ответ 1

enter image description here

Чтобы добавить другой ответ, вы также можете попробовать Universal Tween Engine для анимации пользовательских интерфейсов Android. Действительно, ваша анимация, которая требует довольно много строк в формате XML, будет описана следующим образом:

Timeline.createSequence()
    // First, set your pivot (Tween.set() works instantly)
    .push(Tween.set(image, ViewAccessor.PIVOT_XY).target(0.5f, 0.5f))

    // Then, animate your scale and rotation as you want
    .push(Tween.to(image, ViewAccessor.SCALE_XY, 0.7f).target(1.4f, 0.6f))
    .beginParallel()
        .push(Tween.to(image, ViewAccessor.SCALE_XY, 0.4f).target(0, 0))
        .push(Tween.to(image, ViewAccessor.ROTATION, 0.4f).target(-45))
    .end()

    // Finally, start the animation!
    .start();

Это может быть более читаемым, если у вас есть большой набор действий для последовательности. Двигатель сильно оптимизирован для Android, и особенно для игр, и не выделяет ничего, чтобы обеспечить лучшую производительность.

Он полностью с открытым исходным кодом, сильно документирован и выпущен с лицензией Apache-2.

Вы можете дать Android-демо попробовать, если хотите:

Ответ 2

Ваше изображение должно иметь источник, определенный как в xml, так и в вашей активности.

XML:

<ImageView android:id="@+id/ImageView01" 
   android:src="@drawable/someimage" 
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content">
</ImageView>

активность:

ImageView image = (ImageView) findViewById(R.id.ImageView01);
image.setImageResource(R.drawable.some_image);

Ответ 3

Я предполагаю, что ViewFlipper требуется. Потому что, когда вы хотите анимацию между анимацией, вам нужен ViewFlipper для анимации.

делать следующие вещи. Я думаю, решить проблему.

Создайте новый XML файл и добавьте в него вкладку ViewFlipper...

use include tab, чтобы включить все остальные макеты, когда вы хотите сделать анимацию.

и используйте следующий код

flipper = (ViewFlipper) findViewById(R.id.flipper);

Button button1 = (Button) findViewById(R.id.Button01); // Button in one activity

Button button2 = (Button) findViewById(R.id.Button02); // Button in second activity

// Other Methods

private Animation inFromRightAnimation() {

        // Animation inFromRight = new TranslateAnimation(
        /*
         * Animation inFromRight = new ScaleAnimation(
         * Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT,
         * 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
         * Animation.RELATIVE_TO_PARENT, 0.0f);
         */
        Animation inFromRight = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
                0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
                Animation.RELATIVE_TO_SELF, 0.0f);

        inFromRight.setDuration(500);
        inFromRight.setInterpolator(new AccelerateInterpolator());
        return inFromRight;
    }

    private Animation outToLeftAnimation() {
        // Animation outtoLeft = new TranslateAnimation(
        /*
         * Animation outtoLeft = new
         * ScaleAnimation(Animation.RELATIVE_TO_PARENT, 0.0f,
         * Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT,
         * 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
         */
        Animation outtoLeft = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
                0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
                Animation.RELATIVE_TO_SELF, 0.0f);
        outtoLeft.setDuration(500);
        outtoLeft.setInterpolator(new AccelerateInterpolator());
        return outtoLeft;
    }

    private Animation inFromLeftAnimation() {
        // Animation inFromLeft = new TranslateAnimation(
        /*
         * Animation inFromLeft = new
         * ScaleAnimation(Animation.RELATIVE_TO_PARENT, 0.0f,
         * Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT,
         * 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
         */
        Animation inFromLeft = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
                0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
                Animation.RELATIVE_TO_SELF, 0.0f);
        inFromLeft.setDuration(500);
        inFromLeft.setInterpolator(new AccelerateInterpolator());
        return inFromLeft;
    }

    private Animation outToRightAnimation() {
        // Animation outtoRight = new TranslateAnimation(
        /*
         * Animation outtoRight = new
         * ScaleAnimation(Animation.RELATIVE_TO_PARENT, 0.0f,
         * Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT,
         * 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
         */
        Animation outtoRight = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
                0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
                Animation.RELATIVE_TO_SELF, 0.0f);
        outtoRight.setDuration(500);
        outtoRight.setInterpolator(new AccelerateInterpolator());
        return outtoRight;
    }

Ответ 4

package com.example;

import android.app.Activity;
import android.os.Bundle;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ViewFlipper;

 public class TeeenAni extends Activity {

ViewFlipper flipper;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ImageView image = (ImageView) findViewById(R.id.ImageView01);
    Animation hyperspaceJump = 
     AnimationUtils.loadAnimation(this, R.anim.);
    image.startAnimation(hyperspaceJump);
   flipper = (ViewFlipper) findViewById(R.anim.hyperspace_jump);

    Button button1 = (Button) findViewById(R.id.Button01); 

    Button button2 = (Button) findViewById(R.id.Button02);
}
    private Animation inFromRightAnimation() {


        Animation inFromRight = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
                0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
                Animation.RELATIVE_TO_SELF, 0.0f);

        inFromRight.setDuration(500);
        inFromRight.setInterpolator(new AccelerateInterpolator());
        return inFromRight;
    }

    private Animation outToLeftAnimation() {

        Animation outtoLeft = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
                0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
                Animation.RELATIVE_TO_SELF, 0.0f);
        outtoLeft.setDuration(500);
        outtoLeft.setInterpolator(new AccelerateInterpolator());
        return outtoLeft;
    }

    private Animation inFromLeftAnimation() {

        Animation inFromLeft = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
                0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
                Animation.RELATIVE_TO_SELF, 0.0f);
        inFromLeft.setDuration(500);
        inFromLeft.setInterpolator(new AccelerateInterpolator());
        return inFromLeft;
    }

    private Animation outToRightAnimation() {

        Animation outtoRight = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
                0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
                Animation.RELATIVE_TO_SELF, 0.0f);
        outtoRight.setDuration(500);
        outtoRight.setInterpolator(new AccelerateInterpolator());
        return outtoRight;
    }

[R.anim.hyperspace_jump] [1]   }

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/hello"
/>
 <ImageView android:id="@+id/ImageView01" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content">
 </ImageView>

<ViewFlipper android:id="@+id/details"
android:layout_width="fill_parent" 
android:layout_height="fill_parent"/>

 <Button android:id="@+id/Button01" 
 android:layout_height="wrap_content" 
 android:layout_width="wrap_content" 
 android:text="Home"></Button>
<Button android:id="@+id/Button02" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="Gallary"></Button>