3

今天我在我的 Nexus 7 上设置了新的Android JB 4.3,并尝试运行我的应用程序。

除了带有ScaleType.MATRIX的ImageViews的一件小事之外,一切都像它应该的那样工作。

基本上,我在我的应用程序中拥有一个ImageView作为背景,并且根据ViewPager回调,我移动了图像的焦点部分,更新了我使用setImageMatix(Matrix matrix)提供给 imageView 的矩阵。

问题似乎是我无法再更新矩阵了,我只需要实例化一个新矩阵并将其传递给ImageView

我设法解决它每次实例化一个新的矩阵,但与旧版本相比,它的内存似乎非常昂贵。

这是一个BUG吗?有没有办法更新矩阵?(顺便说一下,我已经尝试使ImageView ecc无效() 。)

不工作

    private void updateMatrix( final int page, final double offset ) {          
        double pagePosition = page + offset;

        Matrix matrix = imageView.getImageMatrix();
        matrix.setScale( scale, scale );
        matrix.postTranslate( - (float) ( pagePosition * pageWidth ) , 0 );

        imageView.setImageMatrix( matrix );

        imageView.invalidate();
    }

在职的

    private void updateMatrix( final int page, final double offset ) {          
        double pagePosition = page + offset;

        Matrix matrix = new Matrix();
        matrix.setScale( scale, scale );
        matrix.postTranslate( - (float) ( pagePosition * pageWidth ) , 0 );

        imageView.setImageMatrix( matrix );

        imageView.invalidate();
    }

编辑:

在第一种情况下,图像显示在 ImageView 的左上角,没有应用任何缩放或平移,就像矩阵恢复身份一样。

4

2 回答 2

5

只需保留您的Matrixas 字段而不是从中检索它ImageView,您就会很高兴:)

于 2013-07-26T15:04:33.897 回答
1

从 4.3 开始,ImageView 缩放可能存在错误。请参阅我关于此错误的问题和答案

于 2013-12-09T18:28:13.473 回答