3

今日、Nexus 7 に新しいAndroid JB 4.3をセットアップし、アプリケーションを実行しようとしました。

ScaleType.MATRIXを使用したImageViewsに関する小さなことを除いて、すべてが正常に機能します。

基本的に、アプリケーションにあるのは背景としてのImageViewであり、それに応じてViewPagerコールバックに応じて、 setImageMatix( Matrix matrix )を使用して imageView に与えたMatrixを更新する画像のフォーカス部分を移動します。

問題は、マトリックスを更新できなくなったことにあるようです。新しいマトリックスをインスタンス化してImageViewに渡すだけです。

新しいマトリックスをインスタンス化するたびにそれを回避することができましたが、古いバージョンに比べてメモリが非常に高価なようです。

これはバグですか?マトリックスを更新する方法はありますか? (ちなみに、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 に答える