Android Open Source - 101AndroidApps Element Animator






From Project

Back to project page 101AndroidApps.

License

The source code is released under:

Licenced under the Creative Commons Attribution 4.0 licence. For full text see http://creativecommons.org/licenses/by/4.0/

If you think the Android project 101AndroidApps listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.hulzenga.ioi.android.app_005;
/* w  ww .  j  av  a  2s. c o m*/
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.view.View;

import java.util.ArrayList;
import java.util.List;

class ElementAnimator {

  public static final long ANIMATION_LENGTH_SHORT = 250L;
  public static final long ANIMATION_LENGTH_LONG = 1000L;

  private float mWidth;
  private float mGridBlock;

  private int mColumnCount;
  private long mAStep;

  private PropertyValuesHolder mPvhFirstRowInsertion;
  private PropertyValuesHolder mPvhMoveLeft;
  private PropertyValuesHolder mPvhMoveRight;
  private PropertyValuesHolder mPvhMoveUp;
  private PropertyValuesHolder mPvhMoveDown;

  private PropertyValuesHolder mPvhStartUp;
  private PropertyValuesHolder mPvhStartDown;

  private List<PropertyValuesHolder> mPvhMoveLeftForwardInAboveRowList = new ArrayList<>();
  private List<PropertyValuesHolder> mPvhMoveLeftForwardInSameRowList = new ArrayList<>();
  private List<PropertyValuesHolder> mPvhMoveLeftBackwardInSameRowList = new ArrayList<>();
  private List<PropertyValuesHolder> mPvhMoveLeftBackWardInBelowRowList = new ArrayList<>();
  private List<PropertyValuesHolder> mPvhMoveRightForwardInAboveRowList = new ArrayList<>();
  private List<PropertyValuesHolder> mPvhMoveRightForwardInSameRowList = new ArrayList<>();
  private List<PropertyValuesHolder> mPvhMoveRightBackwardInSameRowList = new ArrayList<>();
  private List<PropertyValuesHolder> mPvhMoveRightBackwardInBelowRowList = new ArrayList<>();
  private List<Animator> mAnimatorReturnList = new ArrayList<>();

  public ElementAnimator(float width, float gridBlock, int columnCount) {
    mWidth = width;
    mGridBlock = gridBlock;
    mColumnCount = columnCount;

    mAStep = ANIMATION_LENGTH_LONG / mColumnCount;

    setupAnimators();
  }

  private void setupAnimators() {
    mPvhFirstRowInsertion = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, -mWidth, 0.0f);
    mPvhMoveLeft = PropertyValuesHolder.ofFloat("translationX", +mGridBlock, 0.0f);
    mPvhMoveRight = PropertyValuesHolder.ofFloat("translationX", -mGridBlock, 0.0f);
    mPvhMoveUp = PropertyValuesHolder.ofFloat("translationY", +mGridBlock, 0.0f);
    mPvhMoveDown = PropertyValuesHolder.ofFloat("translationY", -mGridBlock, 0.0f);

    mPvhStartUp = PropertyValuesHolder.ofFloat("translationY", -mGridBlock, -mGridBlock);
    mPvhStartDown = PropertyValuesHolder.ofFloat("translationY", +mGridBlock, +mGridBlock);

