2017-12-26 5 views
3

私はピカソとのサイズ変更についてかなり混乱しています。私が正しく理解すれば、ピクセルをresizeメソッドに渡さなければならないので、手動で異なるスクリーン密度をサポートするためにピクセルをdpから変換する必要があります。 しかし、resizeDimenメソッドは何をしますか? dpでディメンションを取るので、手動でこれらを変換する必要はありませんか? これはどのようにしてfitメソッドに関連していますか?ピカソのresizeDimen()メソッドはdpかピクセルかかりますか?

答えて

2
  • resizeDimenあなたはさらに、について説明が必要な場合は、私に教えてくださいreSizeDimen(R.dimen.header_logo_w, R.dimen.header_logo_h)と同じです。 Dimenリソースは<dimen name="logo_width">96dp</dimen>のようになり、次のように使用されます:R.dimen.logo_width Androidのコンテキストによって行われる画素に任意の寸法単位の変換:
  • resize方法の使用画素
  • fit方法は、ターゲット・サイズ(通常ImageViewの)

注に従ってソースのサイズを変更します(Picasso.with(context)の文脈)。ピカソソースコードのmethodと、Androidソースコードのmethodを見て、変換の仕組みを理解してください。

+0

それは私を混乱させるものです。なぜ 'resize'メソッドはpxではなくdpにサイズ変更するオプションを提供しませんが、' resizeDimen'メソッドはdpを指すリソースIDを取るのですか? –

+0

ピカソの標準的な単位はピクセルです(resizeメソッドで見ることができます)。しかし、resizeDimenメソッドでは、[すべての次元単位]からpxに値を変換するPicasoではなく、これがAndroidシステムです。 –

+0

これを正しく理解すれば、dpをピクセルに手動で変換するのを避け、代わりにdp res idを渡すことができますか? –

2

No. resizeDimenも正確な整数値を指定する必要はありませんが、代わりにリソースIDを渡すことができます。

のでresize(96,96)

res/values/dimens.xml 
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<dimen name="header_logo_h">96px</dimen> 
<dimen name="header_logo_w">96px</dimen> 
</resources> 

が使用DIMENリソース(地獄PXをDPません)

+0

ありがとうございます。だから私が 'fit()'を使わなければ、私はいつもdpを自分自身にpxに変換しなければならないのですか? –

+0

そして、私がdpで定義されたリソースIDを渡すとどうなりますか? –

+0

@FlorianWalther - Picassoのソースコードを調べると、resources.getDimensionPixelSize - > https://github.com/square/picassoを使用して、リソースファイルの整数値を常に等価なピクセルに変換することがわかります/blob/5ddd855c1e98379a1812c0ccccbdc200a30312cc/picasso/src/main/java/com/squareup/picasso/RequestCreator.java –

関連する問題