142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy/*
242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy * Copyright (C) 2012 The Android Open Source Project
342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy *
442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy * Licensed under the Apache License, Version 2.0 (the "License");
542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy * you may not use this file except in compliance with the License.
642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy * You may obtain a copy of the License at
742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy *
842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy *      http://www.apache.org/licenses/LICENSE-2.0
942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy *
1042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy * Unless required by applicable law or agreed to in writing, software
1142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy * distributed under the License is distributed on an "AS IS" BASIS,
1242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy * See the License for the specific language governing permissions and
1442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy * limitations under the License.
1542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy */
1642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
1742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guypackage com.android.test.hwui;
1842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
1942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guyimport android.app.Activity;
2042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guyimport android.content.Context;
2142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guyimport android.graphics.Canvas;
22211efea7376371ee755edd2ad03e83ef6eea464eRomain Guyimport android.graphics.Color;
2342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guyimport android.graphics.LinearGradient;
2442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guyimport android.graphics.Paint;
2542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guyimport android.graphics.Shader;
2642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guyimport android.os.Bundle;
2742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guyimport android.view.View;
2842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
2942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy@SuppressWarnings("UnusedDeclaration")
3042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guypublic class GradientStopsActivity extends Activity {
3142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy    @Override
3242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy    protected void onCreate(Bundle savedInstanceState) {
3342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy        super.onCreate(savedInstanceState);
3442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
3542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy        setContentView(new GradientView(this));
3642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy    }
3742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
3842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy    private class GradientView extends View {
3942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy        public GradientView(Context context) {
4042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            super(context);
4142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy        }
4242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
4342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy        @Override
4442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy        protected void onDraw(Canvas canvas) {
4542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            int[] colors = new int[] { 0xffff0000, 0xff0000ff };
4642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            float[] positions = new float[] { 0.3f, 0.6f };
4742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            LinearGradient gradient = new LinearGradient(0.0f, 0.0f, 256.0f, 0.0f,
4842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy                    colors, positions, Shader.TileMode.CLAMP);
4942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
5042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            Paint paint = new Paint();
5142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            paint.setShader(gradient);
5242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
5342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.drawRect(0.0f, 0.0f, 256.0f, 50.0f, paint);
5442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
5542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            colors = new int[] { 0xffff0000, 0xff0000ff, 0xff00ff00 };
5642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            positions = new float[] { 0.3f, 0.6f, 1.0f };
5742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            gradient = new LinearGradient(0.0f, 0.0f, 256.0f, 0.0f,
5842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy                    colors, positions, Shader.TileMode.CLAMP);
5942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
6042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            paint.setShader(gradient);
6142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
6242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.translate(0.0f, 75.0f);
6342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.drawRect(0.0f, 0.0f, 256.0f, 50.0f, paint);
6442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
6542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            colors = new int[] { 0xffff0000, 0xff0000ff, 0xff00ff00 };
6642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            positions = new float[] { 0.0f, 0.3f, 0.6f };
6742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            gradient = new LinearGradient(0.0f, 0.0f, 256.0f, 0.0f,
6842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy                    colors, positions, Shader.TileMode.CLAMP);
6942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
7042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            paint.setShader(gradient);
7142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
7242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.translate(0.0f, 75.0f);
7342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.drawRect(0.0f, 0.0f, 256.0f, 50.0f, paint);
7442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
7542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            colors = new int[] { 0xff000000, 0xffffffff };
7642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            gradient = new LinearGradient(0.0f, 0.0f, 256.0f, 0.0f,
7742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy                    colors, null, Shader.TileMode.CLAMP);
7842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
7942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            paint.setShader(gradient);
8042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
8142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.translate(0.0f, 75.0f);
8242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.drawRect(0.0f, 0.0f, 256.0f, 50.0f, paint);
8342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
8442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            gradient = new LinearGradient(0.0f, 0.0f, 256.0f, 0.0f,
8542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy                    colors, null, Shader.TileMode.REPEAT);
8642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
8742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            paint.setShader(gradient);
8842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
8942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.translate(0.0f, 75.0f);
9042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.drawRect(0.0f, 0.0f, 768.0f, 50.0f, paint);
9142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
9242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            gradient = new LinearGradient(0.0f, 0.0f, 256.0f, 0.0f,
9342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy                    colors, null, Shader.TileMode.MIRROR);
9442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
9542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            paint.setShader(gradient);
9642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
9742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.translate(0.0f, 75.0f);
9842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.drawRect(0.0f, 0.0f, 768.0f, 50.0f, paint);
9942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
10042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            gradient = new LinearGradient(0.0f, 0.0f, 256.0f, 0.0f,
10142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy                    colors, null, Shader.TileMode.CLAMP);
10242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
10342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            paint.setShader(gradient);
10442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
10542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.translate(0.0f, 75.0f);
10642e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.drawRect(0.0f, 0.0f, 768.0f, 50.0f, paint);
10742e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
10842e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            gradient = new LinearGradient(0.0f, 0.0f, 768.0f, 0.0f,
10942e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy                    colors, null, Shader.TileMode.CLAMP);
11042e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
11142e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            paint.setShader(gradient);
11242e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy
11342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.translate(0.0f, 75.0f);
11442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy            canvas.drawRect(0.0f, 0.0f, 768.0f, 50.0f, paint);
115211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy
116211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy            gradient = new LinearGradient(0.0f, 0.0f, 512.0f, 0.0f,
117211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy                    colors, null, Shader.TileMode.CLAMP);
118211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy
119211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy            paint.setShader(gradient);
120211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy
121211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy            canvas.translate(0.0f, 75.0f);
122211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy            canvas.drawRect(0.0f, 0.0f, 512.0f, 50.0f, paint);
12342e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy        }
12442e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy    }
12542e1e0d482d774cf18a55773e434f02edb9e4462Romain Guy}
126