18411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy/* 28411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * Copyright (C) 2010 The Android Open Source Project 38411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * 48411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 58411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * you may not use this file except in compliance with the License. 68411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * You may obtain a copy of the License at 78411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * 88411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 98411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * 108411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * Unless required by applicable law or agreed to in writing, software 118411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 128411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * See the License for the specific language governing permissions and 148411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy * limitations under the License. 158411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy */ 168411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 178411f336c786379c5a03106e9ed3bc8622b579a5Romain Guypackage com.android.test.hwui; 188411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 198411f336c786379c5a03106e9ed3bc8622b579a5Romain Guyimport android.app.Activity; 208411f336c786379c5a03106e9ed3bc8622b579a5Romain Guyimport android.content.res.Resources; 211e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guyimport android.graphics.Bitmap; 228411f336c786379c5a03106e9ed3bc8622b579a5Romain Guyimport android.graphics.Canvas; 231e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guyimport android.graphics.Rect; 241e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guyimport android.graphics.RectF; 258411f336c786379c5a03106e9ed3bc8622b579a5Romain Guyimport android.graphics.drawable.Drawable; 268411f336c786379c5a03106e9ed3bc8622b579a5Romain Guyimport android.os.Bundle; 278411f336c786379c5a03106e9ed3bc8622b579a5Romain Guyimport android.view.View; 288411f336c786379c5a03106e9ed3bc8622b579a5Romain Guyimport android.widget.FrameLayout; 298411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 308411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy@SuppressWarnings({"UnusedDeclaration"}) 318411f336c786379c5a03106e9ed3bc8622b579a5Romain Guypublic class ThinPatchesActivity extends Activity { 328411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy @Override 338411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy protected void onCreate(Bundle savedInstanceState) { 348411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy super.onCreate(savedInstanceState); 358411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 368411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy FrameLayout layout = new FrameLayout(this); 378411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy PatchView b = new PatchView(this); 388411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy b.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, 398411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy FrameLayout.LayoutParams.MATCH_PARENT)); 408411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy layout.addView(b); 418411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy layout.setBackgroundColor(0xffffffff); 428411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 438411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy setContentView(layout); 448411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy } 458411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 468411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy private class PatchView extends View { 475e7c469c7a3039af7696789a797f8d91a45227ebRomain Guy private Drawable mPatch1, mPatch2, mPatch3; 481e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy private Bitmap mTexture; 498411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 508411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy public PatchView(Activity activity) { 518411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy super(activity); 528411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 538411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy final Resources resources = activity.getResources(); 546820ac8b14b4558f5d8b833dde80895306a3e137Romain Guy mPatch1 = resources.getDrawable(R.drawable.patch); 556820ac8b14b4558f5d8b833dde80895306a3e137Romain Guy mPatch2 = resources.getDrawable(R.drawable.btn_toggle_on); 565e7c469c7a3039af7696789a797f8d91a45227ebRomain Guy mPatch3 = resources.getDrawable(R.drawable.patch2); 571e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy 581e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture = Bitmap.createBitmap(4, 3, Bitmap.Config.ARGB_8888); 591e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(0, 0, 0xffff0000); 601e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(1, 0, 0xffffffff); 611e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(2, 0, 0xff000000); 621e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(3, 0, 0xffff0000); 631e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(0, 1, 0xffff0000); 641e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(1, 1, 0xff000000); 651e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(2, 1, 0xffffffff); 661e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(3, 1, 0xffff0000); 671e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(0, 2, 0xffff0000); 681e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(1, 2, 0xffff0000); 691e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(2, 2, 0xffff0000); 701e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy mTexture.setPixel(3, 2, 0xffff0000); 718411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy } 728411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 738411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy @Override 748411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy protected void onDraw(Canvas canvas) { 758411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy final int width = 100; 768411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy final int height = 60; 778411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 788411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy final int left = (getWidth() - width) / 2; 798411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy final int top = (getHeight() - height) / 2; 808411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 815e7c469c7a3039af7696789a797f8d91a45227ebRomain Guy canvas.save(); 825e7c469c7a3039af7696789a797f8d91a45227ebRomain Guy canvas.translate(0.0f, -height * 2 - 20.0f); 835e7c469c7a3039af7696789a797f8d91a45227ebRomain Guy 845e7c469c7a3039af7696789a797f8d91a45227ebRomain Guy mPatch3.setBounds(left, top, left + height, top + width); 855e7c469c7a3039af7696789a797f8d91a45227ebRomain Guy mPatch3.draw(canvas); 865e7c469c7a3039af7696789a797f8d91a45227ebRomain Guy 875e7c469c7a3039af7696789a797f8d91a45227ebRomain Guy canvas.restore(); 885e7c469c7a3039af7696789a797f8d91a45227ebRomain Guy 896820ac8b14b4558f5d8b833dde80895306a3e137Romain Guy mPatch1.setBounds(left, top, left + width, top + height); 906820ac8b14b4558f5d8b833dde80895306a3e137Romain Guy mPatch1.draw(canvas); 916820ac8b14b4558f5d8b833dde80895306a3e137Romain Guy 921e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy canvas.save(); 936820ac8b14b4558f5d8b833dde80895306a3e137Romain Guy canvas.translate(0.0f, height + 20.0f); 946820ac8b14b4558f5d8b833dde80895306a3e137Romain Guy 956820ac8b14b4558f5d8b833dde80895306a3e137Romain Guy mPatch2.setBounds(left, top, left + width, top + height); 966820ac8b14b4558f5d8b833dde80895306a3e137Romain Guy mPatch2.draw(canvas); 971e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy 981e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy canvas.restore(); 991e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy 1001e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy// Rect src = new Rect(1, 0, 3, 2); 1011e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy// RectF dst = new RectF(0, 0, getWidth(), getHeight()); 1021e59f9d10d164f156221f6d34b932f06cdd29f1fRomain Guy// canvas.drawBitmap(mTexture, src, dst, null); 1038411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy } 1048411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy } 1058411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy} 106