源码如下:

import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.LinearLayout;public class ImageZoomActivity extends Activity {private Button myButtonZoomIn;private Button myButtonZoomOut;private LinearLayout myImgLayout;private ImageView myImageView;private Bitmap bmp;private int id = 0;private int displayWidth;private int displayHeight;private float scaleWidth = 1;private float scaleHeight = 1;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.zoom_in_out);//取得屏幕分辨率大小DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);displayWidth = dm.widthPixels;//高度为屏幕分辨率,减去按钮高度displayHeight = dm.heightPixels - 80;//初始化bmpbmp = BitmapFactory.decodeResource(getResources(), R.drawable.imgqr);myImageView = (ImageView)findViewById(R.id.imageView);myButtonZoomIn = (Button) findViewById(R.id.ZoomInButton);myButtonZoomOut = (Button) findViewById(R.id.ZoomOutButton);myImgLayout = (LinearLayout) findViewById(R.id.imglayout);myButtonZoomIn.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {big();}});myButtonZoomOut.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {small();}});}//图片缩小的方法private void small() {int bmpWidth = bmp.getWidth();int bmpHeight = bmp.getHeight();//设置图片缩小比例double scale = 0.8;//计算出这次要缩小的比例scaleWidth = (float) (scaleWidth * scale);scaleHeight = (float) (scaleHeight * scale);//产生ReSize之后的bmp对象Matrix matrix = new Matrix();matrix.postScale(scaleWidth, scaleHeight);Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);if(id == 0) {//如果是第一次按,就删除原来默认的ImageViewmyImgLayout.removeView(myImageView);}else {//否则,删除上一次放大缩小后产生的ImageViewmyImgLayout.removeView((ImageView)findViewById(id));}//产生新的ImageView,并放入 resize的Bmp图像,再放入Layoutid++;ImageView imageView = new ImageView(ImageZoomActivity.this);imageView.setId(id);imageView.setImageBitmap(resizeBmp);myImgLayout.addView(imageView);myButtonZoomIn.setEnabled(true);//如果太小,则将缩小按钮设为falseif(scaleWidth*scale*bmpWidth<10 || scaleHeight*scale*bmpHeight<10) {myButtonZoomOut.setEnabled(false);}}//图片放大的方法private void big() {int bmpWidth = bmp.getWidth();int bmpHeight = bmp.getHeight();//设置图片放大比例double scale = 1.25;//计算出这次要缩小的比例scaleWidth = (float) (scaleWidth * scale);scaleHeight = (float) (scaleHeight * scale);//产生ReSize之后的bmp对象Matrix matrix = new Matrix();matrix.postScale(scaleWidth, scaleHeight);Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);if(id == 0) {//如果是第一次按,就删除原来默认的ImageViewmyImgLayout.removeView(myImageView);}else {//否则,删除上一次放大缩小后产生的ImageViewmyImgLayout.removeView((ImageView)findViewById(id));}//产生新的ImageView,并放入 resize的Bmp图像,再放入Layoutid++;ImageView imageView = new ImageView(ImageZoomActivity.this);imageView.setId(id);imageView.setImageBitmap(resizeBmp);myImgLayout.addView(imageView);myButtonZoomOut.setEnabled(true);//如果再放大将超过屏幕大小,则设置放大按钮为falseif(scaleWidth*scale*bmpWidth>displayWidth || scaleHeight*scale*bmpHeight>displayHeight) {myButtonZoomIn.setEnabled(false);}}}

对应的XML文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="wrap_content"><RelativeLayout        android:id="@+id/main"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >       <LinearLayout            android:id="@+id/imglayout"            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:orientation="vertical">    <ImageView   android:id="@+id/imageView"  android:src="@drawable/imgqr"  android:layout_width="fill_parent"  android:layout_height="wrap_content"/>  </LinearLayout>          <LinearLayout            android:id="@+id/bottom_panel"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:orientation="horizontal"            android:layout_alignParentBottom="true"            >            <Button                android:id="@+id/ZoomInButton"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:layout_gravity="center_vertical"                android:text="Zoom In"                />            <Button                android:id="@+id/ZoomOutButton"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:layout_gravity="center_vertical"                android:text="Zoom Out"                />         </LinearLayout>   </RelativeLayout></LinearLayout>


更多相关文章

  1. android拼接多张bitmap图片
  2. Android自动播放图片功能实现
  3. Android Glide设置图片圆角,亲测有效
  4. ANDROID图片压缩代码
  5. Android 网络下载图片

随机推荐

  1. Android中资源文件的Shape使用总结
  2. 跟着做 Android NDK学习入门如此简单(一)
  3. Android一日游
  4. android布局文件中各属性所代表的意义
  5. Android 控件布局常用属性
  6. [Android]Android部分基础学习路线图
  7. android layout,xml属性介绍
  8. android:versionCode和android:versionNa
  9. 理解 Android Build 系统
  10. 《Android移动应用开发从入门到精通》下