1faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase/*
2faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * Copyright (C) 2013 The Android Open Source Project
3faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase *
4faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * Licensed under the Apache License, Version 2.0 (the "License");
5faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * you may not use this file except in compliance with the License.
6faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * You may obtain a copy of the License at
7faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase *
8faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase *      http://www.apache.org/licenses/LICENSE-2.0
9faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase *
10faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * Unless required by applicable law or agreed to in writing, software
11faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * distributed under the License is distributed on an "AS IS" BASIS,
12faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * See the License for the specific language governing permissions and
14faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * limitations under the License.
15faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase */
16faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haasepackage com.android.transitiontests;
17faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
18faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.animation.ObjectAnimator;
19faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.animation.ValueAnimator;
20faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.app.Activity;
21faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.content.Context;
22faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.graphics.Canvas;
23faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.graphics.Color;
24faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.graphics.Paint;
25faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.graphics.Rect;
26faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.os.Bundle;
27faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.view.View;
28faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.widget.ImageView;
29faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.widget.RelativeLayout;
30faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
31faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
32faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haasepublic class HitRectBug extends Activity {
33faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    @Override
34faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    protected void onCreate(Bundle savedInstanceState)
35faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    {
36faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        super.onCreate(savedInstanceState);
37faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        setContentView(new TestDrawingView(this));
38faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    }
39faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
40faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    public static class TestDrawingView extends RelativeLayout
41faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    {
42faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        private Rect mRect = new Rect();
43faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        private Paint mPaint;
44faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        private ImageView mImageView;
45faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
46faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        public TestDrawingView(Context context)
47faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        {
48faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            super(context);
49faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            setWillNotDraw(false);
50faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
51faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mPaint = new Paint();
52faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mPaint.setColor(Color.RED);
53faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mPaint.setStyle(Paint.Style.STROKE);
54faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
55faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mImageView = new ImageView(context);
56faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mImageView.setLeft(100);
57faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mImageView.setRight(200);
58faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mImageView.setImageResource(R.drawable.self_portrait_square);
59faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mImageView.setScaleX(3);
60faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mImageView.setScaleY(3);
61faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase//            mImageView.setRotation(145);
62faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
63faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            ObjectAnimator anim = ObjectAnimator.ofFloat(mImageView, View.ROTATION, 0, 360);
64faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            anim.setRepeatCount(ValueAnimator.INFINITE);
65faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            anim.setDuration(5000);
66faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
67faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                @Override
68faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                public void onAnimationUpdate(ValueAnimator animation) {
69faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                    invalidate();
70faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                }
71faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            });
72faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            anim.start();
73faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(128, 128);
74faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            params.addRule(RelativeLayout.CENTER_IN_PARENT);
75faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            addView(mImageView, params);
76faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        }
77faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
78faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        @Override
79faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        protected void onDraw(Canvas canvas)
80faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        {
81faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            super.onDraw(canvas);
82faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        }
83faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
84faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        @Override
85faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        protected void dispatchDraw(Canvas canvas) {
86faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            super.dispatchDraw(canvas);
87faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mImageView.getHitRect(mRect);
88faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            canvas.drawRect(mRect, mPaint);
89faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        }
90faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    }
91faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase}
92