`
407827531
  • 浏览: 1076361 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

使用Matrix放大或缩小图片

XML 
阅读更多

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

public class ex04_22 extends Activity{
   
 private ImageView mImageView;
 private Button btn1,btn2;
 private TextView mTextView;
 private AbsoluteLayout layout1;
 private Bitmap bmp;
 private int id=0;
 private int displayWidth,displayHeight;
 private float scaleWidth=1,scaleHeight=1;
 private final static String filename="/data/data/ex04_22.lcs/ex04_22_2.png";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //取得屏幕分辨率
        DisplayMetrics dm=new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        displayWidth=dm.widthPixels;
        displayHeight=dm.heightPixels-80;
       
        bmp=BitmapFactory.decodeResource(this.getResources(),R.drawable.ex04_22_1);
        layout1=(AbsoluteLayout)findViewById(R.id.layout1);
        mImageView=(ImageView)findViewById(R.id.myImageView);
        btn1=(Button)findViewById(R.id.myButton1);
        btn1.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
          small();
         }
        });
        btn2=(Button)findViewById(R.id.myButton2);
        btn2.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
          big();
         }
        });
    }
    private void small(){
     //获得Bitmap的高和宽
     int bmpWidth=bmp.getWidth();
     int bmpHeight=bmp.getHeight();
     //设置缩小比例
     double scale=0.8;
     //计算出这次要缩小的比例
     scaleWidth=(float)(scaleWidth*scale);
     scaleHeight=(float)(scaleHeight*scale);
     //产生resize后的Bitmap对象
     Matrix matrix=new Matrix();
     matrix.postScale(scaleWidth, scaleHeight);
     Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);
     if(id==0){
      layout1.removeView(mImageView);
     }
     else{
      layout1.removeView((ImageView)findViewById(id));
      
     }
     id++;
     ImageView imageView=new ImageView(this);
     imageView.setId(id);
     imageView.setImageBitmap(resizeBmp);
     layout1.addView(imageView);
     setContentView(layout1);
     btn2.setEnabled(true);
    }
    private void big(){
     //获得Bitmap的高和宽
     int bmpWidth=bmp.getWidth();
     int bmpHeight=bmp.getHeight();
     //设置缩小比例
     double scale=1.25;
     //计算出这次要缩小的比例
     scaleWidth=(float)(scaleWidth*scale);
     scaleHeight=(float)(scaleHeight*scale);
     //产生resize后的Bitmap对象
     Matrix matrix=new Matrix();
     matrix.postScale(scaleWidth, scaleHeight);
     Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);
     if(id==0){
      layout1.removeView(mImageView);
     }
     else{
      layout1.removeView((ImageView)findViewById(id));
      
     }
     id++;
     ImageView imageView=new ImageView(this);
     imageView.setId(id);
     imageView.setImageBitmap(resizeBmp);
     layout1.addView(imageView);
     setContentView(layout1);
     if(scaleWidth*scale*bmpWidth>displayWidth||scaleHeight*scale*scaleHeight>displayHeight){
      btn2.setEnabled(false);
     }
    }
}


xml文件

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
    android:id="@+id/layout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
  >
    <ImageView
      android:id="@+id/myImageView"
      android:layout_width="200px"
      android:layout_height="150px"
      android:src="@drawable/ex04_22_1"
      android:layout_x="0px"
      android:layout_y="0px"
    >
    </ImageView>
    <Button
      android:id="@+id/myButton1"
      android:layout_width="90px"
      android:layout_height="60px"
      android:text="缩小"
      android:textSize="18sp"
      android:layout_x="20px"
      android:layout_y="372px"
    >
    </Button>
    <Button
      android:id="@+id/myButton2"
      android:layout_width="90px"
      android:layout_height="60px"
      android:text="放大"
      android:textSize="18sp"
      android:layout_x="210px"
      android:layout_y="372px"
    >
    </Button>
  </AbsoluteLayout>

 

分享到:
评论

相关推荐

    android Matrix实现图片随意放大缩小或拖动

    Android中使用`Matrix`实现图片的放大、缩小和拖动功能,主要步骤包括设置`ImageView`的`scaleType`为`matrix`,创建并管理`Matrix`对象,以及正确处理触摸事件,根据触摸事件的不同类型来决定执行拖动或缩放操作。...

    双击放大缩小图片双击放大缩小图片

    标题"双击放大缩小图片"和描述所提及的是一个专门处理这一功能的View工具类。下面将详细阐述实现这个功能的关键知识点。 1. **自定义View**: 在Android中,为了实现特定的UI效果,我们常常需要创建自定义View。这是...

    Android 图片随手势放大缩小功能

    在Android开发中,实现图片随手势放大缩小的功能是一项常见的需求,尤其在开发图像查看器或者照片浏览应用时。这个功能让用户体验更加流畅自然,能够自由地探索图片的细节。以下将详细讲解如何实现这一功能。 首先...

    安卓网络图片查看放大缩小,带有本地图片查看

    为了实现放大缩小功能,通常会配合ScaleGestureDetector来检测用户的双指缩放手势,同时使用Matrix来处理图片的变换。Matrix类提供了缩放、平移等操作,通过改变其内部矩阵,可以动态调整ImageView中的图片。 3. ...

    SurfaceView放大和缩小

    当你需要放大或缩小视频画面时,你需要创建一个Matrix对象,然后根据目标放大倍数调用`postScale()`方法。如果要实现局部放大,还需要计算出要放大的区域的坐标,确保只有该区域内的内容被放大。 为了将这些变换...

    android 图片放大缩小滑动

    在图片放大缩小中,我们需要改变`ImageView`的`Matrix`属性来实现图片的动态调整。当用户执行缩放手势时,我们根据`ScaleGestureDetector`提供的比例因子更新`Matrix`。 4. **OnTouchListener与GestureListener**: ...

    安卓图片的放大缩小及旋转

    总结一下,Android图片的放大缩小及旋转涉及到`ImageView`的使用、手势识别、`Matrix`变换以及图片的加载与内存管理。理解并掌握这些知识点,能够帮助开发者在Android应用中实现丰富的图片交互功能。在实际操作中,...

    android 两点触摸 两个手指放大缩小图片

    最后,为了使图片放大缩小效果平滑,可以利用动画API(如ObjectAnimator或ValueAnimator)来渐变地改变图片的大小,而不是立即跳到新的尺寸,这样可以提供更好的用户体验。 总的来说,实现Android两点触摸放大缩小...

    android 图片双击放大缩小

    在Android开发中,图片双击放大缩小是一种常见的交互方式,为用户提供更好的查看体验。这个开源项目 "ImageViewZoom-master" 正是提供了这样的功能,让用户在查看图片时可以通过双击手势来实现图片的缩放操作。下面...

    android图片放大缩小 ImageView

    10. **性能考量**: 当处理大量图片或高分辨率图片时,要注意内存管理,合理使用Bitmap的配置(如inSampleSize,inPreferredConfig等),以及及时释放不再使用的Bitmap对象,防止内存泄漏。 通过上述技术,开发者...

    android 图片放大缩小 多触屏 代码

    为了实现图片的放大缩小,我们可以使用Matrix类来改变ImageView的变换矩阵。Matrix提供了scale()方法用于缩放,我们可以通过计算两个手指之间的距离变化来确定缩放的比例。当用户在屏幕上同时放置两个手指并移动它们...

    Android实现图片放大缩小Demo

    在Android开发中,实现图片的放大缩小功能是常见的需求,特别是在设计相册或者查看图片的应用中。本Demo主要展示了如何在Android环境中实现这样的功能,既支持网络图片的加载,也支持本地图片的显示,并允许用户进行...

    android 图片放大与缩小

    在Android开发中,图片...综上所述,这个示例展示了如何使用自定义View和按键事件实现简单的图片放大缩小功能。在实际项目中,可能需要结合手势识别、`Matrix` 变换以及内存管理等技术来提供更流畅、更高效的用户体验。

    Android简单的实现对单张图片的放大、缩小、左右平滑

    用户可以通过单击切换放大/缩小状态,双击快速放大或缩小,以及通过滑动来平移图片。这个功能对于图片查看器或者编辑器类的应用非常实用。记得在实际项目中,还要考虑手势冲突、图片边界判断等问题,以提供更好的...

    Android Matrix处理ImageView中图片缩放,平移

    本文将深入探讨如何利用Matrix处理ImageView中的图片缩放和平移操作。 首先,我们需要了解Matrix的基本概念。Matrix是一个3x3的浮点数矩阵,用于存储图像变换参数。在二维空间中,图像的坐标可以通过应用Matrix进行...

    wpf 转动滚轮以鼠标为中心放大缩小控件

    要实现"以鼠标为中心放大缩小控件"的功能,我们需要以下步骤: 1. **创建MatrixTransform对象**:在XAML中为控件定义一个MatrixTransform,并将其设置为Transform属性,如`...

    Android图片放大缩小

    因此,通常会使用图片加载库,如Glide、Picasso或 Fresco,它们能进行图片的内存和磁盘缓存管理,并支持按需加载和缩放图片,减少内存占用。 7. **性能优化**: 当图片过大时,需要考虑使用`BitmapFactory.Options...

    android 实现对图片的放大缩小

    在Android开发中,图片的放大缩小功能是移动应用中常见的需求,尤其在图像查看器、照片编辑器等应用中更是必不可少。本节我们将详细探讨如何实现这个功能,主要涉及的知识点包括手势检测、图片矩阵变换以及视图更新...

    最新版本图片浏览器,放大缩小保存

    - 在Android中,使用`Matrix`类来实现图片的放大和缩小。通过设置`ScaleType`属性,如`CENTER_CROP`、`FIT_CENTER`等,可以改变图片在`ImageView`中的显示方式。同时,可以通过监听手势事件,计算手势的比例,更新`...

    android 显示网络图片并放大缩小

    图片的放大缩小可以通过改变ImageView的ScaleType属性来实现,如设置为`Matrix`。然后在多点触摸事件中,根据两个手指之间的距离变化调整图片的缩放比例。同时,为了保持图片的清晰度,可能需要对图片进行矩阵操作...

Global site tag (gtag.js) - Google Analytics