102ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy/*
202ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy * Copyright (C) 2010 The Android Open Source Project
302ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy *
402ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy * Licensed under the Apache License, Version 2.0 (the "License");
502ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy * you may not use this file except in compliance with the License.
602ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy * You may obtain a copy of the License at
702ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy *
802ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy *      http://www.apache.org/licenses/LICENSE-2.0
902ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy *
1002ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy * Unless required by applicable law or agreed to in writing, software
1102ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy * distributed under the License is distributed on an "AS IS" BASIS,
1202ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1302ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy * See the License for the specific language governing permissions and
1402ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy * limitations under the License.
1502ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy */
1602ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy
1702ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guypackage com.android.test.hwui;
1802ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy
1902ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guyimport android.app.Activity;
2002ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guyimport android.content.Context;
2102ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guyimport android.graphics.Canvas;
2202ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guyimport android.graphics.PorterDuff;
2302ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guyimport android.os.Bundle;
2402ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guyimport android.util.Log;
2502ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guyimport android.view.Gravity;
2602ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guyimport android.view.View;
2702ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guyimport android.widget.FrameLayout;
2802ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy
2902ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy@SuppressWarnings({"UnusedDeclaration"})
3002ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guypublic class OpaqueActivity extends Activity {
3102ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy    @Override
3202ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy    protected void onCreate(Bundle savedInstanceState) {
3302ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        super.onCreate(savedInstanceState);
3402ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy
3502ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        final OpaqueView view = new OpaqueView(this);
3602ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        setContentView(view, new FrameLayout.LayoutParams(100, 100, Gravity.CENTER));
3702ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy    }
3802ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy
3902ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy    public static class OpaqueView extends View {
4002ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        public OpaqueView(Context c) {
4102ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy            super(c);
4202ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy            setOnClickListener(new OnClickListener() {
4302ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy                @Override
4402ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy                public void onClick(View v) {
4502ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy                    invalidate();
4602ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy                    Log.d("OpaqueView", "Invalidate");
4702ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy                }
4802ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy            });
4902ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        }
5002ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy
5102ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        @Override
5202ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        protected void onDraw(Canvas canvas) {
5302ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy            super.onDraw(canvas);
5402ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy            canvas.drawColor(0xffff0000, PorterDuff.Mode.SRC);
5502ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        }
5602ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy
5702ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        @Override
5802ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        public boolean isOpaque() {
5902ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy            return true;
6002ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy        }
6102ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy    }
6202ccac69fd1c0a03c24c5f3ace0ad4bed337b1fdRomain Guy}
63