4

Complications API를 사용하면 아이콘 유형이 있지만 아이콘을 그리는 방법에 대해서는 잘 모릅니다.Android 마모 합병증 제공 업체의 시계 모드에 아이콘을 표시하려면 어떻게해야하나요?

실제 시계면을 그릴 때 drawIcon 메서드가없는 것 같습니다. 예 : canvas.drawIcon (아이콘)과 같은 것입니다. 비트 맵을 그리는 방법 만 볼 수 있습니다.

} else if (complicationData.getType() == ComplicationData.TYPE_ICON) { 
       Icon icon = complicationData.getIcon(); 

어떻게 다음 캔버스에 아이콘을 그릴 않습니다 내 drawComplications 방법에

나는이 있나요?

여기에 코드 랩 아이콘을 그리는 방법을 알려하지 않습니다 https://codelabs.developers.google.com/codelabs/complications/index.html?index=..%2F..%2Findex#3

을 내가 대신에서 로컬 착용 할 수있는 모듈에 모든 드로어 블을 복사 한 문자열에 전달하여 아이콘 형식을 무시하고, 수 적절한 비트 맵을 그리면됩니다. 그러나 아이콘을 그리는 방법이 있어야합니다. 그렇지 않은 이유는 무엇입니까?

Google 검색에서 아이콘을 비트 맵으로 변환하는 방법을 찾을 수 없지만 API가 아이콘을 원할 때 아이콘으로 비트 맵을 변환해야하므로 바보처럼 보일 수도 있습니다.

도움을 주시면 감사하겠습니다.

감사합니다. 나는이 놓친 방법을 확인

답변

5

그래서 난 몰라하지만 그건 간단

Drawable drawable = icon.loadDrawable(getApplicationContext()); 

그런 다음 당신은 아마 이미 알고있는이 작업을 수행 : 여기

보고 있었다

if (drawable instanceof BitmapDrawable) { 
    Bitmap bitmap; 
    bitmap = ((BitmapDrawable) drawable).getBitmap(); 
    canvas.drawBitmap(bitmap, complicationsX, mTopComplicationY, null); 
} 

https://developer.android.com/reference/android/graphics/drawable/Icon.html#loadDrawable(android.content.Context)

그런 다음 그것을보고 왜 시도하지 않았는지 궁금해했습니다. 그거. reponse에

편집는 언급합니다 : 당신이 VectorDrawable 다음 필요에 적응 사용합니다.

+0

안녕하세요. 이것은 종종 아이콘에 부착 된 vectordrawable이기 때문에 대부분의 경우 실패한 것으로 보입니다. 대신 다음을 사용했습니다. http://stackoverflow.com/a/10600736 –

+0

첫 번째 줄이 답입니다. 원하는 드로어 블을 사용하십시오. 제 경우에는 비트 맵을 사용하고있었습니다. 당신이 참조한 대답은 심지어 icon.loadDrawable을 언급하지 않기 때문에 내 질문에 대한 대답으로 완전히 실패 할 것입니다. –

+0

나는 귀하의 솔루션에 동의하며 icon.loadDrawable을 사용합니다. 하지만 반환 된 Drawable을 항상 BitmapDrawable로 캐스팅 할 수없는 것 같습니다. 때로는 반환 된 Drawable이 VectorDrawable이며 충돌이 발생합니다. 그래서 Drawable을 Bitmap으로 변환하기 위해이 링크를 언급했습니다. –

관련 문제