2

ある時点で画像を表示するアプリを開発しています。リソースには、さまざまな解像度のアプリケーションアイコンのバージョンがほとんどないことに気づきました。私は自分の画像をデータベースに保存しているので、画像のいくつかのバージョンを異なる解像度で保持する方が良いのではないかと思います。その理由は明らかです。アプリの速度、メモリ使用量、唯一の欠点は、データが多いためにアプリのサイズが大きくなることです。 。画像の取得は問題ではありません。どのバージョンの画像を取得するのか、どのように判断するのかがわかりません。または、画像サイズを大きくして、システムにサイズ変更を処理させて、デバイスにそれほど負荷をかけないようにすることもできますか?

もう1つは、画像をデータベースに保持することです。これらの画像をdbに保持する方が、diskspace / cpu / memory use / speedの方が効率的か、それとも名前だけを保持し、サイズに対応するdpiフォルダーに画像をリソースとして保持する方がよいのでしょうか。 ?

4

2 に答える 2

0

画像が多すぎない場合は、リソースフォルダで取得できる自動リソース読み込みを使用することを強くお勧めします。「画像が多すぎる」とは、本当にあなた次第です。個人的には、APKのサイズ制限(50MB)内にすべての画像を収めることができれば、そうすべきだと思います。

また、どのサイズの画像がどの画面サイズをターゲットにするべきかについても尋ねました。このためには、複数の画面サイズのサポートに関するドキュメントをよく読んでください。具体的には、サポートされている画面サイズの範囲のセクションで、ターゲットにできるピクセル密度に関するガイダンスを提供します。画面サイズをターゲットにしているのではなく、画面密度をターゲットにしていることに注意してください。

ご指摘のとおり、お持ちの最高解像度の画像をアップロードして、システムに処理させることもできます。これは可能ですが、低密度の画面で必要な場合よりもアプリの読み込みが少し遅くなります。

実装の詳細がわからないため、データベースの方法についてコメントすることはできませんが、インターネット経由で画像を取得する必要があるリモートデータベースの場合は、画像をに配置することを強くお勧めします。リソースファイル。これらのリソースのためにインターネットを経由するのは遅く、ユーザーの貴重な帯域幅を浪費します。

于 2013-01-26T16:00:58.327 に答える
0

最も簡単な方法は、高解像度の画像を1つ作成し、そこから縮小することです。AndroidのImageViewはあなたのためにそれを行うことができます。

一方、これはローエンドデバイスでパフォーマンスの問題を引き起こします。そのグループを目指している場合は、画像の事前にスケーリングされたバージョンを用意し、適切なものをレンダリングする必要があります。次のコードが役立つ場合があります。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
switch(metrics.densityDpi){
    case DisplayMetrics.DENSITY_LOW:
            break;
    case DisplayMetrics.DENSITY_MEDIUM:
            break;
    case DisplayMetrics.DENSITY_HIGH:
            break;
    case DisplayMetrics.DENSITY_XHIGH:
            break;
}

個人的には、データベースに画像を保持するのではなく、密度ごとにリソースを作成します。

于 2013-01-31T16:04:10.977 に答える