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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как открыть PDF файл http://www.cyberforum.ru/android-dev/thread716367.html
Добрый день. Только начал изучать Android программирование. Возникла такая проблема, не могу организовать открытие pdf файла после клика мышки на кнопку. Кнопку и события клика есть. все работает....
Программирование Android Увеличение или уменьшение по клику Доброго времени суток. Есть кнопка по клику на которую выводиться случайное изображение, на котором яблоко или груша, и есть две кнопки Яблоко и Груша, ниже код, в котором пробую сделать подсчет... http://www.cyberforum.ru/android-dev/thread715841.html
Программирование Android В чем лажа?
Пишу приложение для подбора корня к кубическому уравнению (второе после "hello, world!", я новичок в андроиде), вот код: package com.example.findx2; import android.os.Bundle; import...
Простейший пример SurfaceView Программирование Android
Здравствуйте. Напишите пожалуйста простейшую программу рисующую точку на экране с помощью SurfaceView.
Программирование Android Кто разбирается в WebView? http://www.cyberforum.ru/android-dev/thread715623.html
Как сделать чтобы внутренние ссылки (к примеру у меня етсь свой сайт http://мой_сайт.ru, который я подключил в WebView в качестве стартовой страницы, и вот все ссылки, которые начинаются с...
Программирование Android ListView и ArrayList Добрый вечер. Появилась надобность сохранять данные( адаптер) с предыдущего ListView. Точнее ListView один, но данные в нем меняются. Например содержание ListView -Windows -Program Files -System... подробнее

Показать сообщение отдельно
nnnikotinnn995
4 / 4 / 0
Регистрация: 07.07.2011
Сообщений: 314

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

02.12.2012, 21:24. Просмотров 3289. Ответов 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).
0
Вложения
Тип файла: 7z Fairytale one refrain2.7z (5.16 Мб, 14 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru