/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
/**
*
* @author sihai
*
*/
public class PhotoOneUpAnimationController {
private final boolean mAdjustMargins;
private float mCurrentOffset;
private final boolean mSlideFromTop;
private final android.view.animation.Animation.AnimationListener mSlideInListener = new android.view.animation.Animation.AnimationListener() {
public final void onAnimationEnd(Animation animation) {
if(1 == mState) {
mState = 2;
mCurrentOffset = 0.0F;
} else if(2 == mState) {
} else if(3 == mState) {
mState = 0;
mCurrentOffset = (float)getHideOffset(mSlideFromTop);
}
updateVisibility();
return;
}
public final void onAnimationRepeat(Animation animation)
{
}
public final void onAnimationStart(Animation animation) {
if(0 == mState) {
mState = 1;
} else if(1 == mState) {
} else if(2 == mState) {
mState = 3;
}
updateVisibility();
return;
}
};
private int mState;
private final View mView;
public PhotoOneUpAnimationController(View view, boolean flag, boolean flag1)
{
mState = 2;
mView = view;
mSlideFromTop = flag;
mAdjustMargins = flag1;
}
private void startAnimation(float f, int i)
{
Animation animation = mView.getAnimation();
if(animation != null)
animation.cancel();
TranslateAnimation translateanimation = new TranslateAnimation(0.0F, 0.0F, mCurrentOffset, f);
translateanimation.setDuration(100L);
translateanimation.setFillAfter(true);
translateanimation.setAnimationListener(mSlideInListener);
mView.startAnimation(translateanimation);
}
private void updateVisibility() {
boolean flag;
View view;
int j;
View view1;
boolean flag1;
if(mState == 0)
{
flag = false;
} else
{
int i = getHideOffset(mSlideFromTop);
if(!mSlideFromTop && mView.getHeight() > 0 && mCurrentOffset >= (float)i || mSlideFromTop && mView.getHeight() > 0 && mCurrentOffset <= (float)i)
flag = false;
else
flag = true;
}
view = mView;
if(flag || mAdjustMargins)
j = 0;
else
j = 8;
view.setVisibility(j);
view1 = mView;
if(!flag)
{
boolean flag2 = mAdjustMargins;
if(flag2)
view1.setClickable(true);;
}
}
public final void animate(boolean flag) {
if(mState != 0 && mState != 3 || flag) {
if((mState == 2 || mState == 1) && flag)
{
int i = getHideOffset(mSlideFromTop);
startAnimation(i, 100);
mCurrentOffset = i;
}
} else {
startAnimation(0.0F, 100);
}
updateVisibility();
return;
}
protected int getHideOffset(boolean flag)
{
int i;
if(mSlideFromTop)
i = -(mView.getHeight() + mView.getPaddingTop());
else
i = mView.getHeight() + mView.getPaddingBottom();
return i;
}
}