0

これについては他にも多くのスレッドがあることを知っています。過去2日間、役に立たずにそれらをチェックしてきましたが、今は気が狂っています. したがって、基本的にはスプライトシートを持っています。これをビットマップにロードし、フレームを切り取り、スケーリングを実行し、後でアニメーション用にリストにロードします。スケーリングは ldpi から xhdpi まで、アニメーションも同様です。

しかし、私を悩ませている別のことがあります。それは、さまざまなデバイスでの配置です。canvas.drawBitmap(bitmap, srcRect, destRect, paint) で描画します。ええと、コードは 1000 語以上を伝えると思います。

//converting dps to pixels
int xCoord = convertToPixels(100);
int yCoord = convertToPixels(150);

//defining destination rectangle; sprite is a Bitmap object
Rect destRect = new Rect(xCoord, yCoord, xCoord+sprite.getWidth(), yCoord+sprite.getHeight());

//drawing
canvas.drawBitmap(sprite, null, destRect, null);

convertToPixels(float dp) は、式 Math.round(dp*DENSITY) でピクセル数を返すだけです。

dps を指定した場合、すべてのデバイスの縦横比は同じでなければならないと考えています。より緻密な画面。しかし、うまくいかないので、私の論理には欠陥があると思います。さまざまなデバイスのさまざまな場所にスプライトを描画します。

要約すると、x 座標と y 座標で 100 dps の destRect を使用して Bitmap オブジェクトを描画すると、キャンバス サイズに関してすべてのデバイスで比率が維持されるか、このように考える必要があります。

比喩的な意味ではなく、文字通り道に迷っているので、この問題について助けていただけると幸いです。また、開発者サイトまたは同様のサイトの「Supporting Multiple Screens」トピックへのリンクを私に教えないでください。何度も読みましたが、理解していないようです。ありがとうございました!

4

1 に答える 1

0

dip to px の計算は正しいですか? これを行うために次のコードを書きました。

public class ViewHelper {
    public static int getPxFromDip(int dips){
        return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dips, Application.getContext().getResources().getDisplayMetrics());
    }
}

Application.getContext() はアプリケーション全体のコンテキストであるか、ローカルのアクティビティ コンテキストを提供します。

于 2012-07-09T21:56:34.840 に答える