0

在 Android API 11 上有方法 View.getMatrix。但是没有适用于 android API 8 的方法。我怎样才能提供类似的功能?

        gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View v,
                    int position, long id) {
                geg = 90;

//              shift=v.getMatrix();
                current = (ImageView) v;
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }
        });

在galleryview中,我可以在屏幕上和屏幕后拖动图像,但是缩放后图像可能会出现在离屏幕很远的地方,因此您不知道将其拖回何处。所以我想制作按钮将其设置为原始位置。

4

1 回答 1

2

API 11 中的此方法在TransformationInfo mTransformationInfo;View 中获取一个字段:请参见此处。可悲的是,在API 8中,这不仅仅是 getter 不可用的问题,而且根本没有使用该字段。

所以没有实现的可能。

但是您可能无论如何都不想这样做:

  1. 你并不是真的要像这样使用 api。通过调用进行修改getMatrix()将绕过需要进行的大量调用。setPivotX(float pivotX) 例如,查看源代码。使用这些附件调用。他们是你的朋友!不要想-我有一个像这样的视图,我如何将逆变换应用于它以回到我原来的位置。想一想,在这个转换之后,我将在所有东西上设置一个单位矩阵,这样视图就不会被转换。那么你不需要做任何工作!
  2. 大多数 Android 视图都有自己的矩阵,这些矩阵连接到Canvas覆盖Draw调用中。所以试图抓住一些东西View对你没有帮助。例如,假设您想在ImageView. 好吧,getMatrix()View 根本不会告诉您有关该转换的任何信息。
  3. 你为什么要这样做?这里的背景是什么?您要重置动画吗?在这种情况下,您对布局属性感兴趣,而不是在画布上执行的转换!

一定要编辑您的问题以包含这些注意事项,然后找到更广泛的解决方案会很可爱。

于 2013-07-23T10:42:05.390 回答