1d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy/*
2d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * Copyright (C) 2010 The Android Open Source Project
3d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy *
4d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * Licensed under the Apache License, Version 2.0 (the "License");
5d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * you may not use this file except in compliance with the License.
6d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * You may obtain a copy of the License at
7d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy *
8d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy *      http://www.apache.org/licenses/LICENSE-2.0
9d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy *
10d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * Unless required by applicable law or agreed to in writing, software
11d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * distributed under the License is distributed on an "AS IS" BASIS,
12d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * See the License for the specific language governing permissions and
14d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * limitations under the License.
15d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy */
16d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
17f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guypackage com.android.test.hwui;
18d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
19d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.app.Activity;
20d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.content.Context;
21d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.graphics.Canvas;
22d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.graphics.Paint;
23d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.graphics.PorterDuff;
24d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.graphics.PorterDuffXfermode;
25d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.os.Bundle;
26d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.view.View;
27d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
28d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy@SuppressWarnings({"UnusedDeclaration"})
29d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guypublic class LayersActivity extends Activity {
30d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy    @Override
31d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy    protected void onCreate(Bundle savedInstanceState) {
32d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        super.onCreate(savedInstanceState);
33d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        setContentView(new LayersView(this));
34d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy    }
35d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
36d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet    public static class LayersView extends View {
37d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        private Paint mLayerPaint;
38d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        private final Paint mRectPaint;
39d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
40d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet        public LayersView(Context c) {
41d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            super(c);
42d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
43d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mLayerPaint = new Paint();
44d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint = new Paint();
45d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        }
46d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
47d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        @Override
48d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        protected void onDraw(Canvas canvas) {
49d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            super.onDraw(canvas);
50d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet
51d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.translate(140.0f, 100.0f);
52d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
53d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            //canvas.drawRGB(255, 255, 255);
54d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet
55d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            int count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint,
56d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy                    Canvas.ALL_SAVE_FLAG);
57d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
58d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint.setColor(0xffff0000);
59d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.drawRect(0.0f, 0.0f, 200.0f, 100.0f, mRectPaint);
60d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
61d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.restoreToCount(count);
62d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet
63d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.translate(0.0f, 125.0f);
64d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet
65d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint,
66d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy                    Canvas.ALL_SAVE_FLAG);
67d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
68d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint.setColor(0xff00ff00);
69d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint.setAlpha(50);
70d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.drawRect(0.0f, 0.0f, 200.0f, 100.0f, mRectPaint);
71d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
72d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.restoreToCount(count);
73d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
74d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.translate(25.0f, 125.0f);
75d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
76d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint.setColor(0xff0000ff);
77d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint.setAlpha(255);
78d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet            canvas.drawRect(0.0f, 0.0f, 100.0f, 50.0f, mRectPaint);
79d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet
80d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mLayerPaint.setAlpha(127);
81d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mLayerPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));
82d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            count = canvas.saveLayer(50.0f, 25.0f, 150.0f, 75.0f, mLayerPaint,
83d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy                    Canvas.ALL_SAVE_FLAG);
84d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
85d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint.setColor(0xffff0000);
86d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.drawRect(50.0f, 25.0f, 150.0f, 75.0f, mRectPaint);
87d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
88d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.restoreToCount(count);
89d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet
90d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.translate(0.0f, 125.0f);
91d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
92d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint.setColor(0xff0000ff);
93d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint.setAlpha(255);
94d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet            canvas.drawRect(0.0f, 0.0f, 100.0f, 50.0f, mRectPaint);
95d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet
96d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mLayerPaint.setColor(0xffff0000);
97d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mLayerPaint.setAlpha(127);
98d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mLayerPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_ATOP));
99d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            count = canvas.saveLayer(50.0f, 25.0f, 150.0f, 75.0f, mLayerPaint,
100d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy                    Canvas.ALL_SAVE_FLAG);
101d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
102d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint.setColor(0xffff0000);
103d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.drawRect(50.0f, 25.0f, 150.0f, 75.0f, mRectPaint);
104d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
105d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.restoreToCount(count);
106d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet
107d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mLayerPaint = new Paint();
108d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        }
109d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy    }
110d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy}
111