android 放大镜功能,Android 做一个放大镜的效果(转)
自定义一个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 做一个放大镜的效果(转)相关推荐
- android 悬浮按钮 功能实现,怎么在Android中利用FloatingActionButton实现一个悬浮按钮效果...
怎么在Android中利用FloatingActionButton实现一个悬浮按钮效果 发布时间:2020-12-02 17:41:30 来源:亿速云 阅读:238 作者:Leah 今天就跟大家聊聊有 ...
- android 画笔压痕效果,【自制样机教程】如何用Ps做一个压痕效果的Logo样机
原标题:[自制样机教程]如何用Ps做一个压痕效果的Logo样机 上次教你们做的自制小糖袋的 贴图样机 不知道你们玩耍的咋样 今天再给你们介绍一个logo的样机 这次的教程主要用到了图层样式 来看看怎么 ...
- android远程打电话,Android打电话功能 Android实战教程第三篇之简单实现拨打电话功能...
想了解Android实战教程第三篇之简单实现拨打电话功能的相关内容吗,杨道龙在本文为您仔细讲解Android打电话功能的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android拨打电话 ...
- android progressdialog 背景色,怎么在android中利用ProgressDialog实现一个加载效果
怎么在android中利用ProgressDialog实现一个加载效果 发布时间:2020-12-07 17:00:07 来源:亿速云 阅读:77 作者:Leah 怎么在android中利用Progr ...
- video.min.js php,使用flv.js与video.js做一个视频直播效果
这次给大家带来使用flv.js与video.js做一个视频直播效果,使用flv.js与video.js做出视频直播效果的注意事项有哪些,下面就是实战案例,一起来看一下. 环境配置 首先运行livego ...
- vue项目下拉框内容过长做一个滚动条的效果
vue项目下拉框内容过长做一个滚动条的效果 如下图: 关键代码如下:
- 使用JSAPl来做一个倒计时的效果
今天的小案例需要做一个倒计时的效果 我们的时分秒需要一直进行倒计时,然后我们的页面颜色需要根据定时器的操作来进行更换,首先我们还是可以来分析一下我们的HTML步骤 <div class=&quo ...
- android 放大镜功能,Android实现放大镜效果的方法实例(附源码)
前言 应该有很多用过英语应用的同学都看多一个放大镜的效果,就是选中一段文字后,会有一个放大镜,这个究竟怎么实现的呢,我们今天来分析分析. 源码分析 public class ShaderView ex ...
- Android等待对话框(做一个带动态效果的对话框)
又到了动画总结的时间了,今天要总结的是一个对话框形式的动画效果,老样子gif图不太清晰,但是总体的效果是可以看的清楚的,一个动态的等待对话框,我只是简单的实现了一些动画,如果需要更复杂的需求,可以联系 ...
- android倒计时功能,android实现倒计时功能(开始、暂停、0秒结束)
本文实例为大家分享了android实现倒计时功能的具体代码,供大家参考,具体内容如下 [思路]:通过 timer 执行周期延时的任务,handler 中将计时信息更新,并在计时结束时结束 timer ...
最新文章
- JavaScript自动评论,记下你看博客的时间
- PNAS:亚马逊雨林向农业的转变导致土壤细菌群落的生物均质化
- vue 内打开一个新窗口,带传参!
- activiti框架 数据库设计说明书
- 新一代数据中心设计技术研讨会
- Day16:面向对象编程——类和对象
- windows系统自动化设置
- java7代码示例_Java中的七种排序方式代码示例
- mysql自增id获取失败
- Spring @Import
- 基于命令行编译打包phonegap for android应用
- Vue.js 学习笔记 一
- fastadmin中ajax传参
- word在另外计算机格式不对,为什么同一个word文档在两台电脑上打开里面的格式不一样...
- Zabbix安装错误解决方案
- ssm+Vue计算机毕业设计学科竞赛管理(程序+LW文档)
- python求所有参数的乘积_python 通过可变参数计算n个数的乘积方法
- Java 变态面试题
- Linux-启动和服务(service)
- 【Axure原型分享】工作计划日历