1

私はZXingバーコードスキャナーコードの1.6バージョンを使用しています。

Androidマーケットのこのアプリのバージョン(3.53)は、私のIncredibleで正常に動作しますが、自分でコンパイルするとViewFinderViewが正しく表示されません(3.5beta)。

ViewFinderViewのデフォルトのキャンバスサイズ(画面全体に表示される)は533x320ですが、実際の画面サイズは800x480であることがわかりました。

したがって、onDrawメソッドでは、ViewFinderViewはビューファインダーの長方形の画面座標を想定していますが、それらをonDrawのキャンバス座標に適用しています。その結果、ファインダーがx次元とy次元で描画されすぎて大きくなりすぎます。

では、ビューが取得するキャンバスの実際の寸法を決定するものは何でしょうか。私の場合、キャンバスは画面の座標と比較して3分の1に縮小されています。バージョン3.5betaと3.53の間でこれに影響を与える可能性のあるコードの違いを見つけることができません。

4

1 に答える 1

3

アプリケーションは、さまざまな密度の画面のサポートを宣言していないと思います。<supports-screens>AndroidManifest.xml で呼び出されるタグがあり、パラメーターがありますanyDensity。に設定するtrueと、アプリはさまざまな密度の画面を処理できると見なされますfalse

デフォルトでは、このパラメーターはtrue、アプリケーションが API レベル 4 以上を対象とする場合は に設定され、それ以外の場合は に設定されfalseます。これは、Android 1.6 アプリケーションが固定の画面サイズと密度用に作成される前に行われ、Android 1.6 以降ではこれが変更されたため、下位互換性を維持する必要があったためです。

あなたの場合、画面の密度は高く、これは係数 1.5 に相当します。したがって、高さ 800 px の画面に描画すると、通常の密度で 533 px の画面に描画するのと同じと見なされます。

Canvasを「実際の」サイズにしたい場合は、少なくとも4 以上anyDensityに設定する必要があります。trueminSdkVersion

于 2011-04-30T15:51:29.130 に答える