2013-08-02 2 views
6

Bitmap.createBitmap(int width、int height、Bitmap.Config config)メソッドは単に高さと幅を指定します。これらが実際のピクセルかdpピクセルかはわかりません。ビットマップを作成するときに幅と高さに密度に依存しないピクセルを使用する

私の質問:

1)は、画素DPこれらの値はありますか? 2.)そうでない場合は、高さと幅のパラメータとしてdpピクセルを使用する方法はありますか?

ありがとうございます。

答えて

10

ピクセルを使用します(通常、dpピクセルではありません)。通常のピクセルにDPであなたのパラメータを変換するには、次のメソッドを使用します。

public static float dipToPixels(Context context, float dipValue) { 
    DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, metrics); 
} 

クレジット:Convert dip to px in Android

+0

申し訳ありませんが、これは受け入れられた答えであることができる方法を理解することはできませんまた、 "使用、ピクセル、...ピクセルに変換"と述べる6回upvoted –

+0

申し訳ありません、再読した後、私は今理解しています...編集を投稿しました –

3

値は、ピクセル(定期的ではなく、DP)です。ピクセルサイズを受け入れるすべての関数では、サイズは通常は通常のピクセルサイズであることに言及する価値があります。これは、ビューの幅と高さ、位置、描画可能なサイズなどに当てはまります。

dpを提供したい場合は、dpからピクセルへの変換関数がたくさんあります。これは非常に単純な式です。

ビットマップデコード処理中にビットマップをデコードして密度を変更する場合は、BitmapFactory.decodeXYZを参照して、密度関連フィールドのBitmapFactory.Optionsをよく見てください。同じソースビットマップ(ウェブからダウンロードされたビットマップなど)が異なる密度のデバイスで異なるピクセルサイズになるようにする場合は、これは便利です。

+0

これは受け入れられた回答です。はるかに明確ですIMO –

6

Bitmapを作成するには、幅と高さをXMLファイルで定義します。 XMLファイル内の

  • は、XML値ファイルを作成し、あなたが(drawing_dimensions.xmlを)好きな名前を付け
  • これは私がやったことある

    drawing_dimensions.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
        <dimen name="bitmapWidth">160dp</dimen> 
        <dimen name="bitmapHeight">128dp</dimen> 
    </resources> 
    

    これは任意のユニットに変更できます次に、あなただけの活動でこれへの参照を作成する必要が

  • を使用します

    DrawingActivity.java

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    
        //onCreate..... 
    
    
    // referencing to the dimension resource XML just created 
    int bitmapWidth = getResources().getDimension(R.dimen.bitmapWidth); 
    int bitmapHeight = getResources().getDimension(R.dimen.bitmapHeight); 
    
    Bitmap myBitmap = Bitmap.createScaledBitmap(
         getResources().getDrawable(R.drawable.my_image), bitmapWidth, 
         bitmapHeight, true); 
    

を、私は、このことができますコーディング幸せを願って!

+0

これは動作しません。 Bitmap.createScaledBitmap()は、Drawableではなく、最初の引数としてBitmapをとります。 –

関連する問題