在Android里面图片的缩放,有很多方法,这里介绍一种比较简单的。它主要采用BitMap对象的切换,通过BitMap的比例缩放改变来实现图片的放大放小。下面是效果图:

程序代码:

(1)布局:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/relativeLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" xmlns:android="http://schemas.android.com/apk/res/android"> <ImageView android:id="@+id/imageView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" > </ImageView> <LinearLayout android:id="@+id/linearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true"> <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>

(2)代码:

package com.myandroid.test; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; public class AlterImageSize extends Activity { private ImageView imageView; private Button bt_bigger; private Button bt_smaller; private RelativeLayout layout; //容器 private Bitmap bmp; //bitmap图片对象 private int primaryWidth; //原图片宽 private int primaryHeight; //原图片高 private double scaleWidth, scaleHeight; //高宽比例 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //初始化 getWidget(); } /** * 获取控件对象并初始化 */ private void getWidget() { imageView = (ImageView)findViewById(R.id.imageView); layout = (RelativeLayout)findViewById(R.id.relativeLayout); bt_bigger = (Button)findViewById(R.id.bt_bigger); bt_smaller = (Button)findViewById(R.id.bt_smaller); //创建BitMap对象,用于显示图片 bmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.butterfly); //原始大小 primaryWidth = bmp.getWidth(); primaryHeight = bmp.getHeight(); //初始比例为1 scaleWidth = scaleHeight = 1; imageView.setImageBitmap(bmp); bt_bigger.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub scale(1.25, 1.25); } }); bt_smaller.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub scale(0.8, 0.8); } }); } /** * 缩放 */ private void scale(double scale_width, double scale_height) { //这种方法,有点不好是:如果图片大小超出屏幕会报错。 if((scale_width > 1 && scaleWidth * primaryWidth >= getWindowManager().getDefaultDisplay().getWidth()) || (scale_width > 1 && scale_height * primaryHeight >= getWindowManager().getDefaultDisplay().getHeight())){ bt_bigger.setEnabled(false); }else { bt_bigger.setEnabled(true); } scaleWidth = scaleWidth * scale_width; //缩放到原来的*倍 scaleHeight = scaleHeight * scale_height; Matrix matrix = new Matrix(); //矩阵,用于图片比例缩放 matrix.postScale((float)scaleWidth, (float)scaleHeight); //设置高宽比例(三维矩阵) //缩放后的BitMap Bitmap newBmp = Bitmap.createBitmap(bmp, 0, 0, primaryWidth, primaryHeight, matrix, true); //重新设置BitMap imageView.setImageBitmap(newBmp); } }

更多相关文章

  1. 总结 使用PHP作为中间介来实现android链接远程数据库。
  2. 如何实现一个图片加载框架
  3. ObjectHttp使用介绍篇 —— 基础使用
  4. Android(安卓)编程下图片的内存优化
  5. Android通知图库更新
  6. Android(安卓)Jetpack(二)ViewModel 组件原理剖析
  7. android下res目录 资源定义及使用
  8. Android(安卓)开发 res里面的drawable(ldpi、mdpi、hdpi、xhdpi
  9. [转]Android有效解决加载大图片时内存溢出的问题

随机推荐

  1. JAVA环境的CPU高负载问题排查小计
  2. 深度学习经典网络架构实战系列
  3. WEB服务器参数优化配置模版
  4. Node实战篇:Express 中间件 cookie-parser
  5. ui设计培训机构出来的怎么样?
  6. 某风电企业研发软件许可监控管理及效率提
  7. 某汽车零部件企业研发软件许可监控与优化
  8. Golang笔记之流程控制
  9. MongoDB实战篇:高级查询----$elemMatch与a
  10. Veeam v11 重量级功能 CDP 持续数据保护(