2017-12-26 20 views
3

나는 Picasso로 크기를 재조정하는 것에 대해 매우 혼란 스럽다. 정확하게 이해한다면 픽셀을 resize 메서드로 전달해야하므로 수동으로 dp에서 다른 화면 밀도를 지원하도록 변환해야합니다. 그러나 resizeDimen 메소드의 기능은 무엇입니까? dp에서 치수를 취하므로 더 이상 수동으로 변환 할 필요가 없습니까? 그 방법은 fit과 어떤 관련이 있습니까?Picasso의 resizeDimen() 메서드가 dp 또는 픽셀을 사용합니까?

답변

2
  • resizeDimen 사용 DIMEN 자원을 필요로하는 경우 알려줘 곳 reSizeDimen(R.dimen.header_logo_w, R.dimen.header_logo_h)과 동일합니다. Dimen 리소스는 <dimen name="logo_width">96dp</dimen>처럼 보이며 다음과 같이 사용됩니다 : R.dimen.logo_width. 로이드 문맥되어 화소에 대한 측정 유닛에서 전환율
  • resize있어서 사용 화소
  • fit 방법은 목표 크기 (대개 이미지 뷰)

부기 원본 크기를 조정한다 (문맥은 Picasso.with(context)). 피카소 소스 코드의 method과 Android 소스 코드의 method을보고 전환이 어떻게 작동하는지 이해하십시오.

+0

그것이 나를 혼란스럽게합니다. 'resize' 메소드가 px 대신에 dp로 크기를 조정하는 옵션을 제공하지 않는 이유는'resizeDimen' 메쏘드가 dp를 가리키는 자원 ID를 취하는 것입니까? –

+0

피카소의 표준 단위는 픽셀입니다 (resize 메서드에서 볼 수 있듯이). 그러나 [모든 차원 단위]에서 값을 px로 변환하는 Picasso가 아닌 resizeDimen 메소드의 경우 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> 

당신이 (지옥 PX를 DP되지 않음) 더 explaination에게

+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 –