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