Home | History | Annotate | Download | only in animation
      1 package com.davemorrissey.labs.subscaleview.test.animation;
      2 
      3 import android.graphics.PointF;
      4 import android.os.Bundle;
      5 import android.support.annotation.Nullable;
      6 import android.view.View;
      7 
      8 import com.davemorrissey.labs.subscaleview.ImageSource;
      9 import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder;
     10 import com.davemorrissey.labs.subscaleview.test.AbstractPagesActivity;
     11 import com.davemorrissey.labs.subscaleview.test.Page;
     12 import com.davemorrissey.labs.subscaleview.test.R.id;
     13 import com.davemorrissey.labs.subscaleview.test.extension.views.PinView;
     14 
     15 import java.util.Arrays;
     16 import java.util.Random;
     17 
     18 import static com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.*;
     19 import static com.davemorrissey.labs.subscaleview.test.R.string.*;
     20 import static com.davemorrissey.labs.subscaleview.test.R.layout.*;
     21 
     22 public class AnimationActivity extends AbstractPagesActivity {
     23 
     24     private PinView view;
     25 
     26     public AnimationActivity() {
     27         super(animation_title, animation_activity, Arrays.asList(
     28                 new Page(animation_p1_subtitle, animation_p1_text),
     29                 new Page(animation_p2_subtitle, animation_p2_text),
     30                 new Page(animation_p3_subtitle, animation_p3_text),
     31                 new Page(animation_p4_subtitle, animation_p4_text)
     32         ));
     33     }
     34 
     35     @Override
     36     protected void onCreate(@Nullable Bundle savedInstanceState) {
     37         super.onCreate(savedInstanceState);
     38         findViewById(id.play).setOnClickListener(new OnClickListener() {
     39             @Override public void onClick(View v) { AnimationActivity.this.play(); }
     40         });
     41         view = findViewById(id.imageView);
     42         view.setImage(ImageSource.asset("sanmartino.jpg"));
     43     }
     44 
     45     @Override
     46     protected void onPageChanged(int page) {
     47         if (page == 2) {
     48             view.setPanLimit(PAN_LIMIT_CENTER);
     49         } else {
     50             view.setPanLimit(PAN_LIMIT_INSIDE);
     51         }
     52     }
     53 
     54     private void play() {
     55         Random random = new Random();
     56         if (view.isReady()) {
     57             float maxScale = view.getMaxScale();
     58             float minScale = view.getMinScale();
     59             float scale = (random.nextFloat() * (maxScale - minScale)) + minScale;
     60             PointF center = new PointF(random.nextInt(view.getSWidth()), random.nextInt(view.getSHeight()));
     61             view.setPin(center);
     62             AnimationBuilder animationBuilder = view.animateScaleAndCenter(scale, center);
     63             if (getPage() == 3) {
     64                 animationBuilder.withDuration(2000).withEasing(EASE_OUT_QUAD).withInterruptible(false).start();
     65             } else {
     66                 animationBuilder.withDuration(750).start();
     67             }
     68         }
     69     }
     70 
     71 }
     72