Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.89
nnnikotinnn995
4 / 4 / 0
Регистрация: 07.07.2011
Сообщений: 293
#1

Размер изображения на разных телефонах - Программирование Android

29.04.2012, 14:03. Просмотров 2492. Ответов 6
Метки нет (Все метки)

Здравствуйте. Рисую на канве. Размер экрана и разрешение на разных телефонах разное и когда я поставил приложение на телефон меньшего экрана то изображение перестало влезать. Подскажите пожалуйста можно ли заставить изображение подстраиваться под размер экрана – то есть отрисовывать его не в пикселях а в пропорциях по отношению к размеру и разрешению экрана и как это сделать? Какие классы ответственны за подгон изображения под экран?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2012, 14:03     Размер изображения на разных телефонах
Посмотрите здесь:
По-разному работает на разных телефонах Android
Android Одинаковый ли размер стека у разных версиях/девайсах Android?
Android Изменить размер изображения под телефон
Android Как обеспечить одинаковый размер картинки на разных экранах Android?
Как сделать оптимальный размер шрифта для разных устройств Android
Android CustomView разные изображения для разных экранов - одна система координат - Как?
Не на всех телефонах работает adMob Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Derpy
3 / 3 / 0
Регистрация: 25.12.2011
Сообщений: 20
29.04.2012, 14:06     Размер изображения на разных телефонах #2
Нужны ресурсы для разных разрешений подробнее почитай тут http://developer.android.com/guide/p...s_support.html
nnnikotinnn995
4 / 4 / 0
Регистрация: 07.07.2011
Сообщений: 293
30.04.2012, 09:13  [ТС]     Размер изображения на разных телефонах #3
Тут проблема еще в том, что у меня размер кнопок прикован к размеру изображения - то есть если у кнопки размер 52 пикселя , то и команда выполняется если палец попадает в этот диапазон, и если экран меньше, то и диапазон меньше. Похоже придется использовать гетвайт(хайт), кстати, and engine использует изображения из папки gfx, вы не знаете он подстраивает автоматически изображение под размер экрана или нет?
Derpy
3 / 3 / 0
Регистрация: 25.12.2011
Сообщений: 20
30.04.2012, 12:24     Размер изображения на разных телефонах #4
Цитата Сообщение от nnnikotinnn995 Посмотреть сообщение
Тут проблема еще в том, что у меня размер кнопок прикован к размеру изображения - то есть если у кнопки размер 52 пикселя , то и команда выполняется если палец попадает в этот диапазон, и если экран меньше, то и диапазон меньше.
Используй не фиксированный диапазон а bmp.getHeight() и bmp.getWidth()
nnnikotinnn995
4 / 4 / 0
Регистрация: 07.07.2011
Сообщений: 293
30.04.2012, 13:56  [ТС]     Размер изображения на разных телефонах #5
Цитата Сообщение от nnnikotinnn995 Посмотреть сообщение
Похоже придется использовать гетвэйт(хэйт)
Цитата Сообщение от Derpy Посмотреть сообщение
Используй не фиксированный диапазон а bmp.getHeight() и bmp.getWidth()
Я как раз это и хотел сделать, а как на счет andengine, у него есть возможность подстраиваться под экран?
nnnikotinnn995
4 / 4 / 0
Регистрация: 07.07.2011
Сообщений: 293
26.07.2012, 09:22  [ТС]     Размер изображения на разных телефонах #6
Вообще бытует мнение что в папке drawable-ldpi разрешения всего экрана 320*240. Однако тут написано следующее
To generate these images, you should start with your raw resource in vector format and generate the images for each density using the following size scale:

xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75
This means that if you generate a 200x200 image for xhdpi devices, you should generate the same resource in 150x150 for hdpi, 100x100 for mdpi and finally a 75x75 image for ldpi devices.
По таким расчетам,если в папке drawable-mdpi экран 480*320 ,то в папке drawable-ldpi должно быть 360*240 а не 320*240. Может в папке drawable-mdpi находится другое разрешение? Один из самых распространенных телефонов HTC Explorer black имеет разрешение 480x320 pix.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2012, 13:32     Размер изображения на разных телефонах
Еще ссылки по теме:
Отправка СМС в телефонах с двумя картами Android
Android Не на всех телефонах работает text to speech
Запретить поворот экрана на телефонах и позволить его на планшетах Android
Android Как подгонять размер диалоговых окон по размер экрана?
Android Размер кнопок, не пойму что влияет на их размер

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nnnikotinnn995
4 / 4 / 0
Регистрация: 07.07.2011
Сообщений: 293
01.10.2012, 13:32  [ТС]     Размер изображения на разных телефонах #7
Цитата Сообщение от Derpy Посмотреть сообщение
Нужны ресурсы для разных разрешений подробнее почитай тут
Вообще да, это самый легкий способ - раскидать все имиджи по папкам и дело в шляпе. Но у этого способа 2 жестких минуса - приложения станет значительно тяжелее и один и тот же графический файл надо подгонять под разные разрешения - работы значительно больше.
Если xml - то можно и без папок обойтись. Но как быть если все рисуется на Canvas (extends SurfaceView implements Runnable)? Можно поступить как в LunarLander из семплов - то есть
есть такой метод
Java
1
myBitmap=myBitmap.createScaledBitmap(myBitmap, width, height, true);
предварительно загрузить имидж
Java
1
myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.nnn555);
его запихнуть в surfaceChanged
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
getHolder().addCallback(new SurfaceHolder.Callback() 
        {
             /*** Уничтожение области рисования */
               public void surfaceDestroyed(SurfaceHolder holder) 
               {
                   boolean retry = true;
                    mThread.setRunning(false);
                    while (retry)
                    {
                        try
                        {
                            // ожидание завершение потока
                            mThread.join();
                            retry = false;
                        }
                        catch (InterruptedException e) { }
                    }
               }
 
               /** Создание области рисования */
               public void surfaceCreated(SurfaceHolder holder) 
               {
                   mThread.setRunning(true);
                   mThread.start();
               }
 
               /** Изменение области рисования */
              public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 
               {
                   mCanvasWidth = width;
                   mCanvasHeight = height;
                   
                   myBitmap=myBitmap.createScaledBitmap(myBitmap, width, height, true);
               }
        });
но если у вас количество графических файлов больше 15 (примерно) , то приложение будет виснуть и не чего не нарисует.
Можно попытаться рисовать на других переменных
Java
1
2
3
4
5
6
7
8
Drawable myBitmap52;
 
 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 
               {
                   mCanvasWidth = width;
                   mCanvasHeight = height;
                  myBitmap=myBitmap.createScaledBitmap(myBitmap, width, height, true);  
               }
и нарисовать

Java
1
2
3
4
5
6
 protected void onDraw(Canvas canvas) {         
    
     myBitmap52.setBounds(0, 0, mCanvasWidth, mCanvasHeight);
     myBitmap52.draw(canvas);
 //      canvas.drawBitmap(myBitmap52, src, dst, null);
    }
Но опять не факт что все ваши имиджи влезут. Есть еще способы, но нельзя ли как то проще решить задачу (может в манифесте чего написать). Подскажите пожалуйста как можно все графические файлы одинакового разрешения автоматически растягивать во весь экран (и не потеряется ли при этом скорость и стабильность FPS (частоты кадров)
Вложения
Тип файла: zip Tect.zip (1.18 Мб, 5 просмотров)
Yandex
Объявления
01.10.2012, 13:32     Размер изображения на разных телефонах
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru