2016-09-19 3 views
0

안드로이드에서 UI 사용을 위해 큰 이미지 크기를 조정할 때 문제가 발생했습니다. 이 이미지에서 이봐, 그것은 ImageView입니다 :Android UI 이미지 샤프 엣지


원본 이미지 (즉 아크가 진행 막대하다) 당신이 여기에서 보는 것보다 약 10 배 더 크다. UWP (Windows 플랫폼)에서는 매우 큰 이미지를 사용하는 데 아무런 문제가 없었지만 안드로이드에서는 UI 요소에 이미지를 맞추는 데 사용되는 Nearest Neighbor 메서드를 사용합니다.이 메서드는 날카로운 모서리를 만듭니다. 다른 방법으로 전환 할 방법이 있습니까? 바이 큐빅처럼? 테스트 한 모든 안드로이드 버전에서 발생합니다 (4.1, 5.0, 6.0).
필자는 Xamarin 4를 사용하고 있는데, 여기서는 공헌 요인으로 생각하지 않습니다.
인터넷을 통한 검색이 없으므로이 문제가있는 유일한 사람 일 것 같습니다.
감사합니다.

답변

1

위에서 언급했듯이 픽셀 이미지 대신 벡터 이미지를 사용하는 것이 좋습니다.

하지만 픽셀 이미지를 사용하는 경우, 어쩌면 당신은 이미지의 라인을 디코딩하고 자신의 리샘플링 알고리즘을 작성하는 BitmapRegionDecoder를 사용할 수 JNI에서 일반적으로 이미지 크기를 조정합니다 (이중 선형 보간 등, 그것은 가까운 이웃보다 훨씬 낫다) 측면.

또 다른 가능한 방법은 원본 이미지가 OOM 문제를 일으키지 않고 "true"로 설정하면 아티팩트를 줄이기 위해 Bitmap.createBitmap 메서드를 호출하는 동안 "filter"매개 변수를 사용하는 것입니다.

+0

그래서, 설계 시간에 그것을 막을 수있는 방법은 없을까요? –

+0

@AnnaSB UI 디자인 타임? 벡터 디자인 도구를 사용하여 Sketch, Illustrator 등과 같은 아이콘을 만드십시오. 그런 다음 원하는 크기의 PNG, JPG 등의 원하는 픽셀 이미지를 내보낼 수 있습니다. – Sherlock

1

비트 맵 이미지 대신 벡터 이미지를 사용해야합니다.

비트 맵은 비트 맵 픽셀 컬러 일련의 화상을 나타내는 벡터를

을 X. 벡터 이미지는 색상을 사용하여 기하학적 모양 (선, 곡선)으로 표현됩니다.

벡터 이미지의 주요 유틸리티는 정의를 잃지 않고 확장 할 수 있습니다.

+0

아, 답장을 보내 주셔서 감사합니다. 나는 처음부터 SVG를 의미한다고 믿습니다. 그렇습니다. 일부 아이콘에는 SVG를 사용하지만 모든 것에 SVG 이미지에 액세스 할 수는 없습니다. 예를 들어, 사용자가 업로드 한 프로필 사진을 SVG로 변환 할 수 없습니다 ... 여기에서 가장 큰 문제는 Android가 N.N을 사용하는 이유입니다. 그리고 그것을 방지하는 방법. –

+0

그게 내가 여기 보여준 것처럼 다른 화면 크기에 대해 서로 다른 크기의 동일한 이미지를 사용할 수 있습니다. http://stackoverflow.com/questions/39434285/generate-same-size-image-in-drawable-object/39434410#39434410 –