当前位置: 首页 > 面试题库 >

查看分页器+ ImageView +捏缩放+旋转

从建明
2023-03-14
问题内容

我想在Viewview上实现类似于ImageView的Pinch Zoom,类似于默认的Android Gallery。我在GitHub上找到了多个源,但是缩放和滑动仅适用于第一张图片。

我试过的

1.)TouchImageView

2.)PhotoView

3.)Android Touch Gallery

以上所有链接都适用于单个图像视图。但是,当涉及View Pager中的图像时,它们会有一些故障,并且仅适用于View Pager中的第一个图像。当我们在视图寻呼机中滚动到第三张第四张图像时,如果缩放图像,则拖动功能将无法正常工作。

如果有人知道有什么好的图书馆可以这样做,请给我提供他们的链接。


问题答案:

编辑2:示例代码已被推送到TouchImageView的master分支。这里是示例活动的链接和ExtendedViewPager的链接。

编辑:添加了使示例链接适应TouchImageView的代码。注意:您将需要最新的代码,该代码当前位于dev分支中。将来,它将包含在v1.2.0中。您知道,如果TouchImageView覆盖canScrollHorizo​​ntally,则您拥有最新的代码。

第1步:扩展ViewPager并覆盖canScroll以调用canScrollHorizo​​ntallyFroyo。

public class ExtendedViewPager extends ViewPager {

public ExtendedViewPager(Context context) {
    super(context);
}

public ExtendedViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
    if (v instanceof TouchImageView) {
        return ((TouchImageView) v).canScrollHorizontallyFroyo(-dx);
    } else {
        return super.canScroll(v, checkV, dx, x, y);
    }
}

}

步骤2:通过添加canScrollHorizo​​ntallyFroyo来修改TouchImageView:

public boolean canScrollHorizontallyFroyo(int direction) {
    return canScrollHorizontally(direction);
}

步骤3:您的活动

public class TouchImageViewActivity extends Activity {

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ExtendedViewPager mViewPager = (ExtendedViewPager) findViewById(R.id.view_pager);
        setContentView(mViewPager);
        mViewPager.setAdapter(new TouchImageAdapter());
    }

    static class TouchImageAdapter extends PagerAdapter {

            private static int[] images = { R.drawable.img1, R.drawable.img2, R.drawable.img3 };

            @Override
            public int getCount() {
                    return images.length;
            }

            @Override
            public View instantiateItem(ViewGroup container, int position) {
                    TouchImageView img = new TouchImageView(container.getContext());
                    img.setImageResource(images[position]);
                    container.addView(img, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
                    return img;
            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                    container.removeView((View) object);
            }

            @Override
            public boolean isViewFromObject(View view, Object object) {
                    return view == object;
            }

    }
}

步骤4: main.xml

<com.example.touch.ExtendedViewPager 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

TouchImageView实际上是我的项目。我目前在dev分支中有一个与ViewPagers集成的修复程序,该修复程序将在以后的发行版中发布。不幸的是,此修复仅适用于API 14及更高版本,因为honeycomb和更早版本不调用。如果需要支持较旧的API,则需要在ViewPager中实现解决方法。这是一个例子。canScrollHorizontally



 类似资料:
  • 问题内容: 我希望有人可以帮助我。我试图允许用户捏UIImageView(允许最大和最小级别)上的缩放。但是由于某种原因,它无法正常工作。图像会稍微放大,然后反弹。谢谢。 这是变焦功能 问题答案: 我决定将imageView添加到UIScrollView中。它允许用户缩放和平移。这是我使用的代码。 为了设置最大/最小缩放,我使用了: 这是其余的代码。 我也必须添加它 Swift 3及以上功能原型

  • 我有一个应用程序,我需要实现图像编辑,其中也包括捏缩放。我已经完成了缩放,但是我只能在设备上测试,不能在模拟器上测试。 android模拟器中有没有测试捏放缩放的方法,有没有快捷键或者其他什么方法?

  • 我有一个ImageView,可以用鼠标拖放,点击按钮旋转90度。这两件事在独立完成时都可以工作(因此可以旋转或移动ImageView,而不是两者都可以)。当我旋转ImageView并尝试移动它时,它似乎是随机移动的。 我使用以下方法旋转图像视图: 这导致了我所说的看似随机的运动。 我还尝试使用以下方法旋转ImageView: 位置是图像在屏幕上的位置。宽度和高度是ImageView的宽度和高度。

  • 本文向大家介绍手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现,包括了手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现的使用技巧和注意事项,需要的朋友参考一下 PhotoSwipe 是专为移动触摸设备设计的相册/画廊.兼容所有iPhone、iPad、黑莓6+,以及桌面浏览器.底层实现基于HTML/CSS/JavaScript,是一款免费开源的相册产品。 为谁而用 让移动站点

  • 我有一个被JScrollPane包围的JPanel。该JPanel用于显示图像。我需要提供zoomIn、zoomOut、顺时针旋转和逆时针旋转等功能。所有这些功能单独运行良好。对于缩放,我称之为图形对象的缩放。它发生在从左上到右下的基础上。对于旋转,我重置比例,然后平移、旋转 因此,问题是当面板坐标更改时,图像的坐标不会改变。有人可以帮助我更改图像的坐标吗?

  • 选择要变换的文字 您可以像对其他对象一样,对文字进行旋转、镜像、比例缩放和倾斜。但是,您选择文字的方式会影响变换结果: 要变换文字及其边框路径,请选择文字对象,然后使用旋转工具旋转对象和文本。 要只变换边框路径(而不变换它所包含的文字),请使用选择工具选择文字对象并进行拖移。 旋转文字路径(左图)与旋转文字和路径(右图)的对比图 另请参阅 第 197 页的 “变换对象 ” 调整文字缩放比例 您可以