歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 圖片放大縮小

Android 圖片放大縮小

日期:2017/3/1 10:46:17   编辑:Linux編程
Android 圖片放大縮小
  1. package com.wansha;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.content.DialogInterface;
  5. import android.graphics.Bitmap;
  6. import android.graphics.BitmapFactory;
  7. import android.graphics.Matrix;
  8. import android.os.Bundle;
  9. import android.util.DisplayMetrics;
  10. import android.util.Log;
  11. import android.view.KeyEvent;
  12. import android.view.View;
  13. import android.view.View.OnClickListener;
  14. import android.widget.Button;
  15. import android.widget.ImageView;
  16. import android.widget.RelativeLayout;
  17. public class Activity31 extends Activity {
  18. private RelativeLayout layout;
  19. private Button big;
  20. private Button small;
  21. private ImageView bg;
  22. private Bitmap map;
  23. private float scaleH = 1;
  24. private float scaleW = 1;
  25. private int id;
  26. private DisplayMetrics metrics;
  27. @Override
  28. public void onCreate(Bundle savedInstanceState) {
  29. super.onCreate(savedInstanceState);
  30. setContentView(R.layout.main);
  31. this.layout = (RelativeLayout)this.findViewById(R.id.la);
  32. this.big = (Button)this.findViewById(R.id.big);
  33. this.small = (Button)this.findViewById(R.id.small);
  34. // this.image2 = (ImageView)this.findViewById(R.id.image1);
  35. // this.image2.setImageResource(R.drawable.left);
  36. this.bg = (ImageView)this.findViewById(R.id.bg);
  37. // this.bg.setImageResource(R.drawable.tttt);
  38. this.map = BitmapFactory.decodeResource(getResources(), R.drawable.tttt);
  39. Log.d("mydebug", "imageheigh---->" + map.getWidth() + "imagewidth------->" + map.getHeight());
  40. metrics = new DisplayMetrics();
  41. getWindowManager().getDefaultDisplay().getMetrics(metrics);
  42. // Bitmap bm = Bitmap.createBitmap(map, 0, 0, 100, 100);
  43. // this.bg.setImageBitmap(bm);
  44. Log.d("mydebug", "screen_width--------->" + metrics.widthPixels + "screen_height----------->" + metrics.heightPixels);
  45. this.big.setOnClickListener(new OnClickListener() {
  46. @Override
  47. public void onClick(View v) {
  48. float scale = 1.25f;
  49. Matrix matrix = new Matrix();
  50. scaleW = scaleW * scale;
  51. scaleH = scaleH * scale;
  52. if(scaleH*map.getHeight() >= metrics.heightPixels || scaleW*map.getWidth() >= metrics.widthPixels){
  53. big.setEnabled(false);
  54. return;
  55. }
  56. if(id == 0){
  57. layout.removeView(bg);
  58. }else{
  59. layout.removeView((ImageView)findViewById(id));
  60. }
  61. matrix.postScale(scaleW, scaleH);
  62. Bitmap bitmap = Bitmap.createBitmap(map, 0, 0, map.getWidth(), map.getHeight(), matrix, true);
  63. bg.setImageBitmap(bitmap);
  64. ImageView image = new ImageView(Activity31.this);
  65. image.setId(++id);
  66. image.setImageBitmap(bitmap);
  67. layout.addView(image);
  68. setContentView(layout);
  69. System.out.println("bit---------->" + scaleH*scale*map.getHeight() + " : " + scaleW*scale*map.getWidth());
  70. if(scaleH*scale*map.getHeight() >= metrics.heightPixels || scaleW*scale*map.getWidth() >= metrics.widthPixels){
  71. big.setEnabled(false);
  72. }else{
  73. big.setEnabled(true);
  74. }
  75. small.setEnabled(true);
  76. }
  77. });
  78. this.small.setOnClickListener(new OnClickListener() {
  79. @Override
  80. public void onClick(View v) {
  81. if(id == 0){
  82. layout.removeView(bg);
  83. }else{
  84. layout.removeView((ImageView)findViewById(id));
  85. }
  86. float scale = 0.8f;
  87. Matrix matrix = new Matrix();
  88. scaleW = scaleW * scale;
  89. scaleH = scaleH * scale;
  90. matrix.postScale(scaleW, scaleH);
  91. Bitmap bitmap = Bitmap.createBitmap(map, 0, 0, map.getWidth(), map.getHeight(), matrix, true);
  92. bg.setImageBitmap(bitmap);
  93. ImageView image = new ImageView(Activity31.this);
  94. image.setId(++id);
  95. image.setImageBitmap(bitmap);
  96. layout.addView(image);
  97. setContentView(layout);
  98. if(scaleH*scale <= 0.4){
  99. small.setEnabled(false);
  100. }else{
  101. big.setEnabled(true);
  102. }
  103. big.setEnabled(true);
  104. }
  105. });
  106. }
  107. @Override
  108. protected void onSaveInstanceState(Bundle outState) {
  109. // TODO Auto-generated method stub
  110. super.onSaveInstanceState(outState);
  111. }
  112. @Override
  113. public boolean onKeyDown(int keyCode, KeyEvent event) {
  114. System.out.println("keycode--------->" + keyCode);
  115. if(keyCode == KeyEvent.KEYCODE_BACK){
  116. new AlertDialog.Builder(this).setTitle("退出").setMessage("確定要退出嗎?").setPositiveButton("確定", new DialogInterface.OnClickListener() {
  117. @Override
  118. public void onClick(DialogInterface dialog, int which) {
  119. finish();
  120. android.os.Process.killProcess(android.os.Process.myPid());
  121. }
  122. }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
  123. @Override
  124. public void onClick(DialogInterface dialog, int which) {
  125. }
  126. }).show();
  127. }
  128. return super.onKeyDown(keyCode, event);
  129. }
  130. }
Copyright © Linux教程網 All Rights Reserved