1/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5 * except in compliance with the License. You may obtain a copy of the License at
6 *
7 *      http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the
10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11 * KIND, either express or implied. See the License for the specific language governing
12 * permissions and limitations under the License.
13 */
14
15package com.android.egg.octo;
16
17import android.app.Activity;
18import android.os.Bundle;
19import android.view.MotionEvent;
20import android.view.View;
21import android.view.ViewGroup;
22import android.widget.FrameLayout;
23import android.widget.ImageView;
24
25import com.android.egg.R;
26
27public class Ocquarium extends Activity {
28    ImageView mImageView;
29    private OctopusDrawable mOcto;
30
31    @Override
32    protected void onCreate(Bundle savedInstanceState) {
33        super.onCreate(savedInstanceState);
34        final float dp = getResources().getDisplayMetrics().density;
35
36        getWindow().setBackgroundDrawableResource(R.drawable.octo_bg);
37
38        FrameLayout bg = new FrameLayout(this);
39        setContentView(bg);
40        bg.setAlpha(0f);
41        bg.animate().setStartDelay(500).setDuration(5000).alpha(1f).start();
42
43        mImageView = new ImageView(this);
44        bg.addView(mImageView, new FrameLayout.LayoutParams(
45                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
46
47        mOcto = new OctopusDrawable(getApplicationContext());
48        mOcto.setSizePx((int) (OctopusDrawable.randfrange(40f,180f) * dp));
49        mImageView.setImageDrawable(mOcto);
50
51        mImageView.setOnTouchListener(new View.OnTouchListener() {
52            boolean touching;
53            @Override
54            public boolean onTouch(View view, MotionEvent motionEvent) {
55                switch (motionEvent.getActionMasked()) {
56                    case MotionEvent.ACTION_DOWN:
57                        if (mOcto.hitTest(motionEvent.getX(), motionEvent.getY())) {
58                            touching = true;
59                            mOcto.stopDrift();
60                        }
61                        break;
62                    case MotionEvent.ACTION_MOVE:
63                        if (touching) {
64                            mOcto.moveTo(motionEvent.getX(), motionEvent.getY());
65                        }
66                        break;
67                    case MotionEvent.ACTION_UP:
68                    case MotionEvent.ACTION_CANCEL:
69                        touching = false;
70                        mOcto.startDrift();
71                        break;
72                }
73                return true;
74            }
75        });
76    }
77
78    @Override
79    protected void onPause() {
80        mOcto.stopDrift();
81        super.onPause();
82    }
83
84    @Override
85    protected void onResume() {
86        super.onResume();
87        mOcto.startDrift();
88    }
89}
90