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