CarouselTestActivity.java revision be5482f170e191aa98a3c2ecefdeaf936b7df412
15ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller/* 25ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * Copyright (C) 2010 The Android Open Source Project 35ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * 45ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * Licensed under the Apache License, Version 2.0 (the "License"); 55ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * you may not use this file except in compliance with the License. 65ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * You may obtain a copy of the License at 75ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * 85ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * http://www.apache.org/licenses/LICENSE-2.0 95ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * 105ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * Unless required by applicable law or agreed to in writing, software 115ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * distributed under the License is distributed on an "AS IS" BASIS, 125ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * See the License for the specific language governing permissions and 145ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller * limitations under the License. 155ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller */ 165ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 175ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerpackage com.android.carouseltest; 185ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 195ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerimport com.android.carouseltest.MyCarouselView; 207cc5787b49708f63aeb818bdd06efed3d4229925Jim Shumaimport com.android.ex.carousel.CarouselController; 215ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerimport com.android.ex.carousel.CarouselView; 22a3cb716626b477c98ba912698c765eab20f27286Jim Millerimport com.android.ex.carousel.CarouselViewHelper; 235ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 245ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerimport android.app.Activity; 25a3cb716626b477c98ba912698c765eab20f27286Jim Millerimport android.content.Context; 265ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerimport android.content.res.Resources; 275ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerimport android.graphics.Bitmap; 285ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerimport android.graphics.BitmapFactory; 295ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerimport android.graphics.Canvas; 305ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerimport android.graphics.Paint; 31420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Millerimport android.graphics.PixelFormat; 32a3cb716626b477c98ba912698c765eab20f27286Jim Millerimport android.graphics.Rect; 335ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerimport android.os.Bundle; 345ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerimport android.util.Log; 355ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 365ce730797a8a7278dfe19dac8a9460b25675fed0Jim Millerpublic class CarouselTestActivity extends Activity { 37a3cb716626b477c98ba912698c765eab20f27286Jim Miller private static final String TAG = "CarouselTestActivity"; 385ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller private static final int CARD_SLOTS = 56; 3943471a7e84593d0dd855ec5c66d70891a6fd4c81Jim Miller private static final int TOTAL_CARDS = 100; 40420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller private static final int TEXTURE_HEIGHT = 256; 41420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller private static final int TEXTURE_WIDTH = 256; 425ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller private static final int SLOTS_VISIBLE = 7; 43a3cb716626b477c98ba912698c765eab20f27286Jim Miller 447cb0068e59dde61ef0e649735199e5ba31c9c6afJim Miller protected static final boolean DBG = false; 457cb0068e59dde61ef0e649735199e5ba31c9c6afJim Miller private static final int DETAIL_TEXTURE_WIDTH = 200; 467cb0068e59dde61ef0e649735199e5ba31c9c6afJim Miller private static final int DETAIL_TEXTURE_HEIGHT = 80; 47f7c724da4bb4fcd3cd02add04a7bb8052e07e4c3Jim Miller private static final int VISIBLE_DETAIL_COUNT = 3; 482ba04e061b52c488a154739379501dc833e39f79Jim Miller private static final boolean INCREMENTAL_ADD = false; // To debug incrementally adding cards 497cc5787b49708f63aeb818bdd06efed3d4229925Jim Shuma private CarouselController mController; 505ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller private CarouselView mView; 515ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller private Paint mPaint = new Paint(); 52a3cb716626b477c98ba912698c765eab20f27286Jim Miller private CarouselViewHelper mHelper; 53a3cb716626b477c98ba912698c765eab20f27286Jim Miller private Bitmap mGlossyOverlay; 54a3cb716626b477c98ba912698c765eab20f27286Jim Miller private Bitmap mBorder; 55a3cb716626b477c98ba912698c765eab20f27286Jim Miller 56a3cb716626b477c98ba912698c765eab20f27286Jim Miller class LocalCarouselViewHelper extends CarouselViewHelper { 57a3cb716626b477c98ba912698c765eab20f27286Jim Miller private static final int PIXEL_BORDER = 3; 58a3cb716626b477c98ba912698c765eab20f27286Jim Miller private DetailTextureParameters mDetailTextureParameters 59b378af500b36226635b6343b1d5009ee9af44fc1Jim Miller = new DetailTextureParameters(5.0f, 5.0f, 3.0f, 10.0f); 605ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 61a3cb716626b477c98ba912698c765eab20f27286Jim Miller LocalCarouselViewHelper(Context context) { 62a3cb716626b477c98ba912698c765eab20f27286Jim Miller super(context); 63a3cb716626b477c98ba912698c765eab20f27286Jim Miller } 64a3cb716626b477c98ba912698c765eab20f27286Jim Miller 65a3cb716626b477c98ba912698c765eab20f27286Jim Miller @Override 66a3cb716626b477c98ba912698c765eab20f27286Jim Miller public void onCardSelected(int id) { 67a3cb716626b477c98ba912698c765eab20f27286Jim Miller Log.v(TAG, "Yay, card " + id + " was selected!"); 68a3cb716626b477c98ba912698c765eab20f27286Jim Miller } 69a3cb716626b477c98ba912698c765eab20f27286Jim Miller 70a3cb716626b477c98ba912698c765eab20f27286Jim Miller @Override 71a3cb716626b477c98ba912698c765eab20f27286Jim Miller public DetailTextureParameters getDetailTextureParameters(int id) { 72a3cb716626b477c98ba912698c765eab20f27286Jim Miller return mDetailTextureParameters; 73a3cb716626b477c98ba912698c765eab20f27286Jim Miller } 74a3cb716626b477c98ba912698c765eab20f27286Jim Miller 75a3cb716626b477c98ba912698c765eab20f27286Jim Miller @Override 76a3cb716626b477c98ba912698c765eab20f27286Jim Miller public Bitmap getTexture(int n) { 77a3cb716626b477c98ba912698c765eab20f27286Jim Miller Bitmap bitmap = Bitmap.createBitmap(TEXTURE_WIDTH, TEXTURE_HEIGHT, 78a3cb716626b477c98ba912698c765eab20f27286Jim Miller Bitmap.Config.ARGB_8888); 79a3cb716626b477c98ba912698c765eab20f27286Jim Miller Canvas canvas = new Canvas(bitmap); 80a3cb716626b477c98ba912698c765eab20f27286Jim Miller canvas.drawARGB(0, 0, 0, 0); 81420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller mPaint.setColor(0x40808080); 82420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller canvas.drawRect(2, 2, TEXTURE_WIDTH-2, TEXTURE_HEIGHT-2, mPaint); 83a3cb716626b477c98ba912698c765eab20f27286Jim Miller mPaint.setTextSize(100.0f); 84a3cb716626b477c98ba912698c765eab20f27286Jim Miller mPaint.setAntiAlias(true); 85a3cb716626b477c98ba912698c765eab20f27286Jim Miller mPaint.setColor(0xffffffff); 86420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller canvas.drawText("" + n, 2, TEXTURE_HEIGHT-10, mPaint); 87a3cb716626b477c98ba912698c765eab20f27286Jim Miller canvas.drawBitmap(mGlossyOverlay, null, 88a3cb716626b477c98ba912698c765eab20f27286Jim Miller new Rect(PIXEL_BORDER, PIXEL_BORDER, 89a3cb716626b477c98ba912698c765eab20f27286Jim Miller TEXTURE_WIDTH - PIXEL_BORDER, TEXTURE_HEIGHT - PIXEL_BORDER), mPaint); 90a3cb716626b477c98ba912698c765eab20f27286Jim Miller return bitmap; 91a3cb716626b477c98ba912698c765eab20f27286Jim Miller } 92a3cb716626b477c98ba912698c765eab20f27286Jim Miller 93a3cb716626b477c98ba912698c765eab20f27286Jim Miller @Override 94a3cb716626b477c98ba912698c765eab20f27286Jim Miller public Bitmap getDetailTexture(int n) { 95a3cb716626b477c98ba912698c765eab20f27286Jim Miller Bitmap bitmap = Bitmap.createBitmap(DETAIL_TEXTURE_WIDTH, DETAIL_TEXTURE_HEIGHT, 96a3cb716626b477c98ba912698c765eab20f27286Jim Miller Bitmap.Config.ARGB_8888); 97a3cb716626b477c98ba912698c765eab20f27286Jim Miller Canvas canvas = new Canvas(bitmap); 98420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller canvas.drawARGB(32, 10, 10, 10); 99a3cb716626b477c98ba912698c765eab20f27286Jim Miller mPaint.setTextSize(15.0f); 100a3cb716626b477c98ba912698c765eab20f27286Jim Miller mPaint.setAntiAlias(true); 101a3cb716626b477c98ba912698c765eab20f27286Jim Miller canvas.drawText("Detail text for card " + n, 0, DETAIL_TEXTURE_HEIGHT/2, mPaint); 102a3cb716626b477c98ba912698c765eab20f27286Jim Miller return bitmap; 103a3cb716626b477c98ba912698c765eab20f27286Jim Miller } 104a3cb716626b477c98ba912698c765eab20f27286Jim Miller }; 1055ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 1065ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller @Override 107420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller public CharSequence onCreateDescription() { 108420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller return getText(R.string.carousel_test_activity_description); 109420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller } 110420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller 1112ba04e061b52c488a154739379501dc833e39f79Jim Miller private Runnable mAddCardRunnable = new Runnable() { 1122ba04e061b52c488a154739379501dc833e39f79Jim Miller public void run() { 1132ba04e061b52c488a154739379501dc833e39f79Jim Miller if (mView.getCardCount() < TOTAL_CARDS) { 1142ba04e061b52c488a154739379501dc833e39f79Jim Miller mView.createCards(mView.getCardCount() + 1); 1152ba04e061b52c488a154739379501dc833e39f79Jim Miller mView.postDelayed(mAddCardRunnable, 2000); 1162ba04e061b52c488a154739379501dc833e39f79Jim Miller } 1172ba04e061b52c488a154739379501dc833e39f79Jim Miller } 1182ba04e061b52c488a154739379501dc833e39f79Jim Miller }; 1192ba04e061b52c488a154739379501dc833e39f79Jim Miller 120420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller @Override 1215ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller protected void onCreate(Bundle savedInstanceState) { 1225ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller super.onCreate(savedInstanceState); 1235ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 1247cc5787b49708f63aeb818bdd06efed3d4229925Jim Shuma mController = new CarouselController(); 125fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller setContentView(R.layout.carousel_test); 126fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller mView = (CarouselView) findViewById(R.id.carousel); 127fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller mView.getHolder().setFormat(PixelFormat.RGBA_8888); 1285ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller mPaint.setColor(0xffffffff); 1295ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller final Resources res = getResources(); 1305ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 131a3cb716626b477c98ba912698c765eab20f27286Jim Miller mHelper = new LocalCarouselViewHelper(this); 132a3cb716626b477c98ba912698c765eab20f27286Jim Miller mHelper.setCarouselView(mView); 1335ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller mView.setSlotCount(CARD_SLOTS); 1342ba04e061b52c488a154739379501dc833e39f79Jim Miller mView.createCards(INCREMENTAL_ADD ? 1: TOTAL_CARDS); 1355ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller mView.setVisibleSlots(SLOTS_VISIBLE); 1365ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller mView.setStartAngle((float) -(2.0f*Math.PI * 5 / CARD_SLOTS)); 137a3cb716626b477c98ba912698c765eab20f27286Jim Miller mBorder = BitmapFactory.decodeResource(res, R.drawable.border); 138a3cb716626b477c98ba912698c765eab20f27286Jim Miller mView.setDefaultBitmap(mBorder); 139a3cb716626b477c98ba912698c765eab20f27286Jim Miller mView.setLoadingBitmap(mBorder); 140420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller mView.setBackgroundColor(0.25f, 0.25f, 0.5f, 0.5f); 141420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller mView.setRezInCardCount(3.0f); 142420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller mView.setFadeInDuration(250); 143f7c724da4bb4fcd3cd02add04a7bb8052e07e4c3Jim Miller mView.setVisibleDetails(VISIBLE_DETAIL_COUNT); 144be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller mView.setDragModel(CarouselView.DRAG_MODEL_PLANE); 1452ba04e061b52c488a154739379501dc833e39f79Jim Miller if (INCREMENTAL_ADD) { 1462ba04e061b52c488a154739379501dc833e39f79Jim Miller mView.postDelayed(mAddCardRunnable, 2000); 1472ba04e061b52c488a154739379501dc833e39f79Jim Miller } 1485ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 149a3cb716626b477c98ba912698c765eab20f27286Jim Miller mGlossyOverlay = BitmapFactory.decodeResource(res, R.drawable.glossy_overlay); 150420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller 151420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller /* 152420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller mView.setBackgroundColor(0x80ffffff); 153420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller int flags = WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; 154420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller WindowManager.LayoutParams lp = new WindowManager.LayoutParams( 155420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller mView.getWidth(), mView.getHeight(), 156420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller WindowManager.LayoutParams.TYPE_APPLICATION, 157420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller flags, PixelFormat.TRANSLUCENT); 158420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller getWindow().setAttributes(lp); 159420b44b8b11ec1c309ea130e69a6876325dbfef9Jim Miller */ 1605ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller } 1615ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 1625ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller @Override 1635ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller protected void onResume() { 1645ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller super.onResume(); 165a3cb716626b477c98ba912698c765eab20f27286Jim Miller mHelper.onResume(); 1665ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller } 1675ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller 1685ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller @Override 1695ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller protected void onPause() { 1705ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller super.onPause(); 171a3cb716626b477c98ba912698c765eab20f27286Jim Miller mHelper.onPause(); 1727cb0068e59dde61ef0e649735199e5ba31c9c6afJim Miller } 1737cb0068e59dde61ef0e649735199e5ba31c9c6afJim Miller 1745ce730797a8a7278dfe19dac8a9460b25675fed0Jim Miller} 175