缩放图片的ImageView 可以进行两指缩放,并且可以进行拖拉的ImageView最简单原生的实现
2014-05-15 15:05
411 查看
今天小试了下所谓的图片察看器,可以对图片进行放大缩小和拖动。这样看上去就可以更好的查看图片了
今天自己写了个小例子,实现了基本功能,可谓最简单的实现方法,大家可以参考,可以对下面这个类进行二次修改达到自己的目的
,以下就是ScaleImageView:
使用方法:
1.代码中直接实例化
ScaleImageView image = new ScaleImageView(NewsDetailActivity.this);
2.在XML布局中直接使用
<your_package.ScaleImageView
android:id="@+id/iv_public_weather"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
效果图如下:
今天自己写了个小例子,实现了基本功能,可谓最简单的实现方法,大家可以参考,可以对下面这个类进行二次修改达到自己的目的
,以下就是ScaleImageView:
package com.spider.zjd.view; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; /** * 可以进行两指缩放,并且可以进行拖拉的ImageView最简单原生的实现 * @author Seal * Created on 2014年5月15日 下午2:08:49 * @note */ public class ScaleImageView extends ImageView { private float lastX, lastY;// 上一次记录的点 private float lastDistance;//上一次两点间的距离 public ScaleImageView(Context context, AttributeSet attrs) { super(context, attrs); } public ScaleImageView(Context context) { super(context); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: lastX = event.getX(); lastY = event.getY(); break; case MotionEvent.ACTION_MOVE: if (event.getPointerCount() == 2) {//两点触摸 final float disX = Math.abs(event.getX(0) - event.getX(1));//第一个点的偏移量 final float disY = Math.abs(event.getY(0) - event.getY(1));//第二个点的偏移量 final float dis = (float) Math.sqrt(disX * disX + disY * disY);//记录两点间的距离 if (lastDistance == 0) { lastDistance = dis;//记录第一次 } else { float scale = dis / lastDistance; lastDistance = dis;//替换上一次 scaleImage(scale); } } else if (event.getPointerCount() == 1) {//单点触摸 final float currentX = event.getX(); final float currentY = event.getY(); final float disX = currentX - lastX; final float disY = currentY - lastY; scrollBy(-(int) disX, -(int) disY);//进行拖动视图 lastX = currentX;//替换上一次位置 lastY = currentY; } break; case MotionEvent.ACTION_UP: lastX = 0;//恢复初始化状态 lastY = 0; lastDistance = 0; break; default: break; } super.onTouchEvent(event); return true; } /** * 进行缩放 * @param scale */ private void scaleImage(float scale) { final int width = getWidth(); final int newWidth = (int) (width * scale); final int height = getHeight(); final int newHeight = (int) (height * scale); LayoutParams params = getLayoutParams(); params.height = newHeight; params.width = newWidth; setLayoutParams(params); } }
使用方法:
1.代码中直接实例化
ScaleImageView image = new ScaleImageView(NewsDetailActivity.this);
2.在XML布局中直接使用
<your_package.ScaleImageView
android:id="@+id/iv_public_weather"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
效果图如下:
相关文章推荐
- 如何实现Imageview图片进行缩放
- Android之UI学习篇六:ImageView实现图片旋转和缩放
- 自定义类继承ImageView 实现多点图片触碰的拖动和缩放
- android学习记录(二)-----imageView实现图片的旋转和缩放
- ImageView实现图片旋转和缩放
- viewpager嵌套开源组件gesture-imageview实现图片浏览和缩放
- ImageView 实现从手机相册中获取照片,并可以进行裁剪或者适屏展示
- Android之UI学习篇六:ImageView实现图片旋转和缩放
- 安卓控件使用系列16:ImageView实现图片缩放和旋转
- Android自定义ImageView实现图片缩放滑动,双击放大缩小,多点触控缩放
- Android UI之ImageView实现图片旋转和缩放
- android ImageView 视屏幕情况 使图片在限定范围内进行缩放显示
- android imageview 多点触碰(MultiTouch)实现图片拖拽移动缩放
- 自定义一个简单的可以加载网络图片的ImageView
- Android-图片预览(自定义ImageView实现图片缩放,多点触控,自由移动)
- ImageView 实现简单 图片切换展示
- android 自定义ImageView实现图片手势滑动、多点触摸缩放
- ImageView实现图片旋转和缩放功能
- android 自定义ImageView实现图片缩放边界回弹和缩小回弹
- android imageview 多点触碰(MultiTouch)实现图片拖拽移动缩放