Android 4.3 ImageView ScaleType.MATRIX

时间:2013-07-26 14:14:32

标签: android android-imageview android-4.3-jelly-bean

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

除了ImageViewsScaleType.MATRIX的一件小事之外,Everythings的工作方式应该如此。

基本上我在我的应用程序中有一个ImageView作为背景,相应于ViewPager回调,我移动图像的焦点部分,更新Matrix我给了imageView使用setImageMatix( Matrix matrix )

问题似乎是我不能再更新矩阵了,我只需要实例化一个新的矩阵将它传递给ImageView

我设法解决它每次新的Matrix实例化,但与旧版本相比,它看起来非常昂贵。

这是一个BUG吗? 有没有办法改变Matrix? (我已经尝试过invalidate() 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();
    }

WORKING

    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的左上角,没有应用任何比例或平移,就像矩阵回归到身份一样。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

从4.3开始,ImageView缩放可能存在错误。查看我的question and answer about this bug