今天我在Nexus 7上设置了新Android JB 4.3,我试图运行我的应用程序。
除了ImageViews与ScaleType.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的左上角,没有应用任何比例或平移,就像矩阵回归到身份一样。
答案 0 :(得分:5)
只需保留Matrix
字段,而不是从ImageView
检索它,您会很高兴:)
答案 1 :(得分:1)
从4.3开始,ImageView缩放可能存在错误。查看我的question and answer about this bug。