• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.carouseltest;
18 
19 import com.android.ex.carousel.CarouselView;
20 import com.android.ex.carousel.CarouselViewHelper;
21 
22 import android.app.Activity;
23 import android.app.AlertDialog;
24 import android.content.Context;
25 import android.content.res.Resources;
26 import android.graphics.Bitmap;
27 import android.graphics.BitmapFactory;
28 import android.graphics.Canvas;
29 import android.graphics.Paint;
30 import android.graphics.PixelFormat;
31 import android.graphics.Rect;
32 import android.os.Bundle;
33 import android.util.Log;
34 
35 public class CarouselTestActivity extends Activity {
36     private static final String TAG = "CarouselTestActivity";
37     private static final int CARD_SLOTS = 56;
38     private static final int TOTAL_CARDS = 100;
39     private static final int TEXTURE_HEIGHT = 256;
40     private static final int TEXTURE_WIDTH = 256;
41     private static final int SLOTS_VISIBLE = 7;
42 
43     protected static final boolean DBG = false;
44     private static final int DETAIL_TEXTURE_WIDTH = 200;
45     private static final int DETAIL_TEXTURE_HEIGHT = 80;
46     private static final int VISIBLE_DETAIL_COUNT = 3;
47     private static boolean INCREMENTAL_ADD = false; // To debug incrementally adding cards
48     private CarouselView mView;
49     private Paint mPaint = new Paint();
50     private CarouselViewHelper mHelper;
51     private Bitmap mGlossyOverlay;
52     private Bitmap mBorder;
53 
54     class LocalCarouselViewHelper extends CarouselViewHelper {
55         private static final int PIXEL_BORDER = 3;
56         private DetailTextureParameters mDetailTextureParameters
57                 = new DetailTextureParameters(5.0f, 5.0f, 3.0f, 10.0f);
58 
LocalCarouselViewHelper(Context context)59         LocalCarouselViewHelper(Context context) {
60             super(context);
61         }
62 
63         @Override
onCardSelected(final int id)64         public void onCardSelected(final int id) {
65             postMessage("Selection", "Card " + id + " was selected");
66         }
67 
68         @Override
onDetailSelected(final int id, int x, int y)69         public void onDetailSelected(final int id, int x, int y) {
70             postMessage("Selection", "Detail for card " + id + " was selected");
71         }
72 
73         @Override
onCardLongPress(int n, int touchPosition[], Rect detailCoordinates)74         public void onCardLongPress(int n, int touchPosition[], Rect detailCoordinates) {
75             postMessage("Selection", "Long press on card " + n);
76         }
77 
78         @Override
getDetailTextureParameters(int id)79         public DetailTextureParameters getDetailTextureParameters(int id) {
80             return mDetailTextureParameters;
81         }
82 
83         @Override
getTexture(int n)84         public Bitmap getTexture(int n) {
85             Bitmap bitmap = Bitmap.createBitmap(TEXTURE_WIDTH, TEXTURE_HEIGHT,
86                     Bitmap.Config.ARGB_8888);
87             Canvas canvas = new Canvas(bitmap);
88             canvas.drawARGB(0, 0, 0, 0);
89             mPaint.setColor(0x40808080);
90             canvas.drawRect(2, 2, TEXTURE_WIDTH-2, TEXTURE_HEIGHT-2, mPaint);
91             mPaint.setTextSize(100.0f);
92             mPaint.setAntiAlias(true);
93             mPaint.setColor(0xffffffff);
94             canvas.drawText("" + n, 2, TEXTURE_HEIGHT-10, mPaint);
95             canvas.drawBitmap(mGlossyOverlay, null,
96                     new Rect(PIXEL_BORDER, PIXEL_BORDER,
97                             TEXTURE_WIDTH - PIXEL_BORDER, TEXTURE_HEIGHT - PIXEL_BORDER), mPaint);
98             return bitmap;
99         }
100 
101         @Override
getDetailTexture(int n)102         public Bitmap getDetailTexture(int n) {
103             Bitmap bitmap = Bitmap.createBitmap(DETAIL_TEXTURE_WIDTH, DETAIL_TEXTURE_HEIGHT,
104                     Bitmap.Config.ARGB_8888);
105             Canvas canvas = new Canvas(bitmap);
106             canvas.drawARGB(32, 10, 10, 10);
107             mPaint.setTextSize(15.0f);
108             mPaint.setAntiAlias(true);
109             canvas.drawText("Detail text for card " + n, 0, DETAIL_TEXTURE_HEIGHT/2, mPaint);
110             return bitmap;
111         }
112     };
113 
114     @Override
onCreateDescription()115     public CharSequence onCreateDescription() {
116         return getText(R.string.carousel_test_activity_description);
117     }
118 
119     private Runnable mAddCardRunnable = new Runnable() {
120         public void run() {
121             if (mView.getCardCount() < TOTAL_CARDS) {
122                 mView.createCards(mView.getCardCount() + 1);
123                 mView.postDelayed(mAddCardRunnable, 2000);
124             }
125         }
126     };
127 
postMessage(final CharSequence title, final CharSequence msg)128     void postMessage(final CharSequence title, final CharSequence msg) {
129         runOnUiThread(new Runnable() {
130             public void run() {
131                 new AlertDialog.Builder(CarouselTestActivity.this)
132                     .setTitle(title)
133                     .setMessage(msg)
134                     .setPositiveButton("OK", null)
135                     .create()
136                     .show();
137             }
138         });
139     }
140 
141     @Override
onCreate(Bundle savedInstanceState)142     protected void onCreate(Bundle savedInstanceState) {
143         super.onCreate(savedInstanceState);
144 
145         setContentView(R.layout.carousel_test);
146         mView = (CarouselView) findViewById(R.id.carousel);
147         mView.getHolder().setFormat(PixelFormat.RGBA_8888);
148         mPaint.setColor(0xffffffff);
149         final Resources res = getResources();
150 
151         mHelper = new LocalCarouselViewHelper(this);
152         mHelper.setCarouselView(mView);
153         mView.setSlotCount(CARD_SLOTS);
154         mView.createCards(INCREMENTAL_ADD ? 1: TOTAL_CARDS);
155         mView.setVisibleSlots(SLOTS_VISIBLE);
156         mView.setStartAngle((float) -(2.0f*Math.PI * 5 / CARD_SLOTS));
157         mBorder = BitmapFactory.decodeResource(res, R.drawable.border);
158         mView.setDefaultBitmap(mBorder);
159         mView.setLoadingBitmap(mBorder);
160         mView.setBackgroundColor(0.25f, 0.25f, 0.5f, 0.5f);
161         mView.setRezInCardCount(3.0f);
162         mView.setFadeInDuration(250);
163         mView.setVisibleDetails(VISIBLE_DETAIL_COUNT);
164         mView.setDragModel(CarouselView.DRAG_MODEL_PLANE);
165         if (INCREMENTAL_ADD) {
166             mView.postDelayed(mAddCardRunnable, 2000);
167         }
168 
169         mGlossyOverlay = BitmapFactory.decodeResource(res, R.drawable.glossy_overlay);
170     }
171 
172     @Override
onResume()173     protected void onResume() {
174         super.onResume();
175         mHelper.onResume();
176     }
177 
178     @Override
onPause()179     protected void onPause() {
180         super.onPause();
181         mHelper.onPause();
182     }
183 
184 }
185