Android缩放和旋转 ImageView

标签 android rotation imageview zooming scale

任何人都可以告诉我 ImageView 的示例,它可以在捏合时同时提供缩放和旋转功能。

我找不到它。

最佳答案

检查 photoview Chris Banes 的图书馆。

用法:

here is a sample provided which shows how to use the library in a more advanced way, but for completeness, here is all that is required to get PhotoView working:

<com.github.chrisbanes.photoview.PhotoView
    android:id="@+id/photo_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
PhotoView photoView = (PhotoView) findViewById(R.id.photo_view);
photoView.setImageResource(R.drawable.image);

That's it!

提供了多种方法,例如用于旋转的 photo.setRotationBy(10); 和用于缩放的 mPhotoView.setScaleType(ImageView.ScaleType.CENTER);。示例中的更多示例包括:

        public boolean onMenuItemClick(MenuItem item) { // Line 71
            switch (item.getItemId()) {
                case R.id.menu_zoom_toggle:
                    mPhotoView.setZoomable(!mPhotoView.isZoomable());
                    item.setTitle(mPhotoView.isZoomable() ? R.string.menu_zoom_disable : R.string.menu_zoom_enable);
                    return true;

                case R.id.menu_scale_fit_center:
                    mPhotoView.setScaleType(ImageView.ScaleType.CENTER);
                    return true;

                case R.id.menu_scale_fit_start:
                    mPhotoView.setScaleType(ImageView.ScaleType.FIT_START);
                    return true;

                case R.id.menu_scale_fit_end:
                    mPhotoView.setScaleType(ImageView.ScaleType.FIT_END);
                    return true;

                case R.id.menu_scale_fit_xy:
                    mPhotoView.setScaleType(ImageView.ScaleType.FIT_XY);
                    return true;

                case R.id.menu_scale_scale_center:
                    mPhotoView.setScaleType(ImageView.ScaleType.CENTER);
                    return true;

                case R.id.menu_scale_scale_center_crop:
                    mPhotoView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                    return true;

                case R.id.menu_scale_scale_center_inside:
                    mPhotoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                    return true;

                case R.id.menu_scale_random_animate:
                case R.id.menu_scale_random:
                    Random r = new Random();

                    float minScale = mPhotoView.getMinimumScale();
                    float maxScale = mPhotoView.getMaximumScale();
                    float randomScale = minScale + (r.nextFloat() * (maxScale - minScale));
                    mPhotoView.setScale(randomScale, item.getItemId() == R.id.menu_scale_random_animate);

                    showToast(String.format(SCALE_TOAST_STRING, randomScale));

                    return true;
                case R.id.menu_matrix_restore:
                    if (mCurrentDisplayMatrix == null)
                        showToast("You need to capture display matrix first");
                    else
                        mPhotoView.setDisplayMatrix(mCurrentDisplayMatrix);
                    return true;
                case R.id.menu_matrix_capture:
                    mCurrentDisplayMatrix = new Matrix();
                    mPhotoView.getDisplayMatrix(mCurrentDisplayMatrix);
                    return true;
            }
            return false;
        }
    });

        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_rotate_10_right:
                    photo.setRotationBy(10);
                    return true;
                case R.id.action_rotate_10_left:
                    photo.setRotationBy(-10);
                    return true;
                case R.id.action_toggle_automatic_rotation:
                    toggleRotation();
                    return true;
                case R.id.action_reset_to_0:
                    photo.setRotationTo(0);
                    return true;
                case R.id.action_reset_to_90:
                    photo.setRotationTo(90);
                    return true;
                case R.id.action_reset_to_180:
                    photo.setRotationTo(180);
                    return true;
                case R.id.action_reset_to_270:
                    photo.setRotationTo(270);
                    return true;
            }
            return false;
        }

你可以看到所有的样本here .

关于Android缩放和旋转 ImageView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15740155/

相关文章:

iphone - ViewController 在 iOS6 上不旋转

java - 试图显示从相机 Intent 中拍摄的图像

android - 在下面的类中实现带屏幕限制的 Imageview 旋转

android - 如何在 Android 中向 WebServer 发送数据?

java - 从 Socket.IO 获取和保存 JSON 数组

android - Android 中的中心对齐

c++ - 在 Ogre 图形中使用 setAutoTracking()

android - 将值从 Sensor.TYPE ORIENTATION 转换为欧拉角?

android - 在 recyclerview 适配器 android 中选择适配器中的项目

java - ImageView 位置错误