package org.itsnat.itsnatdroidtest.testact.local.asset; import android.animation.Animator; import android.animation.AnimatorInflater; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.view.LayoutInflater; import android.view.View; import android.view.animation.AlphaAnimation; import android.view.animation.AnimationSet; import android.view.animation.AnimationUtils; import android.view.animation.RotateAnimation; import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; import android.widget.AdapterViewFlipper; import android.widget.ArrayAdapter; import android.widget.ScrollView; import android.widget.TextView; import org.itsnat.droid.InflatedLayout; import org.itsnat.itsnatdroidtest.R; import org.itsnat.itsnatdroidtest.testact.TestActivity; import org.itsnat.itsnatdroidtest.testact.TestActivityTabFragment; import org.itsnat.itsnatdroidtest.testact.util.Assert; import java.util.ArrayList; /** * Created by jmarranz on 16/07/14. */ public class TestSetupAssetLayoutAnimations1 extends TestSetupAssetLayoutBase { private static View view_compiled; private static View view_assets; public TestSetupAssetLayoutAnimations1(TestActivityTabFragment fragment) { super(fragment); } public void test() { final TestActivity act = fragment.getTestActivity(); final View compiledRootView = loadCompiledAndBindBackReloadButtons(R.layout.test_local_layout_animations_1_compiled); final View buttonReload = compiledRootView.findViewById(R.id.buttonReload); buttonReload.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TEST de carga dinámica de layout guardado localmente InflatedLayout layout = loadAssetAndBindBackReloadButtons("res/layout/test_local_layout_animations_1_asset.xml"); View dynamicRootView = layout.getRootView(); initialConfiguration(act, dynamicRootView,layout); TestAssetLayoutAnimations1.test((ScrollView) compiledRootView, (ScrollView) dynamicRootView); } }); initialConfiguration(act, compiledRootView,null); } private static void initialConfiguration(TestActivity act, View rootView,InflatedLayout layout) { // Animator tests defineObjectAnimatorTests(act, rootView,layout); defineValueAnimatorTests(act, rootView,layout); defineSetAnimatorTests(act, rootView,layout); // Animation tests defineAlphaAnimationTests(act, rootView,layout); defineRotateAnimationTests(act, rootView,layout); defineScaleAnimationTests(act, rootView,layout); defineTranslateAnimationTests(act, rootView,layout); defineAnimationSetTests(act,rootView,layout); itsNatResourcesOtherTests(act,rootView,layout); } private static void defineObjectAnimatorTests(TestActivity act, View rootView,InflatedLayout layout) { // Resources res = act.getResources(); AdapterViewFlipper viewFlipper; ArrayAdapter<CharSequence> adapter; viewFlipper = (AdapterViewFlipper) rootView.findViewById(R.id.objectAnimatorTestId1); adapter = ArrayAdapter.createFromResource(act, R.array.sports_array, android.R.layout.simple_list_item_1); viewFlipper.setAdapter(adapter); viewFlipper = (AdapterViewFlipper) rootView.findViewById(R.id.objectAnimatorTestId2); adapter = ArrayAdapter.createFromResource(act, R.array.sports_array, android.R.layout.simple_list_item_1); viewFlipper.setAdapter(adapter); viewFlipper = (AdapterViewFlipper) rootView.findViewById(R.id.objectAnimatorTestId3); adapter = ArrayAdapter.createFromResource(act, R.array.sports_array, android.R.layout.simple_list_item_1); viewFlipper.setAdapter(adapter); viewFlipper = (AdapterViewFlipper) rootView.findViewById(R.id.objectAnimatorTestId4); if (layout == null) { adapter = ArrayAdapter.createFromResource(act, R.array.sports_array, android.R.layout.simple_list_item_1); } else { CharSequence[] sportsArray = layout.getItsNatResources().getTextArray("@assets:array/res/values/arrays_asset.xml:sports_array"); adapter = new ArrayAdapter<CharSequence>(act,android.R.layout.simple_list_item_1,sportsArray); } viewFlipper.setAdapter(adapter); } private static void defineValueAnimatorTests(TestActivity act, View rootView,InflatedLayout layout) { final TextView textView = (TextView) rootView.findViewById(R.id.valueAnimatorTestId1); ValueAnimator valueAnimator; if (layout == null) valueAnimator = (ValueAnimator)AnimatorInflater.loadAnimator(act,R.animator.test_value_animator_compiled); else valueAnimator = (ValueAnimator)layout.getItsNatResources().getAnimator("@assets:animator/res/animator/test_value_animator_asset.xml"); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animation) { Integer value = (Integer) animation.getAnimatedValue(); textView.setBackgroundColor(value); } }); valueAnimator.start(); Assert.assertEquals(valueAnimator.getDuration(), 2000); Assert.assertEquals(valueAnimator.getRepeatCount(), -1); Assert.assertEquals(valueAnimator.getRepeatMode(), 2); Assert.assertEquals(valueAnimator.getStartDelay(), 10); } private static void defineSetAnimatorTests(TestActivity act, View rootView,InflatedLayout layout) { final TextView textView = (TextView) rootView.findViewById(R.id.animatorSetTestId1); final AnimatorSet animatorSet; if (layout == null) animatorSet = (AnimatorSet)AnimatorInflater.loadAnimator(act,R.animator.test_animator_set_compiled); else animatorSet = (AnimatorSet)layout.getItsNatResources().getAnimator("@assets:animator/res/animator/test_animator_set_asset.xml"); animatorSet.setTarget(textView); animatorSet.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { animatorSet.start(); } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); animatorSet.start(); testAnimatorSet(animatorSet,-1); } private static void testAnimatorSet(AnimatorSet animatorSetParent,int indexParent) { ArrayList<Animator> list = animatorSetParent.getChildAnimations(); for(int i = 0; i < list.size() ; i++) { Animator anim = list.get(i); if (indexParent == -1) { if (i == 0) { AnimatorSet animSet = (AnimatorSet)anim; testAnimatorSet(animSet,0); } else if (i == 1) { ObjectAnimator objAnim = (ObjectAnimator)anim; Assert.assertEquals(objAnim.getPropertyName(), "alpha"); Assert.assertEquals(objAnim.getDuration(), 2000); // Los valores ya se testean más a fondo en otro sitio, esto es un test de AnimatorSet // android:valueFrom="0" android:valueTo="1" } } else if (indexParent == 0) { if (i == 0) { ObjectAnimator objAnim = (ObjectAnimator)anim; Assert.assertEquals(objAnim.getPropertyName(), "x"); Assert.assertEquals(objAnim.getDuration(), 1000); // Los valores ya se testean más a fondo en otro sitio, esto es un test de AnimatorSet // android:valueType="floatType" android:valueFrom="0" android:valueTo="100.3dp" } else if (i == 1) { ObjectAnimator objAnim = (ObjectAnimator)anim; Assert.assertEquals(objAnim.getPropertyName(), "backgroundColor"); Assert.assertEquals(objAnim.getDuration(), 1000); // Los valores ya se testean más a fondo en otro sitio, esto es un test de AnimatorSet // android:valueFrom="#FFFF8000" android:valueTo="#FFFF80FF" } } } } private static void defineAlphaAnimationTests(TestActivity act, View rootView,InflatedLayout layout) { TextView textView = (TextView) rootView.findViewById(R.id.alphaAnimationTestId1); AlphaAnimation alphaAnimation; if (layout == null) alphaAnimation = (AlphaAnimation) AnimationUtils.loadAnimation(act,R.anim.test_animation_alpha_compiled); else alphaAnimation = (AlphaAnimation) layout.getItsNatResources().getAnimation("@assets:anim/res/anim/test_animation_alpha_asset.xml"); textView.startAnimation(alphaAnimation); TestAssetLayoutAnimations1.testAlphaAnimation(alphaAnimation); } private static void defineRotateAnimationTests(TestActivity act, View rootView,InflatedLayout layout) { TextView textView = (TextView) rootView.findViewById(R.id.rotateAnimationTestId1); RotateAnimation rotateAnimation; if (layout == null) rotateAnimation = (RotateAnimation) AnimationUtils.loadAnimation(act,R.anim.test_animation_rotate_compiled); else rotateAnimation = (RotateAnimation) layout.getItsNatResources().getAnimation("@assets:anim/res/anim/test_animation_rotate_asset.xml"); textView.startAnimation(rotateAnimation); TestAssetLayoutAnimations1.testRotateAnimation(rotateAnimation); } private static void defineScaleAnimationTests(TestActivity act, View rootView,InflatedLayout layout) { TextView textView = (TextView) rootView.findViewById(R.id.scaleAnimationTestId1); ScaleAnimation animation; if (layout == null) animation = (ScaleAnimation) AnimationUtils.loadAnimation(act,R.anim.test_animation_scale_compiled); else animation = (ScaleAnimation) layout.getItsNatResources().getAnimation("@assets:anim/res/anim/test_animation_scale_asset.xml"); textView.startAnimation(animation); TestAssetLayoutAnimations1.testScaleAnimation(animation); } private static void defineTranslateAnimationTests(TestActivity act, View rootView,InflatedLayout layout) { { TextView textView = (TextView) rootView.findViewById(R.id.translateAnimationTestId1); TranslateAnimation animation; if (layout == null) animation = (TranslateAnimation) AnimationUtils.loadAnimation(act, R.anim.test_animation_translate_1_compiled); else animation = (TranslateAnimation) layout.getItsNatResources().getAnimation("@assets:anim/res/anim/test_animation_translate_1_asset.xml"); textView.startAnimation(animation); TestAssetLayoutAnimations1.testTranslateAnimation_1(animation); } { TextView textView = (TextView) rootView.findViewById(R.id.translateAnimationTestId2); TranslateAnimation animation; if (layout == null) animation = (TranslateAnimation) AnimationUtils.loadAnimation(act, R.anim.test_animation_translate_2_compiled); else animation = (TranslateAnimation) layout.getItsNatResources().getAnimation("@assets:anim/res/anim/test_animation_translate_2_asset.xml"); textView.startAnimation(animation); TestAssetLayoutAnimations1.testTranslateAnimation_2(animation); } } private static void defineAnimationSetTests(TestActivity act, View rootView,InflatedLayout layout) { TextView textView = (TextView) rootView.findViewById(R.id.animationSetTestId1); AnimationSet animation; if (layout == null) animation = (AnimationSet) AnimationUtils.loadAnimation(act, R.anim.test_animation_set_compiled); else animation = (AnimationSet) layout.getItsNatResources().getAnimation("@assets:anim/res/anim/test_animation_set_asset.xml"); textView.startAnimation(animation); TestAssetLayoutAnimations1.testAnimationSet(animation); } private static void itsNatResourcesOtherTests(TestActivity act, View rootView, InflatedLayout layout) { // Test ItsNatResources.getLayout() if (layout == null) { view_compiled = LayoutInflater.from(rootView.getContext()).inflate(R.layout.auto_complete_text_view_hint_view_compiled, null); Assert.assertNotNull(view_compiled); } else { view_assets = layout.getItsNatResources().getLayout("@assets:layout/res/layout/auto_complete_text_view_hint_view_asset.xml", null, -1); Assert.assertNotNull(view_assets); Assert.assertEquals(view_compiled.getId(),view_assets.getId()); view_compiled = null; view_assets = null; } } }