    // moves left in above row indexed by final rowIndex
    for (int i = 0; i < mColumnCount; i++) {
      PropertyValuesHolder pvh = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, (mColumnCount - 2 * i - 1)
          * mGridBlock, -i * mGridBlock);
      mPvhMoveLeftForwardInAboveRowList.add(pvh);
    }

    // moves left forward in same row indexed by final rowIndex
    for (int i = 0; i < mColumnCount; i++) {
      PropertyValuesHolder pvh = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, i * mGridBlock, 0);
      mPvhMoveLeftForwardInSameRowList.add(pvh);
    }

    // moves left backward same row indexed by final rowIndex
    for (int i = 0; i < mColumnCount; i++) {
      PropertyValuesHolder pvh = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, +(mColumnCount - i - 1)
          * mGridBlock, 0);
      mPvhMoveLeftBackwardInSameRowList.add(pvh);
    }

    // moves left in below row indexed by final rowIndex
    for (int i = 0; i < mColumnCount; i++) {
      PropertyValuesHolder pvh = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, +(mColumnCount - 2 * i - 1)
          * mGridBlock, +(mColumnCount - i - 1) * mGridBlock);
      mPvhMoveLeftBackWardInBelowRowList.add(pvh);
    }

    // moves right in above row indexed by final rowIndex
    for (int i = 0; i < mColumnCount; i++) {
      PropertyValuesHolder pvh = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, -(mColumnCount - 2 * i - 1)
          * mGridBlock, i * mGridBlock);
      mPvhMoveRightForwardInAboveRowList.add(pvh);
    }

    // moves forward right in same row indexed by final rowIndex
    for (int i = 0; i < mColumnCount; i++) {
      PropertyValuesHolder pvh = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, -i * mGridBlock, 0);
      mPvhMoveRightForwardInSameRowList.add(pvh);
    }

    // moves backward right in same row indexed by final rowIndex
    for (int i = 0; i < mColumnCount; i++) {
      PropertyValuesHolder pvh = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, -(mColumnCount - i - 1)
          * mGridBlock, 0);
      mPvhMoveRightBackwardInSameRowList.add(pvh);
    }

    // moves right in below row indexed by final rowIndex
    for (int i = 0; i < mColumnCount; i++) {
      PropertyValuesHolder pvh = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, -(mColumnCount - 2 * i - 1)
          * mGridBlock, -(mColumnCount - i - 1) * mGridBlock);
      mPvhMoveRightBackwardInBelowRowList.add(pvh);
    }

  }

  public Animator doNothingAnimator(View view) {

    return ObjectAnimator.ofFloat(view, View.ALPHA, 1.0f, 1.0f).setDuration(ANIMATION_LENGTH_SHORT);
  }

  /*
   * First row insertion animators
   */
  public Animator firstRowShortInsertion(View view) {
    return ObjectAnimator.ofPropertyValuesHolder(view, mPvhFirstRowInsertion).setDuration(ANIMATION_LENGTH_SHORT);
  }

  public Animator firstRowLongInsertion(View view) {
    return ObjectAnimator.ofPropertyValuesHolder(view, mPvhFirstRowInsertion).setDuration(ANIMATION_LENGTH_LONG);
  }

  /*
   * Single step animators
   */
  public Animator moveLeft(View view) {
    return ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveLeft).setDuration(ANIMATION_LENGTH_SHORT);
  }

  public Animator moveRight(View view) {
    return ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveRight).setDuration(ANIMATION_LENGTH_SHORT);
  }

  public Animator moveUp(View view) {
    return ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveUp).setDuration(ANIMATION_LENGTH_SHORT);
  }

  public Animator moveDown(View view) {
    return ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveDown).setDuration(ANIMATION_LENGTH_SHORT);
  }

  /*
   * Row shift Animators
   */
  public List<Animator> moveEvenRowDown(View view, int rowIndex) {

    mAnimatorReturnList.clear();

    // move left in above row
    long duration = mAStep * (mColumnCount - rowIndex - 1);

    Animator animator = ObjectAnimator.ofPropertyValuesHolder(view,
        mPvhMoveLeftForwardInAboveRowList.get(rowIndex),
        mPvhStartUp);
    animator.setDuration(duration);
    mAnimatorReturnList.add(animator);

    long delay = duration;

    // move 1 down
    duration = mAStep;

    animator = ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveDown);
    animator.setDuration(duration);
    animator.setStartDelay(delay);
    mAnimatorReturnList.add(animator);

    delay += duration;

    // move right final position
    duration = mAStep * rowIndex;

    animator = ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveRightForwardInSameRowList.get(rowIndex));
    animator.setDuration(duration);
    animator.setStartDelay(delay);
    mAnimatorReturnList.add(animator);

    return mAnimatorReturnList;
  }

  public List<Animator> moveOddRowDown(View view, int rowIndex) {

    mAnimatorReturnList.clear();

    // move right in above row
    long duration = mAStep * (mColumnCount - rowIndex - 1);

    Animator animator = ObjectAnimator.ofPropertyValuesHolder(view,
        mPvhMoveRightForwardInAboveRowList.get(rowIndex),
        mPvhStartUp);
    animator.setDuration(duration);
    mAnimatorReturnList.add(animator);

    long delay = duration;

    // move 1 down
    duration = mAStep;

    animator = ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveDown);
    animator.setDuration(duration);
    animator.setStartDelay(delay);
    mAnimatorReturnList.add(animator);

    delay += duration;

    // move left final position
    duration = mAStep * rowIndex;

    animator = ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveLeftForwardInSameRowList.get(rowIndex));
    animator.setDuration(duration);
    animator.setStartDelay(delay);
    mAnimatorReturnList.add(animator);

    return mAnimatorReturnList;
  }

  public List<Animator> moveEvenRowUp(View view, int rowIndex) {

    mAnimatorReturnList.clear();

    // move left in below row
    long duration = mAStep * rowIndex;

    Animator animator = ObjectAnimator.ofPropertyValuesHolder(view,
        mPvhMoveLeftBackWardInBelowRowList.get(rowIndex),
        mPvhStartDown);
    animator.setDuration(duration);
    mAnimatorReturnList.add(animator);

    long delay = duration;

    // move 1 down
    duration = mAStep;

    animator = ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveUp);
    animator.setDuration(duration);
    animator.setStartDelay(delay);
    mAnimatorReturnList.add(animator);

    delay += duration;

    // move right to final position
    duration = mAStep * (mColumnCount - rowIndex - 1);

    animator = ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveLeftBackwardInSameRowList.get(rowIndex));
    animator.setDuration(duration);
    animator.setStartDelay(delay);
    mAnimatorReturnList.add(animator);

    return mAnimatorReturnList;
  }

  public List<Animator> moveOddRowUp(View view, int rowIndex) {

    mAnimatorReturnList.clear();

    // move right in below row
    long duration = mAStep * rowIndex;

    Animator animator = ObjectAnimator.ofPropertyValuesHolder(view,
        mPvhMoveRightBackwardInBelowRowList.get(rowIndex),
        mPvhStartDown);
    animator.setDuration(duration);
    mAnimatorReturnList.add(animator);

    long delay = duration;

    // move 1 down
    duration = mAStep;

    animator = ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveUp);
    animator.setDuration(duration);
    animator.setStartDelay(delay);
    mAnimatorReturnList.add(animator);

    delay += duration;

    // move left to final position
    duration = mAStep * (mColumnCount - rowIndex - 1);

    animator = ObjectAnimator.ofPropertyValuesHolder(view, mPvhMoveRightBackwardInSameRowList.get(rowIndex));
    animator.setDuration(duration);
    animator.setStartDelay(delay);
    mAnimatorReturnList.add(animator);

    return mAnimatorReturnList;
  }
}




