Poor image quality on watch face

I saw the thread on poor image quality on simulator. My problem is poor image quality on the watch itself.

This is my first Connect IQ project. I have a .png image that I use as background for a watch face I am working on. When displayed on the watch (venu3), the quality is horrible.

The original image is a png file, 417X417 pixels. I draw it using drawScaledBitmap.

This github issue shows the original image and watch face image (using screenshot from the watch itself).

I tried adding automaticPalette="false" in the <bitmap> entry for this file in drawables.xml - it didn't help.

Any suggestions?

Thanks,

Shai.

  • I figured this out. The problem was that this specific image was defined as the launcherIcon in manifest.xml:

    <iq:application id="84152ab2-6e90-4880-a31c-410ff1f66d7c" type="watchface" name="@Strings.AppName" entry="DayCounterWatchFaceApp" launcherIcon="@Drawables.yellowRibbonBitmap" minApiLevel="5.0.0">

    so during build it was scaled to a lower resolution with the following warning (which I overlooked):

    WARNING: venu3: The launcher icon (417x417) isn't compatible with the specified launcher icon size of the device 'venu3' (70x70). The image will be scaled to the target size.

    I changed launcherIcon to point to @Drawables.LauncherIcon and that fixed the issue.

  • If it covers the complete background make it 454x454, that's the native resolution for Venu 3 and others. Upscaling is always worse than downscaling imho.

    You can also choose for color mapping and disable dithering to improve quality for several devices. 

    <bitmap id="background" filename="background.png" scaleX="100%" scaleY="100%" scaleRelativeTo="screen" dithering="none"/>

  • Thanks for pointing this out. This is a great suggestion as it scales the image at compile time, rather than run time, so it is done just once (rather than use the watch resources every time the image is displayed). Also, it lets me drop the use of drawScaledBitmap, which is not supported by all devices with API level 5.0.0, and even on those that it is supported it is considered computationally expensive.

    I am OK with upscaling from 417x417 to 454x454. It is unnoticeable.

    Thanks again.