自定义一个View类(放大镜),在其onDraw()方法中根据原图片资源,以及想要展现的放大区域(我用的矩形),根据触摸点的位置,去原图找到相对应的点(我是用的比例算出来的),然后用矩形区域切割出这一部分,用PopupWindow组件显示就可以了,就这么简单。。。。具体更复杂的功能可以随着需要自己添加,部分代码如下:

java代码: public class Magnifier extends

View

{

private Paint

paint;

private Rect

rect;

public Magnifier(Context

context){

super(context);

paint = new

Paint();

paint.setAntiAlias(true);

paint.setColor(0xff008000);

paint.setStyle(Style.STROKE);

rect = new Rect(0, 0, AppConstants.EDGE*2,

AppConstants.EDGE*2);

}

protected void onDraw(Canvas

canvas)

{

canvas.save();

paint.setAlpha(255);

canvas.drawBitmap(resBitmap, srcRect, rect,

paint);

canvas.restore();

}

}

触摸事件响应(前面的部分是对应点的计算和对于越界的处理。)

java代码:

public boolean onTouchEvent(MotionEvent

event)

{

// TODO Auto-generated method

stub

int action =

event.getAction();

if(MotionEvent.ACTION_DOWN == action ||

MotionEvent.ACTION_MOVE ==

action)

{

float x =

(float)event.getX();

、float y =

(float)event.getY();

System.out.println("X: " + x + ", Y: " +

y);

srcRect.set((int)(x*760/480-AppConstants.EDGE),

(int)(y*1030/840-AppConstants.EDGE),

(int)(x*760/480+AppConstants.EDGE),

(int)(y*1030/840+AppConstants.EDGE));

point.set((int)x,

(int)y);

if(srcRect.left <

0)

{

srcRect.offset(-srcRect.left,

0);

}

else

if(srcRect.right >

resBitmap.getWidth())

{

srcRect.offset(resBitmap.getWidth()-srcRect.right,

0);

}

if(srcRect.top <

0)

{

srcRect.offset(0,

-srcRect.top);

}

else

if(srcRect.bottom >

resBitmap.getHeight())

{

srcRect.offset(0,

resBitmap.getHeight()-srcRect.bottom);

}

if((x<0) ||

(y<0))

{

popup.dismiss();

layout.invalidate();

return

true;

}

layout.removeCallbacks(showPopup);

layout.postDelayed(showPopup,

200);

magnifier.invalidate();

}

else

if(MotionEvent.ACTION_UP ==

action)

{

layout.removeCallbacks(showPopup);

popup.dismiss();

}

layout.invalidate();

return

true;

}

android 放大镜功能,Android 做一个放大镜的效果(转)相关推荐

  1. android 悬浮按钮 功能实现,怎么在Android中利用FloatingActionButton实现一个悬浮按钮效果...

    怎么在Android中利用FloatingActionButton实现一个悬浮按钮效果 发布时间:2020-12-02 17:41:30 来源:亿速云 阅读:238 作者:Leah 今天就跟大家聊聊有 ...

  2. android 画笔压痕效果,【自制样机教程】如何用Ps做一个压痕效果的Logo样机

    原标题:[自制样机教程]如何用Ps做一个压痕效果的Logo样机 上次教你们做的自制小糖袋的 贴图样机 不知道你们玩耍的咋样 今天再给你们介绍一个logo的样机 这次的教程主要用到了图层样式 来看看怎么 ...

  3. android远程打电话,Android打电话功能 Android实战教程第三篇之简单实现拨打电话功能...

    想了解Android实战教程第三篇之简单实现拨打电话功能的相关内容吗,杨道龙在本文为您仔细讲解Android打电话功能的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android拨打电话 ...

  4. android progressdialog 背景色,怎么在android中利用ProgressDialog实现一个加载效果

    怎么在android中利用ProgressDialog实现一个加载效果 发布时间:2020-12-07 17:00:07 来源:亿速云 阅读:77 作者:Leah 怎么在android中利用Progr ...

  5. video.min.js php,使用flv.js与video.js做一个视频直播效果

    这次给大家带来使用flv.js与video.js做一个视频直播效果,使用flv.js与video.js做出视频直播效果的注意事项有哪些,下面就是实战案例,一起来看一下. 环境配置 首先运行livego ...

  6. vue项目下拉框内容过长做一个滚动条的效果

    vue项目下拉框内容过长做一个滚动条的效果 如下图: 关键代码如下:

  7. 使用JSAPl来做一个倒计时的效果

    今天的小案例需要做一个倒计时的效果 我们的时分秒需要一直进行倒计时,然后我们的页面颜色需要根据定时器的操作来进行更换,首先我们还是可以来分析一下我们的HTML步骤 <div class=&quo ...

  8. android 放大镜功能,Android实现放大镜效果的方法实例(附源码)

    前言 应该有很多用过英语应用的同学都看多一个放大镜的效果,就是选中一段文字后,会有一个放大镜,这个究竟怎么实现的呢,我们今天来分析分析. 源码分析 public class ShaderView ex ...

  9. Android等待对话框(做一个带动态效果的对话框)

    又到了动画总结的时间了,今天要总结的是一个对话框形式的动画效果,老样子gif图不太清晰,但是总体的效果是可以看的清楚的,一个动态的等待对话框,我只是简单的实现了一些动画,如果需要更复杂的需求,可以联系 ...

  10. android倒计时功能,android实现倒计时功能(开始、暂停、0秒结束)

    本文实例为大家分享了android实现倒计时功能的具体代码,供大家参考,具体内容如下 [思路]:通过 timer 执行周期延时的任务,handler 中将计时信息更新,并在计时结束时结束 timer ...

最新文章

  1. JavaScript自动评论,记下你看博客的时间
  2. PNAS:亚马逊雨林向农业的转变导致土壤细菌群落的生物均质化
  3. vue 内打开一个新窗口,带传参!
  4. activiti框架 数据库设计说明书
  5. 新一代数据中心设计技术研讨会
  6. Day16:面向对象编程——类和对象
  7. windows系统自动化设置
  8. java7代码示例_Java中的七种排序方式代码示例
  9. mysql自增id获取失败
  10. Spring @Import
  11. 基于命令行编译打包phonegap for android应用
  12. Vue.js 学习笔记 一
  13. fastadmin中ajax传参
  14. word在另外计算机格式不对,为什么同一个word文档在两台电脑上打开里面的格式不一样...
  15. Zabbix安装错误解决方案
  16. ssm+Vue计算机毕业设计学科竞赛管理(程序+LW文档)
  17. python求所有参数的乘积_python 通过可变参数计算n个数的乘积方法
  18. Java 变态面试题
  19. Linux-启动和服务(service)
  20. 【Axure原型分享】工作计划日历

热门文章

  1. Unity 下载安装Standard Assets
  2. w10系统 怎么快捷搜索服务器,w10系统怎么远程连接服务器
  3. 程序员自编的中华古诗词数据库在GitHub上火了!
  4. 2串口两串口三串口多串口3串口转WiFi透传模块实现多通道与服务器透传
  5. numpy库的下载与应用
  6. RFC791:INTERNET PROTOCOL网络协议
  7. 【目标检测】VOC2007数据集介绍
  8. ubuntu窗口排列和分屏工具
  9. HOUDINI OPENCL 错误
  10. Android APP报价参考