Advertisement
Guest User

Untitled

a guest
May 28th, 2012
850
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.10 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement