package redstar.onboarding.fragment; import android.databinding.DataBindingUtil; import android.graphics.Point; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import redstar.onboarding.R; import redstar.onboarding.databinding.FragmentSceneTwoBinding; import redstar.onboarding.helper.ViewHelper; /** * Created by Eoin on 8/8/16. */ public class SceneTwoFragment extends BaseSceneFragment { private FragmentSceneTwoBinding binding; public static SceneTwoFragment newInstance(int position) { SceneTwoFragment scene = new SceneTwoFragment(); Bundle args = new Bundle(); args.putInt(KEY_POSITION, position); scene.setArguments(args); return scene; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) { binding = DataBindingUtil.inflate(inflater, R.layout.fragment_scene_two, container, false); setRootPositionTag(binding.root); return binding.getRoot(); } @Override public void enterScene(ImageView sharedElement, float position) { binding.root.setAlpha(1); moveSnsIconOut(position, sharedElement, binding.amebaIcon); moveSnsIconOut(position, sharedElement, binding.facebookIcon); moveSnsIconOut(position, sharedElement, binding.twitterIcon); // scale icons up scaleIcon(binding.amebaIcon, 1 - position); scaleIcon(binding.facebookIcon, 1 - position); scaleIcon(binding.twitterIcon, 1 - position); } @Override public void centerScene(ImageView sharedElement) { sharedElement.setTranslationY( -getResources().getDimension(R.dimen.tutorial_shared_element_translate_y)); setSharedImageRadius(sharedElement, 1); } //position goes from -1.0 to 0.0 @Override public void exitScene(ImageView sharedElement, float position) { binding.root.setAlpha(1); // scale icons down scaleIcon(binding.amebaIcon, 1 + position); scaleIcon(binding.facebookIcon, 1 + position); scaleIcon(binding.twitterIcon, 1 + position); binding.amebaIcon.setAlpha(1 + position); binding.facebookIcon.setAlpha(1 + position); binding.twitterIcon.setAlpha(1 + position); } @Override public void notInScene() { binding.root.setAlpha(0); } private void moveSnsIconOut(float position, ImageView sharedElement, ImageView icon) { Point iconCenter = ViewHelper.getViewCenterPoint(icon); Point sharedCenter = ViewHelper.getViewCenterPoint(sharedElement); float distanceX = (sharedCenter.x - iconCenter.x) * position; float distanceY = (sharedCenter.y - iconCenter.y) * position; // multiple position again for an accelerate effect icon.setTranslationX(distanceX * position); icon.setTranslationY(distanceY * position); } private void scaleIcon(ImageView icon, float position) { icon.setScaleX(position); icon.setScaleY(position); } }