1. packagecom.myandroid.test;
  2. importandroid.app.Activity;
  3. importandroid.graphics.Bitmap;
  4. importandroid.graphics.BitmapFactory;
  5. importandroid.graphics.Matrix;
  6. importandroid.os.Bundle;
  7. importandroid.view.View;
  8. importandroid.view.View.OnClickListener;
  9. importandroid.widget.Button;
  10. importandroid.widget.ImageView;
  11. importandroid.widget.RelativeLayout;
  12. publicclassAlterImageSizeextendsActivity{
  13. privateImageViewimageView;
  14. privateButtonbt_bigger;
  15. privateButtonbt_smaller;
  16. privateRelativeLayoutlayout;//容器
  17. privateBitmapbmp;//bitmap图片对象
  18. privateintprimaryWidth;//原图片宽
  19. privateintprimaryHeight;//原图片高
  20. privatedoublescaleWidth,scaleHeight;//高宽比例
  21. /**Calledwhentheactivityisfirstcreated.*/
  22. @Override
  23. publicvoidonCreate(BundlesavedInstanceState){
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.main);
  26. //初始化
  27. getWidget();
  28. }
  29. /**
  30. *获取控件对象并初始化
  31. */
  32. privatevoidgetWidget(){
  33. imageView=(ImageView)findViewById(R.id.imageView);
  34. layout=(RelativeLayout)findViewById(R.id.relativeLayout);
  35. bt_bigger=(Button)findViewById(R.id.bt_bigger);
  36. bt_smaller=(Button)findViewById(R.id.bt_smaller);
  37. //创建BitMap对象,用于显示图片
  38. bmp=BitmapFactory.decodeResource(this.getResources(),R.drawable.butterfly);
  39. //原始大小
  40. primaryWidth=bmp.getWidth();
  41. primaryHeight=bmp.getHeight();
  42. //初始比例为1
  43. scaleWidth=scaleHeight=1;
  44. imageView.setImageBitmap(bmp);
  45. bt_bigger.setOnClickListener(newOnClickListener(){
  46. @Override
  47. publicvoidonClick(Viewv){
  48. //TODOAuto-generatedmethodstub
  49. scale(1.25,1.25);
  50. }
  51. });
  52. bt_smaller.setOnClickListener(newOnClickListener(){
  53. @Override
  54. publicvoidonClick(Viewv){
  55. //TODOAuto-generatedmethodstub
  56. scale(0.8,0.8);
  57. }
  58. });
  59. }
  60. /**
  61. *缩放
  62. */
  63. privatevoidscale(doublescale_width,doublescale_height){
  64. //这种方法,有点不好是:如果图片大小超出屏幕会报错。
  65. if((scale_width>1&&scaleWidth*primaryWidth>=getWindowManager().getDefaultDisplay().getWidth())
  66. ||(scale_width>1&&scale_height*primaryHeight>=getWindowManager().getDefaultDisplay().getHeight())){
  67. bt_bigger.setEnabled(false);
  68. }else{
  69. bt_bigger.setEnabled(true);
  70. }
  71. scaleWidth=scaleWidth*scale_width;//缩放到原来的*倍
  72. scaleHeight=scaleHeight*scale_height;
  73. Matrixmatrix=newMatrix();//矩阵,用于图片比例缩放
  74. matrix.postScale((float)scaleWidth,(float)scaleHeight);//设置高宽比例(三维矩阵)
  75. //缩放后的BitMap
  76. BitmapnewBmp=Bitmap.createBitmap(bmp,0,0,primaryWidth,primaryHeight,matrix,true);
  77. //重新设置BitMap
  78. imageView.setImageBitmap(newBmp);
  79. }
  80. }

xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/relativeLayout"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:gravity="center_horizontal" >    <ScrollView        android:id="@+id/scroll"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:layout_gravity="center" >        <HorizontalScrollView            android:id="@+id/hs"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_horizontal" >            <ImageView                android:id="@+id/imageView"                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:gravity="center" />        </HorizontalScrollView>    </ScrollView>    <LinearLayout        android:id="@+id/linearLayout"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_alignParentLeft="true"        android:gravity="center" >        <Button            android:id="@+id/bt_smaller"            android:layout_width="100px"            android:layout_height="50px"            android:text="缩小" >        </Button>        <Button            android:id="@+id/bt_bigger"            android:layout_width="100px"            android:layout_height="50px"            android:text="放大" >        </Button>    </LinearLayout></RelativeLayout>


更多相关文章

  1. Android之十三图片2D翻转
  2. android调用系统(相机)的图片,并且返回
  3. Android中多层Fragment嵌套,调用相册返回Uri无法显示图片的问题解
  4. Android(安卓)读取Assets中图片
  5. android自定义ProgressBar
  6. Android(安卓)File Explorer 展示图片
  7. 【OOM】Android加载大图片OOM异常解决
  8. android 照相以及关于自动生成的图片分辨率和面积太小问题
  9. Android(安卓)编程下背景图片适配工具类

随机推荐

  1. 【Android每日一讲】2012.10.23 不同Acti
  2. Android自动换行标签
  3. Android中TabHost中实现标签的滚动
  4. JS、LUA都可以开发移动应用
  5. Android(安卓)NDK: jni/Android.mk: Cann
  6. android - 自定义(组合)控件 + 自定义控件
  7. 编译Android源码制作ROM,烧录
  8. Android初体验-D2
  9. Android(安卓)onTouch事件传递机制
  10. android - startActivity浅谈