package com.eleks.tesla.mainApp;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.OvershootInterpolator;
import android.widget.FrameLayout;
import android.widget.ImageView;
import com.eleks.tesla.teslalib.ApiPathConstants;
import com.eleks.tesla.R;
import com.eleks.tesla.events.LocationMapLoadedEvent;
import com.eleks.tesla.events.ToHandHoldRequestEvent;
import java.util.ArrayList;
import java.util.List;
import de.greenrobot.event.EventBus;
/**
* Created by maryan.melnychuk on 05.03.2015.
*/
public class LocationActivity extends Activity {
public static final int ANIMATION_DURATION = 800;
private ImageView mMapImageView;
private ImageView mPinImageView;
protected int mImageSideSize;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location);
mMapImageView = (ImageView) findViewById(R.id.map_image);
mPinImageView = (ImageView) findViewById(R.id.pin_image);
EventBus.getDefault().post(new ToHandHoldRequestEvent(ApiPathConstants.WEAR_GET_LOCATION_MAP));
EventBus.getDefault().registerSticky(this);
final ViewGroup root = (ViewGroup) findViewById(R.id.root);
root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
setUpPinImage(root.getWidth());
root.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
}
private void setUpPinImage(int width) {
mImageSideSize = (int) (width / 6 * 0.8f);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mPinImageView.getLayoutParams();
lp.width = mImageSideSize;
lp.height = mImageSideSize;
mPinImageView.setLayoutParams(lp);
AnimatorSet animatorSet = new AnimatorSet();
List<Animator> animations = new ArrayList<>(2);
ValueAnimator pinSlideUpAnim = ValueAnimator.ofFloat(0, 1);
pinSlideUpAnim.setDuration(ANIMATION_DURATION);
pinSlideUpAnim.setInterpolator(new OvershootInterpolator());
pinSlideUpAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float animatedValue = (float) animation.getAnimatedValue();
mPinImageView.setTranslationY(-mImageSideSize / 2 * animatedValue);
}
});
animations.add(pinSlideUpAnim);
ObjectAnimator imageAlphaAnim = ObjectAnimator.ofFloat(mPinImageView, "alpha", 0f, 1f);
imageAlphaAnim.setDuration(ANIMATION_DURATION / 2);
imageAlphaAnim.setInterpolator(new AccelerateInterpolator());
animations.add(imageAlphaAnim);
animatorSet.playTogether(animations);
animatorSet.start();
}
public void onEventMainThread(LocationMapLoadedEvent event) {
mMapImageView.setImageBitmap(event.getMapImage());
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}