Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.41 KB | None | 0 0
  1. public void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. setContentView(R.layout.main);
  4. lp = this;
  5.  
  6. util = new Utils();
  7.  
  8. Prefs = new PreferencesHelper("flag",lp);
  9. PrefsPortrait = new PreferencesHelper("pflag",lp);
  10.  
  11. //llFooterPageOne = (LinearLayout) findViewById(R.id.llFooterPageOne);
  12.  
  13. scaleGestureDetector = new ScaleGestureDetector(this, new simpleOnScaleGestureListener());
  14.  
  15. if (getLastNonConfigurationInstance() != null) {
  16. index = (Integer) getLastNonConfigurationInstance();
  17. }
  18.  
  19. mCurlView = (CurlView) findViewById(R.id.curl);
  20. mCurlView.setPageProvider(new PageProvider());
  21. mCurlView.setSizeChangedObserver(new SizeChangedObserver());
  22. mCurlView.setCurrentIndex(index);
  23. // mCurlView.setBackgroundResource(R.drawable.icon);
  24.  
  25.  
  26. imHome = (ImageView)findViewById(R.id.imHome);
  27. imHome.setClickable(true);
  28. imHome.setOnClickListener(lp);
  29.  
  30. btOne=(Button)findViewById(R.id.btOne);
  31. btTwo=(Button)findViewById(R.id.btTwo);
  32. btThree=(Button)findViewById(R.id.btThree);
  33. btFour=(Button)findViewById(R.id.btFour);
  34.  
  35.  
  36. llPageOne = (LinearLayout)findViewById(R.id.llPageOne);
  37.  
  38. btOne.setOnClickListener(this);
  39. btTwo.setOnClickListener(this);
  40. btThree.setOnClickListener(this);
  41. btFour.setOnClickListener(this);
  42.  
  43. // This is something somewhat experimental. Before uncommenting next
  44. // line, please see method comments in CurlView.
  45. // mCurlView.setEnableTouchPressure(true);
  46.  
  47. }
  48.  
  49. @Override
  50. public void onPause() {
  51. super.onPause();
  52. mCurlView.onPause();
  53. }
  54.  
  55. @Override
  56. public void onResume() {
  57. super.onResume();
  58. mCurlView.onResume();
  59.  
  60. System.out.println("index : "+ index);
  61. }
  62.  
  63. @Override
  64. public Object onRetainNonConfigurationInstance() {
  65. return mCurlView.getCurrentIndex();
  66. }
  67.  
  68. /**
  69. * Bitmap provider.
  70. */
  71. private class PageProvider implements CurlView.PageProvider {
  72.  
  73. // Bitmap resources.
  74. private int[] mBitmapIds = {
  75.  
  76. R.drawable.image_one, R.drawable.image_two, R.drawable.image_three
  77. };
  78.  
  79.  
  80. @Override
  81. public int getPageCount() {
  82. //return 5;
  83.  
  84. pagesCount = 0;
  85.  
  86. DisplayMetrics displaymetrics = new DisplayMetrics();
  87. getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
  88. int wwidth = displaymetrics.widthPixels;
  89. int hheight = displaymetrics.heightPixels;
  90.  
  91. if(wwidth > hheight){
  92. if((mBitmapIds.length % 2) > 0)
  93. pagesCount = (mBitmapIds.length / 2) + 1;
  94. else
  95. pagesCount = mBitmapIds.length / 2;
  96. }else{
  97. pagesCount = mBitmapIds.length;
  98. }
  99.  
  100. System.out.println("page count "+pagesCount);
  101.  
  102. return pagesCount;
  103. }
  104.  
  105. private Bitmap loadBitmap(int width, int height, int index) {
  106.  
  107.  
  108. bitmap = Bitmap.createBitmap(width, height,
  109. Bitmap.Config.ARGB_8888);
  110.  
  111. bitmap.eraseColor(0xFFFFFFFF);
  112.  
  113. canvas = new Canvas(bitmap);
  114. drawable = getResources().getDrawable(mBitmapIds[index]);
  115.  
  116. System.out.println("canvas width: "+canvas.getWidth());
  117.  
  118. int margin = 3;//7
  119. int border = 3;//2
  120.  
  121. Rect r = new Rect(margin, margin, width - margin, height - margin);
  122.  
  123. int imageWidth = r.width() - (border * 2);
  124. int imageHeight = imageWidth * drawable.getIntrinsicHeight()
  125. / drawable.getIntrinsicWidth();
  126.  
  127. if (imageHeight > r.height() - (border * 2)) {
  128. imageHeight = r.height() - (border * 2);
  129. imageWidth = imageHeight * drawable.getIntrinsicWidth()
  130. / drawable.getIntrinsicHeight();
  131.  
  132. }
  133.  
  134. Log.d("TAG", String.valueOf(imageHeight));
  135.  
  136. if (lp.getWindow().getWindowManager().getDefaultDisplay()
  137. .getOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
  138. // portrait mode
  139.  
  140. r.left += ((r.width() - imageWidth) / 2) - border;
  141. r.right = r.left + imageWidth + border + border;
  142.  
  143. } else if (lp.getWindow().getWindowManager().getDefaultDisplay()
  144. .getOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
  145. // landscape
  146.  
  147. DisplayMetrics displaymetrics = new DisplayMetrics();
  148. getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
  149. int wwidth = displaymetrics.widthPixels;
  150. int hheight = displaymetrics.heightPixels;
  151.  
  152. int mask = Configuration.SCREENLAYOUT_SIZE_MASK;
  153. int size = lp.getResources().getConfiguration().screenLayout;
  154. if ((size & mask) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
  155. // Screen is classified x-large
  156.  
  157. r.left += ((r.width() - imageWidth)) - border-126;
  158. r.right = r.left + imageWidth + border + border+126;
  159.  
  160. }else{
  161.  
  162. if(wwidth > hheight){
  163.  
  164. r.left += ((r.width() - imageWidth)) - border-126;
  165. r.right = r.left + imageWidth + border + border+126;
  166.  
  167. }else {
  168.  
  169. r.left += ((r.width() - imageWidth)) - border;
  170. r.right = r.left + imageWidth + border + border;
  171.  
  172.  
  173. }
  174.  
  175. }
  176.  
  177. }
  178.  
  179. System.out.println("getActivity().getResources().getConfiguration().orientation");
  180.  
  181. r.top += ((r.height() - imageHeight) / 2) - border;
  182. r.bottom = r.top + imageHeight + border + border;
  183.  
  184. Paint p = new Paint();
  185. p.setColor(0xFFFFFFFF);
  186. canvas.drawRect(r, p);
  187. r.left += border;
  188. r.right -= border;
  189. r.top += border;
  190. r.bottom -= border;
  191.  
  192. drawable.setBounds(r);
  193. drawable.draw(canvas);
  194.  
  195. return bitmap;
  196. }
  197.  
  198. @Override
  199. public void updatePage(CurlPage page, int width, int height, int index) {
  200.  
  201. DisplayMetrics displaymetrics = new DisplayMetrics();
  202. getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
  203. int wwidth = displaymetrics.widthPixels;
  204. int hheight = displaymetrics.heightPixels;
  205.  
  206. if(wwidth > hheight){
  207.  
  208. if (index >0){
  209.  
  210. front = loadBitmap(width, height, (index*2));
  211. back = loadBitmap(width, height, (index*2)+1);
  212.  
  213. } else {
  214.  
  215. front = loadBitmap(width, height, (index));
  216. back = loadBitmap(width, height, (index));
  217. }
  218.  
  219. matrix = new Matrix();
  220. matrix.preScale(-1.0f, 1.0f);
  221. mirroredBitmap = Bitmap.createBitmap(back, 0, 0, back.getWidth() , back.getHeight(), matrix, false);
  222.  
  223. page.setTexture(front, CurlPage.SIDE_FRONT);
  224. page.setTexture(mirroredBitmap, CurlPage.SIDE_BACK);
  225.  
  226. Prefs.SavePreferences("flag", "1");
  227. PrefsPortrait.SavePreferences("pflag", "");
  228.  
  229. } else {
  230. //-----
  231. System.out.println("current case portrait orientation... "+flag);
  232.  
  233. if (Prefs.GetPreferences("flag").equalsIgnoreCase("1")){
  234.  
  235. if (index>1){
  236. index = index*2;
  237. }
  238.  
  239. Prefs.SavePreferences("flag", "");
  240. }
  241.  
  242.  
  243. PrefsPortrait.SavePreferences("pflag", "1");
  244.  
  245. front = loadBitmap(width, height, index);
  246. back = loadBitmap(width, height, index);
  247.  
  248. System.out.println("index case"+index);
  249.  
  250. page.setTexture(front, CurlPage.SIDE_FRONT);
  251. page.setTexture(back, CurlPage.SIDE_BACK);
  252.  
  253.  
  254.  
  255. }
  256.  
  257. }
  258.  
  259. }
  260.  
  261.  
  262. /**
  263. * CurlView size changed observer.
  264. */
  265.  
  266. private class SizeChangedObserver implements CurlView.SizeChangedObserver {
  267. @Override
  268. public void onSizeChanged(int w, int h) {
  269. if (w > h) {
  270.  
  271. mCurlView.setViewMode(CurlView.SHOW_TWO_PAGES);
  272. mCurlView.setMargins(.000f, .000f, .000f, .000f);
  273.  
  274. } else {
  275.  
  276. mCurlView.setViewMode(CurlView.SHOW_ONE_PAGE);
  277. mCurlView.setMargins(.005f, .005f, .00f, .00f);
  278.  
  279. }
  280. }
  281. }
  282.  
  283. @Override
  284. public void onClick(View v) {
  285. // TODO Auto-generated method stub
  286.  
  287. switch(v.getId()){
  288.  
  289.  
  290. case R.id.imHome:
  291.  
  292. mCurlView.setCurrentIndex(0);
  293. System.out.println("home pressed");
  294. mCurlView.onResume();
  295.  
  296. break;
  297.  
  298. }
  299. }
  300.  
  301.  
  302. @Override
  303. public boolean onCreateOptionsMenu(Menu menu){
  304.  
  305. MenuInflater inflater = getMenuInflater();
  306. inflater.inflate(R.menu.drop_list, menu);
  307. return true;
  308. }
  309.  
  310. @Override
  311. public boolean onOptionsItemSelected(MenuItem item) {
  312. // Handle item selection
  313. switch (item.getItemId()) {
  314. case R.id.menu_option_one:
  315.  
  316. lp.startActivity(new Intent(lp,ContactForm.class));
  317.  
  318. return true;
  319.  
  320. default:
  321. return super.onOptionsItemSelected(item);
  322. }
  323. }
  324.  
  325.  
  326. @Override
  327. public boolean onTouchEvent(MotionEvent event) {
  328. // TODO Auto-generated method stub
  329. scaleGestureDetector.onTouchEvent(event);
  330.  
  331. return true;
  332. }
  333.  
  334. public class simpleOnScaleGestureListener extends
  335. SimpleOnScaleGestureListener {
  336.  
  337. @Override
  338. public boolean onScale(ScaleGestureDetector detector) {
  339. // TODO Auto-generated method stub
  340. // scaleGesture.setText(String.valueOf(detector.getScaleFactor()));
  341.  
  342. counter =counter +1;
  343.  
  344. int bitwidth = back.getWidth()+counter;
  345. int bitheight = back.getHeight()+counter;
  346.  
  347. if (counter==200){
  348. counter = 0;
  349.  
  350. bitwidth = bitwidth -200;
  351. bitheight = bitheight - 200;
  352.  
  353. }
  354.  
  355. System.out.println("Test Plan "+counter);
  356.  
  357. mirroredBitmap = Bitmap.createBitmap(back, 0, 0, bitwidth , bitheight, matrix, true);
  358. mCurlView.onResume();
  359.  
  360.  
  361. //mirroredBitmap = Bitmap.createBitmap(back, 0, 0, back.getWidth()+counter , back.getHeight()+counter , matrix, false);
  362.  
  363. return true;
  364. }
  365.  
  366. @Override
  367. public boolean onScaleBegin(ScaleGestureDetector detector) {
  368. // TODO Auto-generated method stub
  369. // scaleGesture.setVisibility(View.VISIBLE);
  370. System.out.println("Mad Plan");
  371.  
  372. return true;
  373. }
  374.  
  375. @Override
  376. public void onScaleEnd(ScaleGestureDetector detector) {
  377. // TODO Auto-generated method stub
  378. // scaleGesture.setVisibility(View.INVISIBLE);
  379.  
  380. System.out.println("Mad Plan");
  381.  
  382. }
  383.  
  384. }
  385.  
  386. 12-09 14:26:02.770: E/AndroidRuntime(7470): java.lang.IllegalArgumentException: x + width must be <= bitmap.width()
  387. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.graphics.Bitmap.createBitmap(Bitmap.java:533)
  388. 12-09 14:26:02.770: E/AndroidRuntime(7470): at projectname.LPMagHome$simpleOnScaleGestureListener.onScale(LPMagHome.java:620)
  389. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.ScaleGestureDetector.onTouchEvent(ScaleGestureDetector.java:300)
  390. 12-09 14:26:02.770: E/AndroidRuntime(7470): at projectname.LPMagHome.onTouchEvent(LPMagHome.java:592)
  391. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.app.Activity.dispatchTouchEvent(Activity.java:2494)
  392. 12-09 14:26:02.770: E/AndroidRuntime(7470): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2063)
  393. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.View.dispatchPointerEvent(View.java:7520)
  394. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3376)
  395. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3308)
  396. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4402)
  397. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4380)
  398. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4484)
  399. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
  400. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
  401. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:163)
  402. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4452)
  403. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:4503)
  404. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
  405. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
  406. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.Choreographer.doFrame(Choreographer.java:523)
  407. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
  408. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.os.Handler.handleCallback(Handler.java:615)
  409. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.os.Handler.dispatchMessage(Handler.java:92)
  410. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.os.Looper.loop(Looper.java:137)
  411. 12-09 14:26:02.770: E/AndroidRuntime(7470): at android.app.ActivityThread.main(ActivityThread.java:4898)
  412. 12-09 14:26:02.770: E/AndroidRuntime(7470): at java.lang.reflect.Method.invokeNative(Native Method)
  413. 12-09 14:26:02.770: E/AndroidRuntime(7470): at java.lang.reflect.Method.invoke(Method.java:511)
  414. 12-09 14:26:02.770: E/AndroidRuntime(7470): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
  415. 12-09 14:26:02.770: E/AndroidRuntime(7470): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
  416. 12-09 14:26:02.770: E/AndroidRuntime(7470): at dalvik.system.NativeStart.main(Native Method)
  417.  
  418. public class Touch extends Activity implements OnTouchListener {
  419. private static final String TAG = "Touch";
  420.  
  421. private static final float MIN_ZOOM = 1.0f;
  422. private static final float MAX_ZOOM = 5.0f;
  423.  
  424. // These matrices will be used to move and zoom image
  425. Matrix matrix = new Matrix();
  426. Matrix savedMatrix = new Matrix();
  427.  
  428. // We can be in one of these 3 states
  429. static final int NONE = 0;
  430. static final int DRAG = 1;
  431. static final int ZOOM = 2;
  432. int mode = NONE;
  433.  
  434. // Remember some things for zooming
  435. PointF start = new PointF();
  436. PointF mid = new PointF();
  437. float oldDist = 1f;
  438.  
  439. @Override
  440. public void onCreate(Bundle savedInstanceState) {
  441. super.onCreate(savedInstanceState);
  442. setContentView(R.layout.main);
  443. ImageView view = (ImageView) findViewById(R.id.image);
  444. //view.setLayoutParams(new GridView.LayoutParams(85, 85));
  445. // view.setScaleType(ImageView.ScaleType.FIT_CENTER);
  446. view.setOnTouchListener(this);
  447. }
  448.  
  449. public boolean onTouch(View v, MotionEvent event) {
  450. ImageView view = (ImageView) v;
  451. view.setScaleType(ImageView.ScaleType.MATRIX);
  452. float scale;
  453.  
  454. // Dump touch event to log
  455. dumpEvent(event);
  456.  
  457. // Handle touch events here...
  458. switch (event.getAction() & MotionEvent.ACTION_MASK) {
  459.  
  460. case MotionEvent.ACTION_DOWN: //first finger down only
  461. savedMatrix.set(matrix);
  462. start.set(event.getX(), event.getY());
  463. Log.d(TAG, "mode=DRAG" );
  464. mode = DRAG;
  465. Log.i("saran","mode === drag");
  466. break;
  467. case MotionEvent.ACTION_UP: //first finger lifted
  468. Log.i("saran","action up");
  469. case MotionEvent.ACTION_POINTER_UP: //second finger lifted
  470. mode = NONE;
  471. Log.i("saran", "mode=NONE" );
  472. break;
  473. case MotionEvent.ACTION_POINTER_DOWN: //second finger down
  474. oldDist = spacing(event);
  475. Log.i("saran", "oldDist=" + oldDist);
  476. if (oldDist > 5f) {
  477. savedMatrix.set(matrix);
  478. midPoint(mid, event);
  479. mode = ZOOM;
  480. Log.i("saran", "mode=ZOOM" );
  481. }
  482. break;
  483.  
  484. case MotionEvent.ACTION_MOVE:
  485. if (mode == DRAG) { //movement of first finger
  486. matrix.set(savedMatrix);
  487. if (view.getLeft() >= -392){
  488. matrix.postTranslate(event.getX() - start.x, event.getY() - start.y);
  489. }
  490. Log.i("saran", "action move.....");
  491. }
  492. else if (mode == ZOOM) { //pinch zooming
  493. float newDist = spacing(event);
  494. Log.d(TAG, "newDist=" + newDist);
  495. if (newDist > 5f) {
  496. matrix.set(savedMatrix);
  497. scale = newDist / oldDist; //**//thinking i need to play around with this value to limit it**
  498. matrix.postScale(scale, scale, mid.x, mid.y);
  499. }
  500. Log.i("saran", "zoom.......");
  501. }
  502. break;
  503. }
  504.  
  505. // Perform the transformation
  506. view.setImageMatrix(matrix);
  507.  
  508. return true; // indicate event was handled
  509. }
  510.  
  511. private float spacing(MotionEvent event) {
  512. float x = event.getX(0) - event.getX(1);
  513. float y = event.getY(0) - event.getY(1);
  514. return FloatMath.sqrt(x * x + y * y);
  515. }
  516.  
  517. private void midPoint(PointF point, MotionEvent event) {
  518. float x = event.getX(0) + event.getX(1);
  519. float y = event.getY(0) + event.getY(1);
  520. point.set(x / 2, y / 2);
  521. }
  522.  
  523. /** Show an event in the LogCat view, for debugging */
  524. private void dumpEvent(MotionEvent event) {
  525. String names[] = { "DOWN" , "UP" , "MOVE" , "CANCEL" , "OUTSIDE" ,
  526. "POINTER_DOWN" , "POINTER_UP" , "7?" , "8?" , "9?" };
  527. StringBuilder sb = new StringBuilder();
  528. int action = event.getAction();
  529. int actionCode = action & MotionEvent.ACTION_MASK;
  530. sb.append("event ACTION_" ).append(names[actionCode]);
  531. if (actionCode == MotionEvent.ACTION_POINTER_DOWN
  532. || actionCode == MotionEvent.ACTION_POINTER_UP) {
  533. sb.append("(pid " ).append(
  534. action >> MotionEvent.ACTION_POINTER_ID_SHIFT);
  535. sb.append(")" );
  536. }
  537. sb.append("[" );
  538. for (int i = 0; i < event.getPointerCount(); i++) {
  539. sb.append("#" ).append(i);
  540. sb.append("(pid " ).append(event.getPointerId(i));
  541. sb.append(")=" ).append((int) event.getX(i));
  542. sb.append("," ).append((int) event.getY(i));
  543. if (i + 1 < event.getPointerCount())
  544. sb.append(";" );
  545. }
  546. sb.append("]" );
  547. Log.d(TAG, sb.toString());
  548. }
  549. }
  550.  
  551. private class SizeChangedObserver implements CurlView.SizeChangedObserver {
  552. @Override
  553. public void onSizeChanged(int w, int h) {
  554. if (w > h) {
  555. mCurlView.setViewMode(CurlView.SHOW_TWO_PAGES);
  556. mCurlView.setMargins(-.5f, -.5f, -.5f, -.5f);//Zoom in
  557. //mCurlView.setMargins(.01f, .01f, .01f, .01f); //zoom Out
  558. } else {
  559. mCurlView.setViewMode(CurlView.SHOW_ONE_PAGE);
  560. mCurlView.setMargins(.01f, .01f, .01f, .01f);
  561. }
  562. }
  563. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement