Графика выглядит нормально на мобильном телефоне (S2), но размыта на планшете (Kindle/Acer Iconia)

Здравствуйте товарищи программисты!

Во время рождественских каникул я начал работать над приложением для кроссвордов и тщательно протестировал его на своем Samsung Galaxy S2, так как это было единственное устройство, которое у меня было на тот момент. Теперь, вернувшись на работу, у меня также есть Acer Iconia и Kindle Fire HD для работы. Проблема в том, что мое приложение выглядит полностью размытым на обоих планшетах.

В моем приложении не используются готовые изображения, все рисуется из рисунков xml (в основном градиенты). Хотя в этом нет необходимости, я скопировал все градиенты xml во все папки dpi (ldpi, mdpi, hdpi, xhdpi). Я также явно добавил тег support-screens в манифест, с smallscreens на xlargescreens и anydensity. Ничего не сработало.

Моя процедура рисования выглядит так:

canvas.save();
canvas.translate(mPosX, mPosY);
canvas.scale(zoom, zoom,centerx,centery);
for(int x=0;x<mapsize;x++) 
    for(int y=0;y<mapsize;y++) {
        this.gc.setBounds(cells[x][y]);
        this.gc.draw(canvas);
    }
canvas.restore();

При запуске я узнаю наименьшую сторону устройства (800x480 = 480), делю ее на количество ячеек в моем кроссворде (15), поэтому я получаю размер ячейки 32 для S2. Я просто рисую тайлы 15x15 размером 32x32 каждый. На моем мобильном телефоне это выглядит четким, даже если я увеличу изображение в 15 раз, текст и графика останутся четкими. Не на планшетах, графика смазана с самого начала и становится хуже по мере увеличения. На Acer Iconia стрелки даже не рисуются, они все загромождены в верхнем левом углу, хотя Logcat говорит, что смещение вычисляется правильно, они просто больше нигде не рисуются. Я понял одну вещь: когда я запускаю приложение на Acer Iconia, Logcat также говорит:

01-07 11:39:35.292: D/libEGL(7914): loaded /system/lib/egl/libEGL_tegra.so

01-07 11:39:35.292: E/(7914): file /data/data/com.nvidia.NvCPLSvc/files/driverlist.txt: not found!

01-07 11:39:35.292: I/(7914): Attempting to load EGL implementation /system/lib//egl/libEGL_tegra_impl
01-07 11:39:35.302: I/(7914): Loaded EGL implementation /system/lib//egl/libEGL_tegra_impl
01-07 11:39:35.302: D/libEGL(7914): loaded /system/lib/egl/libGLESv1_CM_tegra.so
01-07 11:39:35.302: D/libEGL(7914): loaded /system/lib/egl/libGLESv2_tegra.so
01-07 11:39:35.332: I/(7914): Loading GLESv2 implementation /system/lib//egl/libGLESv2_tegra_impl
01-07 11:39:35.332: D/OpenGLRenderer(7914): Enabling debug mode 0

Кажется, есть проблемы с загрузкой некоторых драйверов, кто-нибудь знает об этом подробнее? Не удалось найти много об этом в Интернете.

И напоследок несколько картинок, говорящих более 1000 слов.

Sharp http://imageshack.us/photo/my-images/338/crosswords21.png http://imageshack.us/photo/my-images/593/crosswords22.png/ Samsung Galaxy S2

Размыто, стрелки в правильном положении images/850/crosswordkindle1.png http://imageshack.us/photo/my-images/252/crosswordkindle2.png/ Kindle Fire HD

Размыто, стрелки загромождены в левом верхнем углу http://imageshack.us/photo/my-images/259/crosswordiconia1.png http://imageshack.us/photo/my-images/803/crosswordiconia2.png/ Acer Iconia

Пожалуйста, помогите мне :) Спасибо заранее.

Только что нашел это Весь текст в моем приложении для Android размывается. Кажется, это обычная проблема с вкладкой Iconia.


person El Duderino    schedule 07.01.2013    source источник


Ответы (1)


Как видно на Kindle и Iconia, тег аппаратного ускорения приложения активируется автоматически. При значении false графика становится четче и снова становится четкой. Теперь это немного медленнее (очевидно), но это работает. Напротив, когда я включаю аппаратное ускорение на S2, изображение становится размытым, как на планшетах.

person El Duderino    schedule 07.01.2013