ImageView和onTouchListener实现,点击查看图片细节
这是来自疯狂android讲义上的例子,其实没啥意思。就是用监听器获取到手指的坐标,然后根据这个坐标开始绘制一个图片。(这里的绘制方式有些问题,所以凑合看看吧。)
首先,还是布局文件(两个ImageView)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:id="@+id/textView01_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Large Text"/> <ImageView
android:id="@+id/imageView01_id"
android:layout_width="match_parent"
android:layout_height="300dp"
android:src="@drawable/kale"
android:scaleType="fitXY"/> <ImageView
android:id="@+id/imageView02_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/kale"
android:scaleType="fitXY"/> </LinearLayout>
MainActivity.java
package com.kale.imageview02; import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.TextView; public class MainActivity extends Activity {
ImageView iV01,iV02;
TextView tV; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); viewInit();
} public void viewInit() {
iV01 = (ImageView)findViewById(R.id.imageView01_id);
iV02 = (ImageView)findViewById(R.id.imageView02_id);
tV = (TextView)findViewById(R.id.textView01_id); iV01.setOnTouchListener(new OnTouchListener() { @Override
public boolean onTouch(View arg0, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_MOVE) {
tV.setText("x坐標 = "+event.getX()+" y坐標 = "+event.getY()); }
if(event.getAction() == MotionEvent.ACTION_DOWN) {
//得到圖片01的bitmapDrawable對象
BitmapDrawable bitmapDrawable = (BitmapDrawable)iV01.getDrawable();
//獲取到位圖
Bitmap bitmap = bitmapDrawable.getBitmap();
//定義縮放比例
double scale = bitmap.getWidth()/320.0;
//定義繪製的開始坐標
int x = (int)(event.getX() * scale);
int y = (int)(event.getY() * scale); if(x + 120 > bitmap.getWidth()) {
x = bitmap.getWidth() - 120;
}
if(y + 120 >bitmap.getHeight()){
y = bitmap.getHeight() - 120;
}
//顯示圖片的指定區域
iV02.setImageBitmap(Bitmap.createBitmap(bitmap,x,y,120,120));
}
//如果設置為false,那麼移動坐標就不會顯示
return true;
}
});
}
}
ImageView和onTouchListener实现,点击查看图片细节的更多相关文章
- Vue 封装可向左向右查看图片列表的组件
<template> <div class="content-container"> <div class="content-contain ...
- 小程序wx.previewImage查看图片再次点击返回时重新加载页面问题
wx.previewImage预览图片这个过程到底发生了什么? 首先我们点击图片预览,附上查看图片代码: <image class="headImg" data-src=&q ...
- Android Camera开发系列(下)——自定义Camera实现拍照查看图片等功能
Android Camera开发系列(下)--自定义Camera实现拍照查看图片等功能 Android Camera开发系列(上)--Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片 上 ...
- android项目 之 记事本(13) ----- 查看图片及播放录音
本文是自己学习所做笔记,欢迎转载.但请注明出处:http://blog.csdn.net/jesson20121020 今天就来实现下查看图片及录音的功能,在编辑或者浏览记事时,点击图片.打开一个自己 ...
- android实现点击背景图片不同区域实现不同事件
有时候我们拿到一张背景图片,客户要求点击图片的不同区域去跳转或者实现不同的操作事件.我们首先要确认图片的点击区域,往往我们会在布局文件那里下手,但是这样不好做适配,所以我实现了以下方法,基本功能可以实 ...
- jquery点击放大图片
参考地址:https://blog.csdn.net/qq_42249896/article/details/86569636 一.应用场景:点击图片可以对图片进行放大显示. 二.实现代码: 说明:我 ...
- JS点击img图片放大再次点击缩小JS实现 简单实用Ctrl+C+V就可以用
业务需要,从后台获取的图片列表,用img标签展示,用户需要查看大图.记录下来以便学习和参考.示例图如下: 放大之前: 放大之后: 点击后放大(由于图片高度超出了页面,需要通过overflow:auto ...
- H5实现查看图片和删除图片的效果
在最近的项目中,H5需要实现查看图片和删除图片的效果,总结如下: 一.查看图片 查看图片使用weui的gallery.首先添加gallery的html,然后隐藏. <div class=&quo ...
- 【jQuery小实例】js 插件 查看图片
---本系列文章所用使用js均可在本博客文件中找到. 像淘宝一样,鼠标放在某一件商品上,展示大图信息,甚至查看图片的具体部位.给人超炫的效果,这种效果实现基于js文件和js插件.大致可以分为三步,添加 ...
随机推荐
- K8s中,tomcat的一部分jvm参数,如何通过env环境变量传递?
这两天解决的一个需求: 如果用户没有在deployment中设置env参数,则tomcat默认使用1G左右的内存: 如果用户在deployment中提供了jvm参数,则tomcat将这部分的参数,覆盖 ...
- Angular 2.0--1
Angular 2.0 从0到1 (五) 第一节:Angular 2.0 从0到1 (一)第二节:Angular 2.0 从0到1 (二)第三节:Angular 2.0 从0到1 (三)第四节:Ang ...
- 【BZOJ】4128: Matrix
题解 学习一下矩阵求逆 就是我们考虑这个矩阵 \(AA^{-1} = I\) 我们相当于让\(A\)乘上一个矩阵,变成\(I\) 我们可以利用初等行变换(只能应用初等行变换,或只应用初等列变换) 分三 ...
- Ubuntu 18.04 下配置 HAXM 加速 Android模拟器
Ubuntu 18.04 下配置 HAXM 加速 Android模拟器 最近在vmware环境下搭建ubuntu18.04开发环境,开始发现总是运行android模拟器在console提示加载如下错误 ...
- 002.SSH日常命令
一 远程登陆 ssh 用户名@远程主机ip:首次登陆需要下载对方公钥. 实例:ssh 192.168.10.129 二 远程复制 scp root@远程主机ip:[远程主机文件绝对路径] [需要保存的 ...
- 戏说 Spring MVC 框架
Spring MVC 是 Spring 框架的一部分,和 Struts 一样都是属于 web 层框架,根据项目分层的思想,一个项目基本可以分为持久层,业务层和 web 层.而 Spring MVC 主 ...
- SpringMVC(八) RequestMapping HiddenHttpMethodFilter
SpringMVC隐藏方法: 使用PUT和DELETE方法.默认HTML支持GET和POST方法.通过HiddenHttpMethodFilter将POST转成PUT和DELETE方法. 1.将Hid ...
- HDU 1402 A * B Problem Plus 快速傅里叶变换 FFT 多项式
http://acm.hdu.edu.cn/showproblem.php?pid=1402 快速傅里叶变换优化的高精度乘法. https://blog.csdn.net/ggn_2015/artic ...
- 编码自动识别工具 uchardet
本文转自网络 最近在给OpenCC做图形界面,遇到一个问题:OpenCC默认只能转换utf-8文本,其他编码像GB18030,BIG5只能转换成utf-8以后,才能用OpenCC转换.这个问题说大不大 ...
- spring cloud 学习(4) - hystrix 服务熔断处理
hystrix 是一个专用于服务熔断处理的开源项目,当依赖的服务方出现故障不可用时,hystrix有一个所谓的断路器,一但打开,就会直接拦截掉对故障服务的调用,从而防止故障进一步扩大(类似中电路中的跳 ...