Android编程实现图片放大缩小功能ZoomControls控件用法实例

发布时间 - 2026-01-11 03:23:54    点击率:

本文实例讲述了Android编程实现图片放大缩小功能ZoomControls控件用法。分享给大家供大家参考,具体如下:

MainActivity代码:

package example.com.myapplication;
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.ImageView;
import android.widget.LinearLayout;
import android.widget.ZoomControls;
public class MainActivity extends Activity {
  private LinearLayout llLayout;
  private ZoomControls zoomcontrols;
  private ImageView img;
  private int id=0;
  private int displayWidth;
  private int displayHeight;
  private float scaleWidth = 1;
  private float scaleHeight = 1;
  private Bitmap bitmap;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    llLayout =(LinearLayout)findViewById(R.id.layout);
    //取得屏幕分辨率大小
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    displayWidth = dm.widthPixels;
    //屏幕高度减去zoomControls的高度
    displayHeight = dm.heightPixels;
    bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.c);
    img =(ImageView)findViewById(R.id.image);
    //zoom.hide();隐藏zoomControls
    //zoom.show();显示zoomCOntrols
    zoomcontrols =(ZoomControls)findViewById(R.id.zoomcontrol);
    img =(ImageView)findViewById(R.id.image);
    zoomcontrols.setIsZoomInEnabled(true);
    zoomcontrols.setIsZoomOutEnabled(true);
    //图片放大
    zoomcontrols.setOnZoomInClickListener(new OnClickListener()
    {
      public void onClick(View v)
      {
        int bmpWidth = bitmap.getWidth();
        int bmpHeight = bitmap.getHeight();
        //设置图片放大但比例
        double scale = 1.25;
        //计算这次要放大的比例
        scaleWidth =(float)(scaleWidth*scale);
        scaleHeight =(float)(scaleHeight*scale);
        //产生新的大小但Bitmap对象
        Matrix matrix = new Matrix();
        matrix.postScale(scaleWidth, scaleHeight);
        Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bmpWidth,bmpHeight,matrix,true);
        img.setImageBitmap(resizeBmp);
      }
    });
    //图片减小
    zoomcontrols.setOnZoomOutClickListener(new OnClickListener()
    {
      public void onClick(View v) {
        int bmpWidth = bitmap.getWidth();
        int bmpHeight = bitmap.getHeight();
        //设置图片放大但比例
        double scale = 0.8;
        //计算这次要放大的比例
        scaleWidth =(float)(scaleWidth*scale);
        scaleHeight =(float)(scaleHeight*scale);
        //产生新的大小但Bitmap对象
        Matrix matrix = new Matrix();
        matrix.postScale(scaleWidth, scaleHeight);
        Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bmpWidth,bmpHeight,matrix,true);
        img.setImageBitmap(resizeBmp);
      }
    });
  }
}

activity_main布局文件代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:id="@+id/layout"
  >
  <ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/c"
    />
  <ZoomControls
    android:id="@+id/zoomcontrol"
    android:layout_gravity="bottom"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />
  </LinearLayout>

常见方法说明:

hasFocus():判断焦点
hide():隐藏
onTouchEvent(MotionEvent event):现这个方法来处理触摸屏移动事件
setIsZoomInEnabled(boolean isEnabled):是否允许放大
setIsZoomOutEnabled(boolean isEnabled):是否允许缩小
setOnZoomInClickListener(View.OnClickListener listener):注册放大监听器
setOnZoomOutClickListener(View.OnClickListener listener):注册缩小监听器
setZoomSpeed(long speed):设置缩放速度
show():显示

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


# Android  # 图片  # 放大  # 缩小  # ZoomControls控件  # Android轮播图点击图片放大效果的实现方法  # Android DragImageView实现下拉拖动图片放大效果  # Android中imageView图片放大缩小及旋转功能示例代码  # Android实现对图片放大、平移和旋转的功能  # Android多点触控实现对图片放大缩小平移  # 惯性滑动等功能  # Android实现图片点击放大  # 进阶  # 相关内容  # 感兴趣  # 给大家  # 更多关于  # 解决方法  # 方法来  # 所述  # 图像处理  # 程序设计  # 讲述了  # float  # displayHeight  # displayWidth  # scaleWidth  # Override  # bitmap  # scaleHeight  # llLayout  # private 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: php结合redis实现高并发下的抢购、秒杀功能的实例  高端网站建设与定制开发一站式解决方案 中企动力  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Laravel如何配置Horizon来管理队列?(安装和使用)  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  如何快速搭建二级域名独立网站?  php打包exe后无法访问网络共享_共享权限设置方法【教程】  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Android仿QQ列表左滑删除操作  如何用wdcp快速搭建高效网站?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  如何在云指建站中生成FTP站点?  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  敲碗10年!Mac系列传将迎来「触控与联网」双革新  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何在Windows虚拟主机上快速搭建网站?  JS弹性运动实现方法分析  佛山企业网站制作公司有哪些,沟通100网上服务官网?  如何在宝塔面板创建新站点?  如何利用DOS批处理实现定时关机操作详解  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  如何快速配置高效服务器建站软件?  如何在阿里云虚拟主机上快速搭建个人网站?  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  PythonWeb开发入门教程_Flask快速构建Web应用  如何快速启动建站代理加盟业务?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  如何用PHP快速搭建高效网站?分步指南  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  简单实现Android文件上传  如何在Windows 2008云服务器安全搭建网站?  Laravel Docker环境搭建教程_Laravel Sail使用指南  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  JS实现鼠标移上去显示图片或微信二维码  怎么用AI帮你为初创公司进行市场定位分析?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  EditPlus中的正则表达式 实战(2)  详解Android图表 MPAndroidChart折线图  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  详解CentOS6.5 安装 MySQL5.1.71的方法