blob: 41666987e7d3ccf67821645b2b3eba6f5bba52a4 [file] [log] [blame]
David Morrissey44e24922017-11-20 10:36:41 +00001package com.davemorrissey.labs.subscaleview.test.animation;
David Morrissey00cce302014-06-10 00:28:49 +01002
David Morrissey00cce302014-06-10 00:28:49 +01003import android.graphics.PointF;
4import android.os.Bundle;
David Morrisseyc930ef72017-11-02 18:27:22 +00005import android.support.annotation.Nullable;
David Morrissey00cce302014-06-10 00:28:49 +01006import android.view.View;
David Morrissey59a6c8b2015-03-03 22:36:16 +00007
8import com.davemorrissey.labs.subscaleview.ImageSource;
David Morrissey00cce302014-06-10 00:28:49 +01009import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder;
David Morrissey44e24922017-11-20 10:36:41 +000010import com.davemorrissey.labs.subscaleview.test.AbstractPagesActivity;
11import com.davemorrissey.labs.subscaleview.test.Page;
12import com.davemorrissey.labs.subscaleview.test.R.id;
13import com.davemorrissey.labs.subscaleview.test.extension.views.PinView;
David Morrissey00cce302014-06-10 00:28:49 +010014
15import java.util.Arrays;
David Morrissey00cce302014-06-10 00:28:49 +010016import java.util.Random;
17
David Morrisseyc930ef72017-11-02 18:27:22 +000018import static com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.*;
David Morrissey44e24922017-11-20 10:36:41 +000019import static com.davemorrissey.labs.subscaleview.test.R.string.*;
20import static com.davemorrissey.labs.subscaleview.test.R.layout.*;
David Morrissey00cce302014-06-10 00:28:49 +010021
David Morrisseyc930ef72017-11-02 18:27:22 +000022public class AnimationActivity extends AbstractPagesActivity {
David Morrissey00cce302014-06-10 00:28:49 +010023
David Morrisseyc930ef72017-11-02 18:27:22 +000024 private PinView view;
David Morrissey00cce302014-06-10 00:28:49 +010025
David Morrisseyc930ef72017-11-02 18:27:22 +000026 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 }
David Morrissey00cce302014-06-10 00:28:49 +010034
35 @Override
David Morrisseyc930ef72017-11-02 18:27:22 +000036 protected void onCreate(@Nullable Bundle savedInstanceState) {
David Morrissey00cce302014-06-10 00:28:49 +010037 super.onCreate(savedInstanceState);
David Morrisseyc930ef72017-11-02 18:27:22 +000038 findViewById(id.play).setOnClickListener(new OnClickListener() {
39 @Override public void onClick(View v) { AnimationActivity.this.play(); }
40 });
41 view = findViewById(id.imageView);
David Morrisseyf9537212017-12-11 09:00:33 +000042 view.setImage(ImageSource.asset("sanmartino.jpg"));
David Morrissey00cce302014-06-10 00:28:49 +010043 }
44
45 @Override
David Morrisseyc930ef72017-11-02 18:27:22 +000046 protected void onPageChanged(int page) {
47 if (page == 2) {
48 view.setPanLimit(PAN_LIMIT_CENTER);
David Morrissey00cce302014-06-10 00:28:49 +010049 } else {
David Morrisseyc930ef72017-11-02 18:27:22 +000050 view.setPanLimit(PAN_LIMIT_INSIDE);
David Morrissey00cce302014-06-10 00:28:49 +010051 }
David Morrissey00cce302014-06-10 00:28:49 +010052 }
53
David Morrisseyc930ef72017-11-02 18:27:22 +000054 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 }
David Morrissey00cce302014-06-10 00:28:49 +010068 }
69 }
70
71}