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

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

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

Масштабирование Canvas - Программирование Android

02.12.2012, 21:24. Просмотров 3090. Ответов 1
Метки нет (Все метки)

Здравствуйте. Задача растянуть все изображения во весь экран- SurfaceView (не зависимо от разрешения телефона и соотношения его сторон), все изображения одного разрешения и находятся в одной общей для всех разрешений папке – drawable.
Есть разные способы подгона изображения, но при большом количестве файлов не все работают.
На сколько я смог разобраться – лучше всего рисовать на канве методом
Java
1
2
3
Rect src;//кусок снимка
    Rect dst;// размер его на экране
canvas.drawBitmap(myBitmap, src, dst, null);
Для этого нужно создать в классе с контекстной загрузкой файлов конструктор
с тремя параметрами
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
int heightWindown,widthWindown,heightWindown2,widthWindown2;    
public GameView(Context context, int w, int h){
super(context);
        this.mContext = context;
        mThread = new GameThread(this);
        this.heightWindown = h;// высота дисплея телефона 
        this.widthWindown = w;
heightWindown2 = myBitmap.getHeight();  //высота фрагмента снимка
        widthWindown2 = myBitmap.getWidth();
this.src = new Rect(0, 0, widthWindown2,heightWindown2);//кусок снимка
         this.dst = new Rect(0,0,widthWindown,heightWindown);// размер его на экране
myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.nnn);    
}
и вызвать его в setContentView придавая данным параметрам соответствующие значения (в том числе высоту и ширину дисплея)
Java
1
 setContentView(new GameView(this, getWindowManager().getDefaultDisplay().getWidth(), getWindowManager().getDefaultDisplay().getHeight()));
Если не загружать музыкальные файлы то все работает нормально. Но если загружать, то перед самым создание surface возникает пауза - в течение3-4 секунд стоит черный экран а потом все рисуется.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public GameView(Context context, int w, int h){
super(context);
        this.mContext = context;
        mThread = new GameThread(this);
        this.heightWindown = h;// высота дисплея телефона 
        this.widthWindown = w;
heightWindown2 = myBitmap.getHeight();  //высота фрагмента снимка
        widthWindown2 = myBitmap.getWidth();
this.src = new Rect(0, 0, widthWindown2,heightWindown2);//кусок снимка
         this.dst = new Rect(0,0,widthWindown,heightWindown);// размер его на экране
myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.nnn);
//                                                               музыка и звуки
this.track = MediaPlayer.create(context, R.raw.n555);
sounds = new SoundPool(10, AudioManager.STREAM_MUSIC,0);
acomnpAn = sounds.load(context, R.raw.acomnpan, 1); 
//и т.д.    
}
Однако этого не происходит, если все изображения раскидать по разным папкам и рисовать их фиксировано
Java
1
canvas.drawBitmap(myBitmap, x, y, null);
Как вы думаете почему возникает пауза и как это можно исправить?
(Во вложение при нажатие на кнопку старт вы переходите на SurfaceView).
Вложения
Тип файла: 7z Fairytale one refrain2.7z (5.16 Мб, 13 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 21:24     Масштабирование Canvas
Посмотрите здесь:

Программное масштабирование - Программирование Android
Доброе время суток. Возникла проблема с масштабированием при поддержки разных экранов разных производителей. Для масштабирования...

Масштабирование компонентов на андроиде - Программирование Android
Сейчас пытаюсь освоить андроид 2.3.3 (но если окажется, что там все плохо, то может повышу версию). Суть проблемы: нужно расставить 6...

Масштабирование картинок из drawable - Программирование Android
Здравствуйте! Суть в следующем, есть самодельное меню из картинок, при портретной ориентации находится вверху при ландшафтной слева. ...

Масштабирование элементов экрана - Программирование Android
Здравствуйте. Такой вопрос. Допустим есть несколько рядов с кнопками на activity и в зависимости от размера экрана один или два последних...

Обновление БД на андроид, Масштабирование иконок - Программирование Android
Добрый день,уважаемые форумчане. При программировании на андроиде столкнулся с несколькими проблемами, а именно: 1. У меня в приложении...

Как реализовать масштабирование рисунка? - Программирование Android
Здравствуйте. Нужно нарисовать схему объекта, аналогия как в дубль гисе, чтобы при увеличении масштаба выводился текст(названия объектов)....

Масштабирование картинок, отрисованных на кнопках - Программирование Android
Здравствуйте. Есть кнопки с отрисовнными на них картинками android:drawableLeft="@drawable/icon_temp_btn_on_off", где...

Масштабирование картинки в зависимости от разрешения экрана - Программирование Android
как программно масштабировать картинку в зависимости от разрешение экрана?

Масштабирование ImageView в процентах от размера дисплея - Программирование Android
Всем привет! У меня такой вопрос образовался по разметке интерфейса, сделал прокручиваемый layout, в котором располагаются картинки и...

Canvas - Программирование Android
Хочу разобраться в канвасе. Полазил по интернету, не нашел никакого простейшего материала про движение обьектов созданных в канвасе по...

Столкновения на canvas - Программирование Android
Здравствуйте. Задача определить позиции столкновения для 2 объектов-рисунков .png, которые при этом еще и вращаются...

Карта на Canvas - Программирование Android
Здравствуйте! Решил попробовать написать игру под андроид, до этого писал пару приложений несложных. Суть игры рассказывать не буду,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Report_You
Сообщений: n/a
10.12.2012, 17:04     Масштабирование Canvas #2
Всегда рисую void android.graphics.Canvas.drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

и растягивается на полную. Для подгонки можно использовать значения

canvas.getHeight() и canvas.getWidth()
Yandex
Объявления
10.12.2012, 17:04     Масштабирование Canvas
Ответ Создать тему
Опции темы

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