如何实现对Android的图像视图缩放效果?如何实现对Android的图像视图缩放效果?(How t

2019-05-13 10:19发布

我要实现图像的放大,我已经有这么多codes.But尝试我没有得到手势事件的完整想法。 我想实现当我们运用双击,图像将放大根据触摸的地方(事件x和y)。我只落实在这个时候没有任何pan.Can体建议我缩放?

编辑:其实我已经实现与图像viewflipper,如果我尝试应用平移和缩放效果,有时图像将被改变。 我希望实现用户点击其中的变焦效果

给我的一些想法....

Answer 1:

懒惰的人可以使用这个lib中 ,只要你的项目中导入

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.
    mAttacher = new PhotoViewAttacher(mImageView);
}


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


Answer 2:

这是最有效的方式之一,工程进展顺利:

https://github.com/MikeOrtiz/TouchImageView

TouchImageView.java在您的项目。 然后,它可以使用相同ImageView

例:

TouchImageView img = (TouchImageView) findViewById(R.id.img);

如果您使用的TouchImageView在XML中,则必须提供完整的包名称,因为它是一个自定义视图。

例:

    <com.example.touch.TouchImageView
            android:id="@+id/img”
            android:layout_width="match_parent"
            android:layout_height="match_parent" />


Answer 3:

下面是关于如何实现变焦与ImageView的触摸影响一个很好的例子

缩放上ImageView的影响

编辑:

另外这里是另一个伟大的一个。

捏缩放教程



Answer 4:

很简单的方法(测试): -

PhotoViewAttacher pAttacher;
pAttacher = new PhotoViewAttacher(Your_Image_View);
pAttacher.update();

加入波纹线的build.gradle: -

compile 'com.commit451:PhotoView:1.2.4'


Answer 5:

我希望你做well.it往往与一切发生时,他们要在你的应用程序添加新的功能,那么通常它们都在寻找这不是很好的战术,因为客人不愿意知道的是在libabry什么样的代码库。 所以我总是喜欢叉库,并添加我的应用程序代码中的有用的类和方法。

所以当我坚持了同样的问题,我做很多很多R&d的话,我觉得一个类这给能力zoomIn,缩小(ZoomOut)和PININ进出。 所以你可以看到这个类在这里。 。

所以我曾告诉过,它是一个单独的类。 所以你可以把这个类中的任何地方你的项目,如utils的文件夹中 。而下面放线到您的XML文件,如:

<your_packege_name.TouchImageView
        android:id="@+id/frag_imageview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitCenter"
        android:src="@drawable/default_flag"
        android:transitionName="@string/transition_name_phone" /> 

你可以发现,图像查看您的尊敬的活动,像你一样像所有的观点 - :

TouchImageView tv=(TouchImageView)findViewById(R.id.frag_imageview); 
tv.setImageResource(R.drawable.ic_play);

这就是它TouchImageView 。 享受我们的代码:)



Answer 6:

这其实是有史以来的图像缩放和平移在Android上最好的例子,

http://blog.sephiroth.it/2011/04/04/imageview-zoom-and-scroll/



Answer 7:

您可以检查答案在一个相关的问题。 https://stackoverflow.com/a/16894324/1465756

只需导入库https://github.com/jasonpolites/gesture-imageview 。

到你的项目,并添加你的布局文件如下:

<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:gesture-image="http://schemas.polites.com/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">

<com.polites.android.GestureImageView
   android:id="@+id/image"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:src="@drawable/image"
   gesture-image:min-scale="0.1"
   gesture-image:max-scale="10.0"
   gesture-image:strict="false"/>`


Answer 8:

余者优先库davemorrissey /子采样尺度图像视图 chrisbanes / PhotoView中 (star18bit的回答)

  • 两者都是活跃的项目(包括有一些在提交2015年)
  • 两人都在Play商店中演示
  • 子采样尺度图像视图支持放大图(上面1080)无记忆例外由于子采样, 其中PhotoView中不支持
  • 二次抽样规模的图像视图似乎有更大的API和更好的文档

请参阅如何AAR转换成JAR ,如果你喜欢用二次抽样规模的图像视图使用Eclipse / ADT



Answer 9:

下面是代码ImageFullViewActivity

 public class ImageFullViewActivity extends AppCompatActivity {

        private ScaleGestureDetector mScaleGestureDetector;
        private float mScaleFactor = 1.0f;
        private ImageView mImageView;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.image_fullview);

            mImageView = (ImageView) findViewById(R.id.imageView);
            mScaleGestureDetector = new ScaleGestureDetector(this, new ScaleListener());

        }

        @Override
        public boolean onTouchEvent(MotionEvent motionEvent) {
            mScaleGestureDetector.onTouchEvent(motionEvent);
            return true;
        }

        private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
            @Override
            public boolean onScale(ScaleGestureDetector scaleGestureDetector) {
                mScaleFactor *= scaleGestureDetector.getScaleFactor();
                mScaleFactor = Math.max(0.1f,
                        Math.min(mScaleFactor, 10.0f));
                mImageView.setScaleX(mScaleFactor);
                mImageView.setScaleY(mScaleFactor);
                return true;
            }
        }
    }


文章来源: How to implement zoom effect for image view in android?