天天看点

android 图片放大缩小 多点缩放

http://blog.csdn.net/fan476767883/article/details/7283438

在这我把点击按钮缩放的代码贴上来,因为实在讨厌网上普遍流传的那种“替换imageiew的方法”。

主要代码如下

[java] view

plaincopyprint?

import android.app.activity;  

import android.graphics.matrix;  

import android.graphics.pointf;  

import android.graphics.rect;  

import android.os.bundle;  

import android.view.view;  

import android.view.view.onclicklistener;  

import android.widget.imagebutton;  

import android.widget.imageview;  

public class myimageviewactivity extends activity {  

        private imageview view;  

        matrix matrix = new matrix();  

        rect rect;  

        private imagebutton zoom_in,zoom_out;  

        private pointf mid;  

        @override    

        public void oncreate(bundle savedinstancestate) {    

            super.oncreate(savedinstancestate);    

            setcontentview(r.layout.main);    

            mid = new pointf();  

            findall();  

            setlistener();  

        }    

        private void findall(){  

            view = (imageview) findviewbyid(r.id.image_view);    

            zoom_in = (imagebutton) findviewbyid(r.id.ibtn_zoom_in);  

            zoom_out = (imagebutton) findviewbyid(r.id.ibtn_zoom_out);  

        }  

        private void setlistener(){  

             view.setontouchlistener(new mulitpointtouchlistener());  

             //放大  

             zoom_in.setonclicklistener(new onclicklistener() {  

                public void onclick(view v) {  

                    matrix.set(view.getimagematrix());  

                    setmid();//设置放大的中心  

                    matrix.postscale(1.3f, 1.3f, mid.x,mid.y);  

                    view.setimagematrix(matrix);  

                    view.invalidate();  

                }  

            });  

             //缩小  

             zoom_out.setonclicklistener(new onclicklistener() {  

                    matrix.postscale(0.8f, 0.8f, mid.x,mid.y);  

        private void setmid(){  

            rect = view.getdrawable().getbounds();  

            mid.x = view.getdrawable().getbounds().centerx();  

            mid.y = view.getdrawable().getbounds().centery();  

 }  

其中view.setontouchlistener(new mulitpointtouchlistener()); 就是上边那篇文章里的。

layout如下

[html] view

<?xml version="1.0" encoding="utf-8"?>  

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"  

    android:layout_width="fill_parent"  

    android:layout_height="fill_parent"  

    android:orientation="vertical" >  

   <relativelayout   

       android:layout_width="fill_parent"  

       android:layout_height="fill_parent">  

        <imageview  

        android:id="@+id/image_view"  

        android:layout_width="wrap_content"  

        android:layout_height="wrap_content"  

        android:scaletype="matrix"  

        android:layout_centerinparent="true"  

        android:src="@drawable/test_image" />  

        <linearlayout   

            android:layout_width="fill_parent"  

            android:layout_height="wrap_content"  

            android:layout_alignparentbottom="true"  

            android:gravity="right"  

            android:orientation="horizontal">  

                <imagebutton  

            android:id="@+id/ibtn_zoom_out"  

            android:layout_width="66dp"  

            android:layout_height="42dp"  

            android:adjustviewbounds="true"  

            android:background="#00000000"  

            android:padding="0dp"  

            android:scaletype="fitcenter"  

            android:src="@drawable/ibtn_gallery_zoom_out" />  

                                <imagebutton  

            android:id="@+id/ibtn_zoom_in"  

            android:src="@drawable/ibtn_gallery_zoom_in" />  

        </linearlayout>  

        </relativelayout>  

</linearlayout>  

后面会把全部源码上传上来

最后效果如图:

android 图片放大缩小 多点缩放

下载地址:http://download.csdn.net/detail/fan476767883/4081476

继续阅读