android 图片放大缩小 多点缩放
16lz
2021-01-26
http://blog.csdn.net/fan476767883/article/details/7283438
在这我把点击按钮缩放的代码贴上来,因为实在讨厌网上普遍流传的那种“替换imageiew的方法”。
主要代码如下
[java] view plain copy print ?
- importandroid.app.Activity;
- importandroid.graphics.Matrix;
- importandroid.graphics.PointF;
- importandroid.graphics.Rect;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.ImageButton;
- importandroid.widget.ImageView;
- publicclassMyImageViewActivityextendsActivity{
- privateImageViewview;
- Matrixmatrix=newMatrix();
- Rectrect;
- privateImageButtonzoom_in,zoom_out;
- privatePointFmid;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mid=newPointF();
- findAll();
- setListener();
- }
- privatevoidfindAll(){
- 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);
- }
- privatevoidsetListener(){
- view.setOnTouchListener(newMulitPointTouchListener());
- //放大
- zoom_in.setOnClickListener(newOnClickListener(){
- publicvoidonClick(Viewv){
- matrix.set(view.getImageMatrix());
- setMid();//设置放大的中心
- matrix.postScale(1.3f,1.3f,mid.x,mid.y);
- view.setImageMatrix(matrix);
- view.invalidate();
- }
- });
- //缩小
- zoom_out.setOnClickListener(newOnClickListener(){
- publicvoidonClick(Viewv){
- matrix.set(view.getImageMatrix());
- setMid();//设置放大的中心
- matrix.postScale(0.8f,0.8f,mid.x,mid.y);
- view.setImageMatrix(matrix);
- view.invalidate();
- }
- });
- }
- privatevoidsetMid(){
- rect=view.getDrawable().getBounds();
- mid.x=view.getDrawable().getBounds().centerX();
- mid.y=view.getDrawable().getBounds().centerY();
- }
- }
其中view.setOnTouchListener(new MulitPointTouchListener()); 就是上边那篇文章里的。
layout如下
[html] view plain copy print ?
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns: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: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_in"/>
- </LinearLayout>
- </RelativeLayout>
- </LinearLayout>
后面会把全部源码上传上来
最后效果如图:
下载地址:http://download.csdn.net/detail/fan476767883/4081476
更多相关文章
- Android(安卓)Chronometer(计时器)
- Android(安卓)TextView字体设置
- Android设置全屏隐藏状态栏的方法
- 安卓实现标题和按钮在一行,按钮靠最右边布局
- h5
- android之帧动画实现
- Android动态布局,并动态为TextView控件设置drawableLeft、drawabl
- Android(安卓)RecyclerView 设置分割线(item头部也绘制)
- Android之获取画面大小