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