나는 Picasso로 크기를 재조정하는 것에 대해 매우 혼란 스럽다. 정확하게 이해한다면 픽셀을 resize
메서드로 전달해야하므로 수동으로 dp에서 다른 화면 밀도를 지원하도록 변환해야합니다. 그러나 resizeDimen
메소드의 기능은 무엇입니까? dp에서 치수를 취하므로 더 이상 수동으로 변환 할 필요가 없습니까? 그 방법은 fit
과 어떤 관련이 있습니까?Picasso의 resizeDimen() 메서드가 dp 또는 픽셀을 사용합니까?
답변
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을보고 전환이 어떻게 작동하는지 이해하십시오.
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에게
감사합니다. 그래서'fit()'을 사용하지 않으면 항상 dp를 px로 직접 변환해야합니다. 맞습니까? –
그리고 dp에 정의 된 리소스 ID를 전달하면 어떻게됩니까? –
@FlorianWalther - Picasso 소스 코드를 연구하면 resources.getDimensionPixelSize -> https://github.com/square/picasso를 사용하여 리소스 파일의 정수 값을 해당 픽셀로 항상 변환한다는 것을 알 수 있습니다. /blob/5ddd855c1e98379a1812c0ccccbdc200a30312cc/picasso/src/main/java/com/squareup/picasso/RequestCreator.java –
그것이 나를 혼란스럽게합니다. 'resize' 메소드가 px 대신에 dp로 크기를 조정하는 옵션을 제공하지 않는 이유는'resizeDimen' 메쏘드가 dp를 가리키는 자원 ID를 취하는 것입니까? –
피카소의 표준 단위는 픽셀입니다 (resize 메서드에서 볼 수 있듯이). 그러나 [모든 차원 단위]에서 값을 px로 변환하는 Picasso가 아닌 resizeDimen 메소드의 경우 Android 시스템입니다. –
그래서 올바르게 이해한다면,이 방법을 사용하면 dp를 픽셀로 직접 변환하지 않고 대신 dp res id를 전달할 수 있습니까? –