public classGestureZoom extends Activity implements OnGestureListener
GestureDetector detector;
@Override
public void onCreate(Bundle savedInstanceState)
{
... ...
detector = new GestureDetector(this);
}
@Override
public boolean onTouchEvent(MotionEvent me)
{
return detector.onTouchEvent(me);
}
GestureDetectordetector;
ImageViewimageView;
Bitmap bitmap;//保存图片资源
int width,height;// 记录图片的宽、高
floatcurrentScale = 1;// 记录当前的缩放比
Matrix matrix;//控制图片缩放的Matrix对象
@Override
public voidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
detector = new GestureDetector(this);
imageView = (ImageView)findViewById(R.id.show);
matrix = new Matrix();
bitmap =BitmapFactory.decodeResource(this.getResources(), <你的图片资源>);//获取被缩放的源图片,因为不能对原有图片进行修改,所以必须转化为位图
width = bitmap.getWidth();
height = bitmap.getHeight();
imageView.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), <你的图片资源>));//设置ImageView初始化时显示的图片
}
@Override
publicboolean onFling(MotionEvent event1, MotionEvent event2
, float velocityX, float velocityY)
{
velocityX = velocityX > 4000 ? 4000 :velocityX;
velocityX = velocityX < -4000 ? -4000: velocityX;
//根据手势的速度来计算缩放比,如果velocityX>0,放大图像,否则缩小图像。
currentScale += currentScale * velocityX/ 4000.0f;
//保证currentScale不会等于0
currentScale = currentScale > 0.01 ?currentScale : 0.01f;
// 重置Matrix
matrix.reset();
// 缩放Matrix
matrix.setScale(currentScale,currentScale , 160 , 200);
BitmapDrawable tmp = (BitmapDrawable)imageView.getDrawable();
//如果图片还未回收,先强制回收该图片
if (!tmp.getBitmap().isRecycled())
{
tmp.getBitmap().recycle();
}
// 根据原始位图和Matrix创建新图片
Bitmap bitmap2 =Bitmap.createBitmap(bitmap
,0, 0, width, height, matrix, true);
// 显示新的位图
imageView.setImageBitmap(bitmap2);
return true;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有