This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on May 28th, 2012  |  syntax: None  |  size: 5.10 KB  |  views: 448  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1.  
  2.  
  3. package fi.harism.curl;
  4.  
  5. import android.app.Activity;
  6. import android.graphics.Bitmap;
  7. import android.graphics.Canvas;
  8. import android.graphics.Color;
  9. import android.graphics.Paint;
  10. import android.graphics.Rect;
  11. import android.graphics.drawable.Drawable;
  12. import android.os.Bundle;
  13.  
  14. /**
  15.  * Simple Activity for curl testing.
  16.  *
  17.  * @author harism
  18.  */
  19. public class CurlActivity extends Activity {
  20.  
  21.         private CurlView mCurlView;
  22.  
  23.         @Override
  24.         public void onCreate(Bundle savedInstanceState) {
  25.                 super.onCreate(savedInstanceState);
  26.                 setContentView(R.layout.main);
  27.  
  28.                 int index = 0;
  29.                 if (getLastNonConfigurationInstance() != null) {
  30.                         index = (Integer) getLastNonConfigurationInstance();
  31.                         System.out.println("Index is:"+index);
  32.                 }
  33.                 mCurlView = (CurlView) findViewById(R.id.curl);
  34.                 mCurlView.setPageProvider(new PageProvider());
  35.                 mCurlView.setSizeChangedObserver(new SizeChangedObserver());
  36.                 mCurlView.setCurrentIndex(index);
  37.                 mCurlView.setBackgroundColor(0xFF202830);
  38.  
  39.                 // This is something somewhat experimental. Before uncommenting next
  40.                 // line, please see method comments in CurlView.
  41.                 // mCurlView.setEnableTouchPressure(true);
  42.         }
  43.  
  44.         @Override
  45.         public void onPause() {
  46.                 super.onPause();
  47.                 mCurlView.onPause();
  48.         }
  49.  
  50.         @Override
  51.         public void onResume() {
  52.                 super.onResume();
  53.                 mCurlView.onResume();
  54.         }
  55.  
  56.         @Override
  57.         public Object onRetainNonConfigurationInstance() {
  58.                 return mCurlView.getCurrentIndex();
  59.         }
  60.  
  61.         /**
  62.          * Bitmap provider.
  63.          */
  64.         private class PageProvider implements CurlView.PageProvider {
  65.  
  66.                 // Bitmap resources.
  67.                 private int[] mBitmapIds = { R.drawable.obama, R.drawable.road_rage,
  68.                                 R.drawable.taipei_101, R.drawable.world ,R.drawable.page1 ,
  69.                                 R.drawable.page2 ,R.drawable.page3  };
  70.  
  71.                 public int getPageCount() {
  72.                         return 8;
  73.                 }
  74.  
  75.                 private Bitmap loadBitmap(int width, int height, int index) {
  76.                         Bitmap b = Bitmap.createBitmap(width, height,
  77.                                         Bitmap.Config.ARGB_8888);
  78.                         b.eraseColor(0xFFFFFFFF);
  79.                         Canvas c = new Canvas(b);
  80.                         Drawable d = getResources().getDrawable(mBitmapIds[index]);
  81.                         System.out.println("Index is:"+index);
  82.                         int margin = 7;
  83.                         int border = 3;
  84.                         Rect r = new Rect(margin, margin, width - margin, height - margin);
  85.  
  86.                         int imageWidth = r.width() - (border * 2);
  87.                         int imageHeight = imageWidth * d.getIntrinsicHeight()
  88.                                         / d.getIntrinsicWidth();
  89.                         if (imageHeight > r.height() - (border * 2)) {
  90.                                 imageHeight = r.height() - (border * 2);
  91.                                 imageWidth = imageHeight * d.getIntrinsicWidth()
  92.                                                 / d.getIntrinsicHeight();
  93.                         }
  94.  
  95.                         r.left += ((r.width() - imageWidth) / 2) - border;
  96.                         r.right = r.left + imageWidth + border + border;
  97.                         r.top += ((r.height() - imageHeight) / 2) - border;
  98.                         r.bottom = r.top + imageHeight + border + border;
  99.  
  100.                         Paint p = new Paint();
  101.                         p.setColor(0xFFC0C0C0);
  102.                         c.drawRect(r, p);
  103.                         r.left += border;
  104.                         r.right -= border;
  105.                         r.top += border;
  106.                         r.bottom -= border;
  107.  
  108.                         d.setBounds(r);
  109.                         d.draw(c);
  110.  
  111.                         return b;
  112.                 }
  113.  
  114.                 public void updatePage(CurlPage page, int width, int height, int index) {
  115.                         System.out.println("Index is:"+index);
  116.                         switch (index) {
  117.                         // First case is image on front side, solid colored back.
  118.                         case 0: {
  119.                                 Bitmap front = loadBitmap(width, height, 0);
  120.                                 page.setTexture(front, CurlPage.SIDE_FRONT);
  121.                                 page.setColor(Color.rgb(180, 180, 180), CurlPage.SIDE_BACK);
  122.                                 break;
  123.                         }
  124.                         // Second case is image on back side, solid colored front.
  125.                         case 1: {
  126.                                 Bitmap back = loadBitmap(width, height, 2);
  127.                                 page.setTexture(back, CurlPage.SIDE_BACK);
  128.                                 page.setColor(Color.rgb(127, 140, 180), CurlPage.SIDE_FRONT);
  129.                                 break;
  130.                         }
  131.                         // Third case is images on both sides.
  132.                         case 2: {
  133.                                 Bitmap front = loadBitmap(width, height, 1);
  134.                                 Bitmap back = loadBitmap(width, height, 3);
  135.                                 page.setTexture(front, CurlPage.SIDE_FRONT);
  136.                                 page.setTexture(back, CurlPage.SIDE_BACK);
  137.                                 break;
  138.                         }
  139.                         // Fourth case is images on both sides - plus they are blend against
  140.                         // separate colors.
  141.                         case 3: {
  142.                                 Bitmap front = loadBitmap(width, height, 2);
  143.                                 Bitmap back = loadBitmap(width, height, 1);
  144.                                 page.setTexture(front, CurlPage.SIDE_FRONT);
  145.                                 page.setTexture(back, CurlPage.SIDE_BACK);
  146.                                 page.setColor(Color.argb(127, 170, 130, 255),
  147.                                                 CurlPage.SIDE_FRONT);
  148.                                 page.setColor(Color.rgb(255, 190, 150), CurlPage.SIDE_BACK);
  149.                                 break;
  150.                         }
  151.                         // Fifth case is same image is assigned to front and back. In this
  152.                         // scenario only one texture is used and shared for both sides.
  153.                         case 4:
  154.                                 Bitmap front = loadBitmap(width, height, 0);
  155.                                 page.setTexture(front, CurlPage.SIDE_BOTH);
  156.                                 page.setColor(Color.argb(127, 255, 255, 255),
  157.                                                 CurlPage.SIDE_BACK);
  158.                                 break;
  159.                         }
  160.                 }
  161.  
  162.         }
  163.  
  164.         /**
  165.          * CurlView size changed observer.
  166.          */
  167.         private class SizeChangedObserver implements CurlView.SizeChangedObserver {
  168.                 public void onSizeChanged(int w, int h) {
  169.                         if (w > h) {
  170.                                 mCurlView.setViewMode(CurlView.SHOW_TWO_PAGES);
  171.                                 mCurlView.setMargins(.1f, .05f, .1f, .05f);
  172.                         } else {
  173.                                 mCurlView.setViewMode(CurlView.SHOW_ONE_PAGE);
  174.                                 mCurlView.setMargins(.1f, .1f, .1f, .1f);
  175.                         }
  176.                 }
  177.         }
  178.  
  179. }
clone this paste RAW Paste Data