GradientsActivity.java revision 7b5b6abf852c039983eded25ebe43a70fef5a4ab
164d85d0d827489c514f6aec075482563c80cda73Joe Onorato/* 264d85d0d827489c514f6aec075482563c80cda73Joe Onorato * Copyright (C) 2010 The Android Open Source Project 364d85d0d827489c514f6aec075482563c80cda73Joe Onorato * 464d85d0d827489c514f6aec075482563c80cda73Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License"); 564d85d0d827489c514f6aec075482563c80cda73Joe Onorato * you may not use this file except in compliance with the License. 664d85d0d827489c514f6aec075482563c80cda73Joe Onorato * You may obtain a copy of the License at 764d85d0d827489c514f6aec075482563c80cda73Joe Onorato * 864d85d0d827489c514f6aec075482563c80cda73Joe Onorato * http://www.apache.org/licenses/LICENSE-2.0 964d85d0d827489c514f6aec075482563c80cda73Joe Onorato * 1064d85d0d827489c514f6aec075482563c80cda73Joe Onorato * Unless required by applicable law or agreed to in writing, software 1164d85d0d827489c514f6aec075482563c80cda73Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS, 1264d85d0d827489c514f6aec075482563c80cda73Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1364d85d0d827489c514f6aec075482563c80cda73Joe Onorato * See the License for the specific language governing permissions and 1464d85d0d827489c514f6aec075482563c80cda73Joe Onorato * limitations under the License. 1564d85d0d827489c514f6aec075482563c80cda73Joe Onorato */ 1664d85d0d827489c514f6aec075482563c80cda73Joe Onorato 1764d85d0d827489c514f6aec075482563c80cda73Joe Onoratopackage com.android.test.hwui; 1864d85d0d827489c514f6aec075482563c80cda73Joe Onorato 1964d85d0d827489c514f6aec075482563c80cda73Joe Onoratoimport android.app.Activity; 2064d85d0d827489c514f6aec075482563c80cda73Joe Onoratoimport android.content.Context; 2164d85d0d827489c514f6aec075482563c80cda73Joe Onoratoimport android.graphics.Bitmap; 2264d85d0d827489c514f6aec075482563c80cda73Joe Onoratoimport android.graphics.BitmapFactory; 2364d85d0d827489c514f6aec075482563c80cda73Joe Onoratoimport android.graphics.BitmapShader; 2464d85d0d827489c514f6aec075482563c80cda73Joe Onoratoimport android.graphics.Canvas; 2513d6950ef806f86f25490385c95364d886cc3a60Ying Wangimport android.graphics.LinearGradient; 2688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectimport android.graphics.RadialGradient; 2713d6950ef806f86f25490385c95364d886cc3a60Ying Wangimport android.graphics.Matrix; 2888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectimport android.graphics.Paint; 2988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectimport android.graphics.Shader; 3088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectimport android.graphics.SweepGradient; 3188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectimport android.os.Bundle; 3288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectimport android.view.Gravity; 3388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectimport android.view.View; 3488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectimport android.widget.FrameLayout; 3588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectimport android.widget.SeekBar; 3688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 3764d85d0d827489c514f6aec075482563c80cda73Joe Onorato@SuppressWarnings({"UnusedDeclaration"}) 3888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectpublic class GradientsActivity extends Activity { 3988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @Override 4088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project protected void onCreate(Bundle savedInstanceState) { 4188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project super.onCreate(savedInstanceState); 4288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 4388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project final FrameLayout layout = new FrameLayout(this); 44d77248ac7e1c05d7e5c16dd6df7e2067a2791e7bDirk Dougherty 4588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project final ShadersView shadersView = new ShadersView(this); 4688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project final GradientView gradientView = new GradientView(this); 4788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project final RadialGradientView radialGradientView = new RadialGradientView(this); 4888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project final SweepGradientView sweepGradientView = new SweepGradientView(this); 4988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project final BitmapView bitmapView = new BitmapView(this); 5088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 5188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project final SeekBar rotateView = new SeekBar(this); 5288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project rotateView.setMax(360); 5388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project rotateView.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 54584d8adbea958ef8dca0e3d85b0beeff4d70d5feYing Wang public void onStopTrackingTouch(SeekBar seekBar) { 55584d8adbea958ef8dca0e3d85b0beeff4d70d5feYing Wang } 56ad7809bba403f3cf4f8bc5d859a2f9b959159f82Ying Wang 57ad7809bba403f3cf4f8bc5d859a2f9b959159f82Ying Wang public void onStartTrackingTouch(SeekBar seekBar) { 58ad7809bba403f3cf4f8bc5d859a2f9b959159f82Ying Wang } 59ad7809bba403f3cf4f8bc5d859a2f9b959159f82Ying Wang 60584d8adbea958ef8dca0e3d85b0beeff4d70d5feYing Wang public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 6188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project gradientView.setRotationY((float) progress); 623f45b3c35c41d71288dc4939cb48456dda26f8c0Ying Wang radialGradientView.setRotationX((float) progress); 630ec188f1c197709cf61d0de647b5220539b97322Ying Wang sweepGradientView.setRotationY((float) progress); 640ec188f1c197709cf61d0de647b5220539b97322Ying Wang bitmapView.setRotationX((float) progress); 653f45b3c35c41d71288dc4939cb48456dda26f8c0Ying Wang } 66584d8adbea958ef8dca0e3d85b0beeff4d70d5feYing Wang }); 67efb935800bce97abe0938270ba4c9cd3af6fb7b9Ying Wang 68efb935800bce97abe0938270ba4c9cd3af6fb7b9Ying Wang layout.addView(shadersView); 69efb935800bce97abe0938270ba4c9cd3af6fb7b9Ying Wang layout.addView(gradientView, new FrameLayout.LayoutParams( 703f45b3c35c41d71288dc4939cb48456dda26f8c0Ying Wang 200, 200, Gravity.CENTER)); 713f45b3c35c41d71288dc4939cb48456dda26f8c0Ying Wang 72584d8adbea958ef8dca0e3d85b0beeff4d70d5feYing Wang FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(200, 200, Gravity.CENTER); 733f45b3c35c41d71288dc4939cb48456dda26f8c0Ying Wang lp.setMargins(220, 0, 0, 0); 743f45b3c35c41d71288dc4939cb48456dda26f8c0Ying Wang layout.addView(radialGradientView, lp); 7514c975b830aa764272bb76aa207b5dbf15fe422eYing Wang 76b1dafb18045274e8a7ec45360010ddf824483dcfBrian Carlstrom lp = new FrameLayout.LayoutParams(200, 200, Gravity.CENTER); 773f45b3c35c41d71288dc4939cb48456dda26f8c0Ying Wang lp.setMargins(440, 0, 0, 0); 783f45b3c35c41d71288dc4939cb48456dda26f8c0Ying Wang layout.addView(sweepGradientView, lp); 793f45b3c35c41d71288dc4939cb48456dda26f8c0Ying Wang 80ad7809bba403f3cf4f8bc5d859a2f9b959159f82Ying Wang lp = new FrameLayout.LayoutParams(200, 200, Gravity.CENTER); 81ad7809bba403f3cf4f8bc5d859a2f9b959159f82Ying Wang lp.setMargins(220, -220, 0, 0); 828578cab0667cf3a3da263d838e29b07060af9ba7Ying Wang layout.addView(bitmapView, lp); 8388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 8488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project layout.addView(rotateView, new FrameLayout.LayoutParams( 8588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 300, FrameLayout.LayoutParams.WRAP_CONTENT, 8688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM)); 87fb790877a0dc0c1c10e368e00af28114d2f2a967Ying Wang 8864d85d0d827489c514f6aec075482563c80cda73Joe Onorato setContentView(layout); 8964d85d0d827489c514f6aec075482563c80cda73Joe Onorato } 9088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 9188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project static class BitmapView extends View { 92fb790877a0dc0c1c10e368e00af28114d2f2a967Ying Wang private final Paint mPaint; 93fb790877a0dc0c1c10e368e00af28114d2f2a967Ying Wang 9464d85d0d827489c514f6aec075482563c80cda73Joe Onorato BitmapView(Context c) { 9564d85d0d827489c514f6aec075482563c80cda73Joe Onorato super(c); 9664d85d0d827489c514f6aec075482563c80cda73Joe Onorato 9764d85d0d827489c514f6aec075482563c80cda73Joe Onorato Bitmap texture = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1); 9864d85d0d827489c514f6aec075482563c80cda73Joe Onorato BitmapShader shader = new BitmapShader(texture, Shader.TileMode.REPEAT, 9988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project Shader.TileMode.REPEAT); 10088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project mPaint = new Paint(); 10164d85d0d827489c514f6aec075482563c80cda73Joe Onorato mPaint.setShader(shader); 10264d85d0d827489c514f6aec075482563c80cda73Joe Onorato } 10364d85d0d827489c514f6aec075482563c80cda73Joe Onorato 10464d85d0d827489c514f6aec075482563c80cda73Joe Onorato @Override 10564d85d0d827489c514f6aec075482563c80cda73Joe Onorato protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 10664d85d0d827489c514f6aec075482563c80cda73Joe Onorato super.onMeasure(widthMeasureSpec, heightMeasureSpec); 10764d85d0d827489c514f6aec075482563c80cda73Joe Onorato setMeasuredDimension(200, 200); 10864d85d0d827489c514f6aec075482563c80cda73Joe Onorato } 10964d85d0d827489c514f6aec075482563c80cda73Joe Onorato 11064d85d0d827489c514f6aec075482563c80cda73Joe Onorato @Override 11164d85d0d827489c514f6aec075482563c80cda73Joe Onorato protected void onDraw(Canvas canvas) { 11264d85d0d827489c514f6aec075482563c80cda73Joe Onorato super.onDraw(canvas); 11364d85d0d827489c514f6aec075482563c80cda73Joe Onorato canvas.drawRect(0.0f, 0.0f, getWidth(), getHeight(), mPaint); 11464d85d0d827489c514f6aec075482563c80cda73Joe Onorato } 11564d85d0d827489c514f6aec075482563c80cda73Joe Onorato } 11664d85d0d827489c514f6aec075482563c80cda73Joe Onorato 11764d85d0d827489c514f6aec075482563c80cda73Joe Onorato static class GradientView extends View { 11864d85d0d827489c514f6aec075482563c80cda73Joe Onorato private final Paint mPaint; 11964d85d0d827489c514f6aec075482563c80cda73Joe Onorato 12064d85d0d827489c514f6aec075482563c80cda73Joe Onorato GradientView(Context c) { 12164d85d0d827489c514f6aec075482563c80cda73Joe Onorato super(c); 12264d85d0d827489c514f6aec075482563c80cda73Joe Onorato 12364d85d0d827489c514f6aec075482563c80cda73Joe Onorato LinearGradient gradient = new LinearGradient(0, 0, 200, 0, 0xFF000000, 0, 12464d85d0d827489c514f6aec075482563c80cda73Joe Onorato Shader.TileMode.CLAMP); 12564d85d0d827489c514f6aec075482563c80cda73Joe Onorato mPaint = new Paint(); 12664d85d0d827489c514f6aec075482563c80cda73Joe Onorato mPaint.setShader(gradient); 12764d85d0d827489c514f6aec075482563c80cda73Joe Onorato } 12864d85d0d827489c514f6aec075482563c80cda73Joe Onorato 12964d85d0d827489c514f6aec075482563c80cda73Joe Onorato @Override 13064d85d0d827489c514f6aec075482563c80cda73Joe Onorato protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 1311034455a245bf4d6f0c5d8b32f754a686d46af83Ben Dodson super.onMeasure(widthMeasureSpec, heightMeasureSpec); 13264d85d0d827489c514f6aec075482563c80cda73Joe Onorato setMeasuredDimension(200, 200); 1331034455a245bf4d6f0c5d8b32f754a686d46af83Ben Dodson } 13464d85d0d827489c514f6aec075482563c80cda73Joe Onorato 13564d85d0d827489c514f6aec075482563c80cda73Joe Onorato @Override 13688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project protected void onDraw(Canvas canvas) { 13788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project super.onDraw(canvas); 13888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project canvas.drawRect(0.0f, 0.0f, getWidth(), getHeight(), mPaint); 13988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 1403bb5d8bca77592fcbbf8e40fba561eaadb4f91c6Ying Wang } 1413bb5d8bca77592fcbbf8e40fba561eaadb4f91c6Ying Wang 14288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project static class RadialGradientView extends View { 1439a0e98ac478d8ca61011556e22af13e05d94f8e0Bill Napier private final Paint mPaint; 1443bb5d8bca77592fcbbf8e40fba561eaadb4f91c6Ying Wang 14588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project RadialGradientView(Context c) { 1463bb5d8bca77592fcbbf8e40fba561eaadb4f91c6Ying Wang super(c); 14788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1489c2336e073cef13a5237965dc7d5fcdb0091be34Dirk Dougherty RadialGradient gradient = new RadialGradient(0.0f, 0.0f, 100.0f, 0xff000000, 0xffffffff, 1499c2336e073cef13a5237965dc7d5fcdb0091be34Dirk Dougherty Shader.TileMode.MIRROR); 1509c2336e073cef13a5237965dc7d5fcdb0091be34Dirk Dougherty mPaint = new Paint(); 1519c2336e073cef13a5237965dc7d5fcdb0091be34Dirk Dougherty mPaint.setShader(gradient); 1529c2336e073cef13a5237965dc7d5fcdb0091be34Dirk Dougherty } 15388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 15464d85d0d827489c514f6aec075482563c80cda73Joe Onorato @Override 15564d85d0d827489c514f6aec075482563c80cda73Joe Onorato protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 15688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project super.onMeasure(widthMeasureSpec, heightMeasureSpec); 157f58df74f6afdac727aa059824adc688ef08b602cJoe Onorato setMeasuredDimension(200, 200); 15888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 159b8a256a1facdae5b803335daf3c02af159749ab4Ying Wang 16064d85d0d827489c514f6aec075482563c80cda73Joe Onorato @Override 16164d85d0d827489c514f6aec075482563c80cda73Joe Onorato protected void onDraw(Canvas canvas) { 16288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project super.onDraw(canvas); 16364d85d0d827489c514f6aec075482563c80cda73Joe Onorato canvas.drawRect(0.0f, 0.0f, getWidth(), getHeight(), mPaint); 16434e3e170e4f9c2f5e4bf7721de8562b189c3c16bYing Wang } 16588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 16686175d2fd50ef1649cc779234189d3098537fce2Dominic Binks 1675b6b46459cc5873aec9d5aca5f08416d8025ab76Ying Wang static class SweepGradientView extends View { 16888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project private final Paint mPaint; 16988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1701034455a245bf4d6f0c5d8b32f754a686d46af83Ben Dodson SweepGradientView(Context c) { 17188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project super(c); 17288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 17388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project SweepGradient gradient = new SweepGradient(100.0f, 100.0f, 0xff000000, 0xffffffff); 1749c2336e073cef13a5237965dc7d5fcdb0091be34Dirk Dougherty mPaint = new Paint(); 1757b142da3ce3849e56134666566df3f04f033c57dYing Wang mPaint.setShader(gradient); 17688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 17788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 17888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @Override 17988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 18088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project super.onMeasure(widthMeasureSpec, heightMeasureSpec); 18188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project setMeasuredDimension(200, 200); 18288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project } 18388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 18464d85d0d827489c514f6aec075482563c80cda73Joe Onorato @Override 18564d85d0d827489c514f6aec075482563c80cda73Joe Onorato protected void onDraw(Canvas canvas) { 18664d85d0d827489c514f6aec075482563c80cda73Joe Onorato super.onDraw(canvas); 18764d85d0d827489c514f6aec075482563c80cda73Joe Onorato canvas.drawRect(0.0f, 0.0f, getWidth(), getHeight(), mPaint); 18864d85d0d827489c514f6aec075482563c80cda73Joe Onorato } 18964d85d0d827489c514f6aec075482563c80cda73Joe Onorato } 19064d85d0d827489c514f6aec075482563c80cda73Joe Onorato 19164d85d0d827489c514f6aec075482563c80cda73Joe Onorato static class ShadersView extends View { 19264d85d0d827489c514f6aec075482563c80cda73Joe Onorato private final Paint mPaint; 19364d85d0d827489c514f6aec075482563c80cda73Joe Onorato private final float mDrawWidth; 194b8a256a1facdae5b803335daf3c02af159749ab4Ying Wang private final float mDrawHeight; 19564d85d0d827489c514f6aec075482563c80cda73Joe Onorato private final LinearGradient mGradient; 19664d85d0d827489c514f6aec075482563c80cda73Joe Onorato private final LinearGradient mGradientStops; 19764d85d0d827489c514f6aec075482563c80cda73Joe Onorato private final Matrix mMatrix; 19864d85d0d827489c514f6aec075482563c80cda73Joe Onorato 19934e3e170e4f9c2f5e4bf7721de8562b189c3c16bYing Wang ShadersView(Context c) { 20064d85d0d827489c514f6aec075482563c80cda73Joe Onorato super(c); 20164d85d0d827489c514f6aec075482563c80cda73Joe Onorato 20224de9707485f8621dd22d3cc843db1d7218a744aYing Wang mDrawWidth = 200; 2035b6b46459cc5873aec9d5aca5f08416d8025ab76Ying Wang mDrawHeight = 200; 20464d85d0d827489c514f6aec075482563c80cda73Joe Onorato 20564d85d0d827489c514f6aec075482563c80cda73Joe Onorato mGradient = new LinearGradient(0, 0, 0, 1, 0xFF000000, 0, Shader.TileMode.CLAMP); 206f122d41b7511fd1b21162d1968a9aac5ff31a059Narayan Kamath mGradientStops = new LinearGradient(0, 0, 0, 1, 20764d85d0d827489c514f6aec075482563c80cda73Joe Onorato new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF }, null, Shader.TileMode.CLAMP); 20864d85d0d827489c514f6aec075482563c80cda73Joe Onorato 20964d85d0d827489c514f6aec075482563c80cda73Joe Onorato mMatrix = new Matrix(); 21064d85d0d827489c514f6aec075482563c80cda73Joe Onorato 21164d85d0d827489c514f6aec075482563c80cda73Joe Onorato mPaint = new Paint(); 21264d85d0d827489c514f6aec075482563c80cda73Joe Onorato } 21364d85d0d827489c514f6aec075482563c80cda73Joe Onorato 21464d85d0d827489c514f6aec075482563c80cda73Joe Onorato @Override 21564d85d0d827489c514f6aec075482563c80cda73Joe Onorato protected void onDraw(Canvas canvas) { 21664d85d0d827489c514f6aec075482563c80cda73Joe Onorato super.onDraw(canvas); 21764d85d0d827489c514f6aec075482563c80cda73Joe Onorato canvas.drawRGB(255, 255, 255); 21864d85d0d827489c514f6aec075482563c80cda73Joe Onorato 21964d85d0d827489c514f6aec075482563c80cda73Joe Onorato // Gradients 22064d85d0d827489c514f6aec075482563c80cda73Joe Onorato canvas.save(); 22164d85d0d827489c514f6aec075482563c80cda73Joe Onorato float top = 40.0f; 22288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project float right = 40.0f + mDrawWidth; 22388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project float left = 40.0f; 22488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project float bottom = 40.0f + mDrawHeight; 22588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 22688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project mPaint.setShader(mGradient); 227aaa5d11cb3c67a345572496197c688c3e48cd670Joe Onorato 228aaa5d11cb3c67a345572496197c688c3e48cd670Joe Onorato mMatrix.setScale(1, mDrawWidth); 22988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project mMatrix.postRotate(90); 23088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project mMatrix.postTranslate(right, top); 23188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project mGradient.setLocalMatrix(mMatrix); 23288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project canvas.drawRect(right - mDrawWidth, top, right, top + mDrawHeight, mPaint); 23388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 23488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project top += 40.0f + mDrawHeight; 23588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project bottom += 40.0f + mDrawHeight; 23688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 23788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project mMatrix.setScale(1, mDrawHeight); 23836b89ff93fe1fe55351564c258023255d70b6378Joe Onorato mMatrix.postTranslate(left, top); 23936b89ff93fe1fe55351564c258023255d70b6378Joe Onorato mGradient.setLocalMatrix(mMatrix); 24088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project canvas.drawRect(left, top, right, top + mDrawHeight, mPaint); 241aaa5d11cb3c67a345572496197c688c3e48cd670Joe Onorato 242aaa5d11cb3c67a345572496197c688c3e48cd670Joe Onorato left += 40.0f + mDrawWidth; 243 right += 40.0f + mDrawWidth; 244 top -= 40.0f + mDrawHeight; 245 bottom -= 40.0f + mDrawHeight; 246 247 mMatrix.setScale(1, mDrawHeight); 248 mMatrix.postRotate(180); 249 mMatrix.postTranslate(left, bottom); 250 mGradient.setLocalMatrix(mMatrix); 251 canvas.drawRect(left, bottom - mDrawHeight, right, bottom, mPaint); 252 253 top += 40.0f + mDrawHeight; 254 bottom += 40.0f + mDrawHeight; 255 256 mMatrix.setScale(1, mDrawWidth); 257 mMatrix.postRotate(-90); 258 mMatrix.postTranslate(left, top); 259 mGradient.setLocalMatrix(mMatrix); 260 canvas.drawRect(left, top, left + mDrawWidth, bottom, mPaint); 261 262 right = left + mDrawWidth; 263 left = 40.0f; 264 top = bottom + 20.0f; 265 bottom = top + 50.0f; 266 267 mPaint.setShader(mGradientStops); 268 269 mMatrix.setScale(1, mDrawWidth); 270 mMatrix.postRotate(90); 271 mMatrix.postTranslate(right, top); 272 mGradientStops.setLocalMatrix(mMatrix); 273 canvas.drawRect(left, top, right, bottom, mPaint); 274 275 canvas.restore(); 276 } 277 } 278} 279