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