Java Source Code List

com.hulzenga.ioi.android.AppActivity.java
com.hulzenga.ioi.android.AppDetailsDialog.java
com.hulzenga.ioi.android.App.java
com.hulzenga.ioi.android.TableOfContentsActivity.java
com.hulzenga.ioi.android.app_001.HelloWorldActivity.java
com.hulzenga.ioi.android.app_002.Ball.java
com.hulzenga.ioi.android.app_002.BouncyBallsActivity.java
com.hulzenga.ioi.android.app_002.BouncyBallsView.java
com.hulzenga.ioi.android.app_003.MonsterDatabaseActivity.java
com.hulzenga.ioi.android.app_003.MonsterEditDialog.java
com.hulzenga.ioi.android.app_003.MonsterGenerator.java
com.hulzenga.ioi.android.app_003.MonsterListAdapter.java
com.hulzenga.ioi.android.app_003.database.MonsterContract.java
com.hulzenga.ioi.android.app_003.database.MonsterDatabaseHelper.java
com.hulzenga.ioi.android.app_003.database.MonsterProvider.java
com.hulzenga.ioi.android.app_004.BouncyBall3dActivity.java
com.hulzenga.ioi.android.app_004.BouncyBall3dGLSurfaceView.java
com.hulzenga.ioi.android.app_004.BouncyBall3dRenderer.java
com.hulzenga.ioi.android.app_004.BouncyBallGame.java
com.hulzenga.ioi.android.app_005.ElementActivity.java
com.hulzenga.ioi.android.app_005.ElementAdapter.java
com.hulzenga.ioi.android.app_005.ElementAnimator.java
com.hulzenga.ioi.android.app_005.ElementSnakeView.java
com.hulzenga.ioi.android.app_005.ElementView.java
com.hulzenga.ioi.android.app_005.Element.java
com.hulzenga.ioi.android.app_006.EmptyFragment.java
com.hulzenga.ioi.android.app_006.ExposureFragment.java
com.hulzenga.ioi.android.app_006.SettingChangeListener.java
com.hulzenga.ioi.android.app_006.SettingIconFragment.java
com.hulzenga.ioi.android.app_006.SettingMenuFragment.java
com.hulzenga.ioi.android.app_006.SettingMenuLvl2Fragment.java
com.hulzenga.ioi.android.app_006.Setting.java
com.hulzenga.ioi.android.app_006.SimpleCameraActivity.java
com.hulzenga.ioi.android.app_006.SimpleCameraPreview.java
com.hulzenga.ioi.android.app_007.ButtonsFragment.java
com.hulzenga.ioi.android.app_007.HighScores.java
com.hulzenga.ioi.android.app_007.LinksFragment.java
com.hulzenga.ioi.android.app_007.Menu.java
com.hulzenga.ioi.android.app_007.Review.java
com.hulzenga.ioi.android.app_007.Score.java
com.hulzenga.ioi.android.app_007.StatusFragment.java
com.hulzenga.ioi.android.app_007.WikiGameActivity.java
com.hulzenga.ioi.android.app_007.Wiki.java
com.hulzenga.ioi.android.app_008.OverheidActivity.java
com.hulzenga.ioi.android.app_008.OverheidFeedAdapter.java
com.hulzenga.ioi.android.app_008.OverheidFeedFragment.java
com.hulzenga.ioi.android.app_008.OverheidFeedItem.java
com.hulzenga.ioi.android.app_008.OverheidFeed.java
com.hulzenga.ioi.android.app_008.OverheidPagerAdapter.java
com.hulzenga.ioi.android.app_009.ThumbsUpActivity.java
com.hulzenga.ioi.android.app_009.ThumbsUpServer.java
com.hulzenga.ioi.android.app_009.ThumbsUpService.java
com.hulzenga.ioi.android.app_010.CompassActivity.java
com.hulzenga.ioi.android.app_010.CompassDetailsView.java
com.hulzenga.ioi.android.app_010.CompassView.java
com.hulzenga.ioi.android.util.Constrain.java
com.hulzenga.ioi.android.util.DeveloperTools.java
com.hulzenga.ioi.android.util.FileManager.java
com.hulzenga.ioi.android.util.ScreenMetrics.java
com.hulzenga.ioi.android.util.open_gl.ColorFunctionFactory.java
com.hulzenga.ioi.android.util.open_gl.ColorFunction.java
com.hulzenga.ioi.android.util.open_gl.ShaderTools.java
com.hulzenga.ioi.android.util.open_gl.engine.NodeController.java
com.hulzenga.ioi.android.util.open_gl.engine.SceneGraph.java
com.hulzenga.ioi.android.util.open_gl.engine.SceneNode.java
com.hulzenga.ioi.android.util.open_gl.geometry.Box.java
com.hulzenga.ioi.android.util.open_gl.geometry.Cylinder.java
com.hulzenga.ioi.android.util.open_gl.geometry.Geometry.java
com.hulzenga.ioi.android.util.open_gl.geometry.Grid.java
com.hulzenga.ioi.android.util.open_gl.geometry.Sphere.java
com.hulzenga.ioi.android.util.open_gl.geometry.Transform.java
com.hulzenga.ioi.android.util.open_gl.vector.Vec3.java
com.hulzenga.ioi.android.util.open_gl.vector.Vec4.java
fi.iki.elonen.NanoHTTPD.java