David Morrissey | 44e2492 | 2017-11-20 10:36:41 +0000 | [diff] [blame] | 1 | package com.davemorrissey.labs.subscaleview.test.animation; |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 2 | |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 3 | import android.graphics.PointF; |
| 4 | import android.os.Bundle; |
David Morrissey | c930ef7 | 2017-11-02 18:27:22 +0000 | [diff] [blame] | 5 | import android.support.annotation.Nullable; |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 6 | import android.view.View; |
David Morrissey | 59a6c8b | 2015-03-03 22:36:16 +0000 | [diff] [blame] | 7 | |
| 8 | import com.davemorrissey.labs.subscaleview.ImageSource; |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 9 | import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder; |
David Morrissey | 44e2492 | 2017-11-20 10:36:41 +0000 | [diff] [blame] | 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; |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 14 | |
| 15 | import java.util.Arrays; |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 16 | import java.util.Random; |
| 17 | |
David Morrissey | c930ef7 | 2017-11-02 18:27:22 +0000 | [diff] [blame] | 18 | import static com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.*; |
David Morrissey | 44e2492 | 2017-11-20 10:36:41 +0000 | [diff] [blame] | 19 | import static com.davemorrissey.labs.subscaleview.test.R.string.*; |
| 20 | import static com.davemorrissey.labs.subscaleview.test.R.layout.*; |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 21 | |
David Morrissey | c930ef7 | 2017-11-02 18:27:22 +0000 | [diff] [blame] | 22 | public class AnimationActivity extends AbstractPagesActivity { |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 23 | |
David Morrissey | c930ef7 | 2017-11-02 18:27:22 +0000 | [diff] [blame] | 24 | private PinView view; |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 25 | |
David Morrissey | c930ef7 | 2017-11-02 18:27:22 +0000 | [diff] [blame] | 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 | } |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 34 | |
| 35 | @Override |
David Morrissey | c930ef7 | 2017-11-02 18:27:22 +0000 | [diff] [blame] | 36 | protected void onCreate(@Nullable Bundle savedInstanceState) { |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 37 | super.onCreate(savedInstanceState); |
David Morrissey | c930ef7 | 2017-11-02 18:27:22 +0000 | [diff] [blame] | 38 | findViewById(id.play).setOnClickListener(new OnClickListener() { |
| 39 | @Override public void onClick(View v) { AnimationActivity.this.play(); } |
| 40 | }); |
| 41 | view = findViewById(id.imageView); |
David Morrissey | f953721 | 2017-12-11 09:00:33 +0000 | [diff] [blame] | 42 | view.setImage(ImageSource.asset("sanmartino.jpg")); |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 43 | } |
| 44 | |
| 45 | @Override |
David Morrissey | c930ef7 | 2017-11-02 18:27:22 +0000 | [diff] [blame] | 46 | protected void onPageChanged(int page) { |
| 47 | if (page == 2) { |
| 48 | view.setPanLimit(PAN_LIMIT_CENTER); |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 49 | } else { |
David Morrissey | c930ef7 | 2017-11-02 18:27:22 +0000 | [diff] [blame] | 50 | view.setPanLimit(PAN_LIMIT_INSIDE); |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 51 | } |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 52 | } |
| 53 | |
David Morrissey | c930ef7 | 2017-11-02 18:27:22 +0000 | [diff] [blame] | 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 | } |
David Morrissey | 00cce30 | 2014-06-10 00:28:49 +0100 | [diff] [blame] | 68 | } |
| 69 | } |
| 70 | |
| 71 | } |