直接上代码。
<RelativeLayout 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" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="Button" />
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/button1"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/campus_map" />
</ScrollView>
</HorizontalScrollView>
</RelativeLayout>
在imageview外层加上ScrollView和HorizontalScrollView主要是为了图片在放大的时候使用,
package com.example.test;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ScrollView;
public class MainActivity extends Activity {
private Button b;
private ImageView imageView;
private Matrix mMatrix;
private Bitmap bmp;
private float scaleWidth=1;
private float scaleHeight=1;
private int i = 0;
private ScrollView scrollView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) this.findViewById(R.id.button1);
mMatrix = new Matrix();
imageView = (ImageView) findViewById(R.id.imageView1);
bmp = ((BitmapDrawable) getResources().getDrawable(
R.drawable.campus_map)).getBitmap();
scrollView = (ScrollView) this.findViewById(R.id.scrollView1);
// button是放大作用,图片每次放大1.25倍。
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// mMatrix.setRotate(90);
// mMatrix.setScale(100f/bmp.getWidth(), 100f/bmp.getHeight());
// Bitmap bm = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(),
// bmp.getHeight(), mMatrix, true);
// imageView.setImageBitmap(bm);
//
double scale=1.25;
/* 计算这次要放大的比例 */
scaleWidth=(float)(scaleWidth*scale);
scaleHeight=(float)(scaleHeight*scale);
/* 产生reSize后的Bitmap对象 */
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),
bmp.getHeight(),matrix,true);
imageView.setImageBitmap(resizeBmp);
//
}
});
// 获取imageview点击处的位置。
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
System.out.println("当前获取位置:"+event.getX()+" "+event.getY());
return false;
}
});
// Random r = new Random();
// mMatrix.setRotate(90);
// mMatrix.setScale(100f/bmp.getWidth(), 100f/bmp.getHeight());
// mMatrix.postSkew(0.3f, 0.7f);
mMatrix.setTranslate(bmp.getWidth(), bmp.getHeight());
Bitmap bm = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(),
bmp.getHeight(), mMatrix, true);
imageView.setImageBitmap(bm);
System.out.println("pppp");
/*mMatrix.setRotate(90);
mMatrix.setScale(100f/bmp.getWidth(), 100f/bmp.getHeight());
Bitmap bm = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(),
bmp.getHeight(), mMatrix, true);
imageView.setImageBitmap(bm); */
}
// 使用activity的onTouch方法是无效的,只能使用dispatchTouchEvent
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
if(ev.getAction()==MotionEvent.ACTION_DOWN){
System.out.println("imageview屏幕大小:"+imageView.getWidth()+" "+imageView.getHeight());
//
// System.out.println(imageView.getHorizontalFadingEdgeLength());
// System.out.println(imageView.getVerticalFadingEdgeLength());
}
return super.dispatchTouchEvent(ev);
}
}
地图
- 大小: 222.8 KB
分享到:
相关推荐
总结起来,实现Android手势放大缩小图片并可拖动的关键在于正确使用GestureDetector和ScaleGestureDetector,以及在监听器中适当地调整ImageView的属性。通过这种方式,用户可以通过简单的手势来直观地控制图片的...
在Android开发中,实现图片随手势放大缩小的功能是一项常见的需求,尤其在开发图像查看器或者照片浏览应用时。这个功能让用户体验更加流畅自然,能够自由地探索图片的细节。以下将详细讲解如何实现这一功能。 首先...
- **MODE_ZOOM**:缩放模式,用于放大或缩小图片。 - **MODE_UNABLE**:禁用模式,通常用于初始化状态。 ### 三、手势识别与响应 #### 3.1 触摸事件监听 在`MatrixTouchListener`中重写了`onTouch`方法来响应各种...
在Android开发中,图片的放大和缩小...总的来说,Android图片放大缩小和多触屏的支持涉及到触摸事件处理、Matrix变换以及手势识别等多个知识点。通过理解这些概念并结合实际代码,可以创建出功能完善的图像查看组件。
总的来说,实现Android两点触摸放大缩小图片的功能,需要理解触摸事件的处理机制,掌握ScaleGestureDetector的使用,以及适时调整图片的显示状态。通过自定义View,我们可以灵活地控制这一过程,实现丰富的手势交互...
在Android开发中,实现图片的放大缩小功能是常见的需求,特别是在设计相册或者查看图片的应用中。本Demo主要展示了如何在Android环境中实现这样的功能,既支持网络图片的加载,也支持本地图片的显示,并允许用户进行...
在Android开发中,图片双击放大缩小是一种常见的交互方式,为用户提供更好的查看体验。这个开源项目 "ImageViewZoom-master" 正是提供了这样的功能,让用户在查看图片时可以通过双击手势来实现图片的缩放操作。下面...
`android 实现图片放大缩小`的主题,意味着我们需要探讨如何在应用中实现对图片的缩放和平移功能,这通常涉及自定义ImageView子类来扩展其默认行为。在这个场景中,`DragImageView`就是我们自定义的组件,用于实现这...
在Android开发中,实现图片随手势放大缩小的功能是一项常见的需求,尤其在查看照片、阅读电子书或使用图像编辑应用时。这项技术的核心是利用Android提供的触摸事件处理机制和矩阵操作来改变图片的缩放比例。以下将...
在Android开发中,显示网络图片并实现其放大缩小以及单点移动和多点触摸功能是一项常见的需求。这通常涉及到网络编程、图片加载库的使用、手势识别和图像处理等多个技术领域。以下是对这些知识点的详细解释: 1. **...
本篇文章将详细讲解如何使用ArcGIS for Android实现地图的定位以及放大缩小功能。 首先,我们需要理解ArcGIS for Android的基本架构。ArcGIS的核心组件包括Map、MapView和LocationDisplay。Map是地图内容的容器,...
地图的放大和缩小功能,通常通过改变地图图片的scaleX和scaleY属性来实现。当用户进行双指捏合手势时,计算两个手指之间的距离变化,根据变化量调整地图的缩放级别。拖动地图则需要记录首次触摸的坐标,然后在后续的...
通过以上步骤,我们就可以创建一个支持多点触控缩放的`MyZoomView`,允许用户自由地放大缩小图片,提供良好的交互体验。在开发过程中,注意处理各种边界条件,如防止图片过度放大导致失真,以及在多点触控时保持图像...
查看源码,研究其中的onDraw()方法和如何处理触摸事件,是学习和理解Android Canvas放大、缩小和平移的很好途径。 总的来说,Android的Canvas和Matrix类为开发者提供了强大的图形绘制能力,通过熟练掌握它们,你...
在Android开发中,图片的放大缩小功能是移动应用中常见的需求,尤其在图像查看器、照片编辑器等应用中更是必不可少。本节我们将详细探讨如何实现这个功能,主要涉及的知识点包括手势检测、图片矩阵变换以及视图更新...
以上就是实现Android图片浏览、放大缩小和平移的核心技术点。在实际开发中,还需要注意性能优化,比如使用异步加载图片、处理内存泄漏等,以提供流畅的用户体验。在项目`MyApplication`中,你可以找到具体的代码实现...
在这个"Android项目控件以及双指放大缩小图片、单指拖动图片"的资料中,我们可以学习到如何在Android应用中优雅地处理这些功能。 首先,我们要了解Android中的手势识别。Android提供了GestureDetector和...
这个例子就是关于如何在Android应用中实现实时的多点触控手势识别,以便用户可以通过两个手指的捏合动作来放大或缩小图片。这种技术常用于查看照片的应用或者任何需要用户进行缩放操作的界面。 首先,我们要了解...
2. **图片放大缩小**: 使用`ScaleGestureDetector`,我们需要创建一个`OnScaleGestureListener`实例,并重写其`onScale()`方法。在这个方法里,我们可以获取到缩放的因子(scaleFactor),根据这个因子动态调整...
当我们想要在GridView中实现每个Item(单元格)的放大缩小效果时,通常涉及到自定义Adapter、处理点击事件以及调整视图大小等多个技术环节。下面将详细阐述如何实现这个功能。 首先,了解GridView的基本使用。...