Android-анимации для просмотра флиппера? - PullRequest
1 голос
/ 23 июня 2011

Я ищу анимацию для флиппера вида.

Как мне анимировать, чтобы при нажатии кнопки вид в основном возвращался вперед? где с одной стороны вид карты, а с другой - список.

У меня выше работает, за исключением анимации. Может ли кто-нибудь помочь или объяснить мне анимацию Android

правка добавлена ​​сюда

вот код для анимации вращения, как я могу реализовать это в xml

public class Rotate3dAnimation extends Animation {
    private final float mFromDegrees;
    private final float mToDegrees;
    private final float mCenterX;
    private final float mCenterY;
    private final float mDepthZ;
    private final boolean mReverse;
    private Camera mCamera;

/**
 * Creates a new 3D rotation on the Y axis. The rotation is defined by its
 * start angle and its end angle. Both angles are in degrees. The rotation
 * is performed around a center point on the 2D space, definied by a pair
 * of X and Y coordinates, called centerX and centerY. When the animation
 * starts, a translation on the Z axis (depth) is performed. The length
 * of the translation can be specified, as well as whether the translation
 * should be reversed in time.
 *
 * @param fromDegrees the start angle of the 3D rotation
 * @param toDegrees the end angle of the 3D rotation
 * @param centerX the X center of the 3D rotation
 * @param centerY the Y center of the 3D rotation
 * @param reverse true if the translation should be reversed, false otherwise
 */
public Rotate3dAnimation(float fromDegrees, float toDegrees,
        float centerX, float centerY, float depthZ, boolean reverse) {
    mFromDegrees = fromDegrees;
    mToDegrees = toDegrees;
    mCenterX = centerX;
    mCenterY = centerY;
    mDepthZ = depthZ;
    mReverse = reverse;
}

@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
    super.initialize(width, height, parentWidth, parentHeight);
    mCamera = new Camera();
}

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
    final float fromDegrees = mFromDegrees;
    float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);

    final float centerX = mCenterX;
    final float centerY = mCenterY;
    final Camera camera = mCamera;

    final Matrix matrix = t.getMatrix();

    camera.save();
    if (mReverse) {
        camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
    } else {
        camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));
    }
    camera.rotateY(degrees);
    camera.getMatrix(matrix);
    camera.restore();

    matrix.preTranslate(-centerX, -centerY);
    matrix.postTranslate(centerX, centerY);
}

}

1 Ответ

0 голосов
/ 23 июня 2011

Это зависит от того, что вы хотите сделать, но вы можете посмотреть wingine для Android SDK, на примере переходов ... посмотрите код, документация на китайском языке, вы можете просто прочитать код.

Также обратите внимание на блог Chet Haase, в котором приведены некоторые советы: http://graphics -geek.blogspot.com / у него есть куча вещей, связанных с анимацией.Уровень API таргетинга 12, который займет всего одну строку кода с использованием метода objectToAnimate.rotateYBy (360) .setDuration (250f)

...