2016-11-26 3 views
0

Мне нужен ImageView, который можно коснуться увеличения и уменьшения масштаба. Каждый раз, когда я касаюсь ImageView, мне нужно знать позицию касания исходного изображения. Например, разрешение изображения составляет 1280 * 720, даже изображение в ImageView увеличено, я до сих пор точно знаю положение касания изображения (не касаясь позиции ImageView)Любой андроид с открытым исходным кодом ImageView?

Спасибо.

ответ

0

Наконец , Я использовал этот открытый исходный код https://github.com/sephiroth74/ImageViewZoom

Я изменил код, но в этом с открытым исходным кодом все еще есть много ошибок Я исправил несколько из них.

Следующая функция была добавлена ​​в класс ImageViewTouch.GestureListener, который используется для передачи сенсорной точки (на экране) в точку реального изображения (независимо от того, как изображение приближается/уменьшаться).

private PointF calculatePositionInSourceImage(PointF touchPointF) { 
     //point relative to imageRect 
     PointF touchPointRelativeToImageRect = new PointF(); 
     RectF imageRect = getBitmapRect(); 
     touchPointRelativeToImageRect.set(touchPointF.x - imageRect.left, 
       touchPointF.y - imageRect.top); 

     //real image resolution 
     int imageWidth = getDrawable().getIntrinsicWidth(); 
     int imageHeight = getDrawable().getIntrinsicHeight(); 

     //touch point in image 
     PointF touchPointRelativeToImage = new PointF(); 
     touchPointRelativeToImage.set(touchPointRelativeToImageRect.x/imageRect.width() * imageWidth, 
       touchPointRelativeToImageRect.y/imageRect.height() * imageHeight); 

     if(touchPointRelativeToImage.x < 0 || touchPointRelativeToImage.y < 0) 
      touchPointRelativeToImage.set(0,0); 

     return touchPointRelativeToImage; 
    } 
0

Почему бы вам не пропустить все это и использовать существующую библиотеку?

Попробуйте это: PhotoView отлично работает для меня на API 23, всего несколько строк кода вы сможете увеличивать/уменьшать и панорамировать

compile 'com.github.chrisbanes:PhotoView:1.3.0' 

repositories { 
    ... 
    maven { url "https://jitpack.io" } 
} 

Пример

ImageView mImageView; 
PhotoViewAttacher mAttacher; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

// Any implementation of ImageView can be used! 
mImageView = (ImageView) findViewById(R.id.iv_photo); 

// Set the Drawable displayed 
Drawable bitmap = getResources().getDrawable(R.drawable.wallpaper); 
mImageView.setImageDrawable(bitmap); 

// Attach a PhotoViewAttacher, which takes care of all of the zooming functionality. 
// (not needed unless you are going to change the drawable later) 
mAttacher = new PhotoViewAttacher(mImageView); 
} 

// If you later call mImageView.setImageDrawable/setImageBitmap/setImageResource/etc then you just need to call 
mAttacher.update(); 
+0

Кажется хорошим, могу ли я получить положение касания изображения в ImageView/PhotoView? – xhsoldier

+0

PhotoView позаботится о масштабировании, если вы дважды коснетесь изображения, будет увеличивать эту позицию, если вам нужно знать позицию, я думаю, вы можете получить эти значения из библиотеки, но вам нужно будет изменить пару вещей –