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

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

Войти
Регистрация
Восстановить пароль
 
RC_86
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 2
#1

surfaceview multiple threads - Программирование Android

21.07.2013, 13:50. Просмотров 464. Ответов 0
Метки нет (Все метки)

Доброго времени суток.Пытаюсь разобраться с surfaceview.
Суть задачи следующая ,єсть два объекта, которые я запускаю в отдельных потоках.
В каждом обектерисуется изображение (мячик).


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
public class GameView extends SurfaceView implements SurfaceHolder.Callback{
 
public GameView(Context context) {
super(context);
getHolder().addCallback(this);
}
 
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
 
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
 
Thread oneThead = new Thread(new OneThread(getHolder(), getResources()));
oneThead.start();
 
Thread secondThead = new Thread(new SecondThread(getHolder(), getResources()));
secondThead.start();
 
}
}
А вот сами потоки.
Первый
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class OneThread implements Runnable{
private SurfaceHolder surfaceHolder;
private Bitmap brazukaBall;
 
 
public OneThread(SurfaceHolder surfaceHolder, Resources resources) {
this.surfaceHolder = surfaceHolder;
imageOne = BitmapFactory.decodeResource(resources, R.drawable.imageOne);
}
 
@Override
public void run() {
Canvas canvas;
canvas = surfaceHolder.lockCanvas(null);
canvas.drawBitmap(imageOne,68,87,null);
surfaceHolder.unlockCanvasAndPost(canvas);
}
 
}
Второй
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class SecondThread implements Runnable{
private SurfaceHolder surfaceHolder;
private Bitmap brazukaBall;
 
 
public SecondThread(SurfaceHolder surfaceHolder, Resources resources) {
this.surfaceHolder = surfaceHolder;
imageTwo = BitmapFactory.decodeResource(resources, R.drawable.imageTwo);
}
 
@Override
public void run() {
Canvas canvas;
canvas = surfaceHolder.lockCanvas(null);
canvas.drawBitmap(imageTwo,0,0,null);
surfaceHolder.unlockCanvasAndPost(canvas);
}
 
}
Проблема в том что на канвасе всегда изображения которое рисуется в SecondThread.Я так понял что канвас перезатераеться вторым изображением.
Я разделил на два отдельных потока, потому что в будущем там должна быть реализована анимация двух разных картинок.
Вопрос в том, как мне сделать так чтобы у меня две картинки НЕ перезатерали друг друга.
И вообще правильно создавать отдельные потоки?? В моем случае это будут два изображения которые движутся с разной скоростью и отражаются от стенок. Заранее большое спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2013, 13:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос surfaceview multiple threads (Программирование Android):

Работа с SurfaceView - Программирование Android
Отрисовка в SurfaceView никогда не вызывала трудностей, до тех пор, пока не запустил приложение на телефоне с экраном 1920х1080px. Фпс упал...

Ошибка в SurfaceView - Программирование Android
есть игра. отрисовка идет через SurfaceView и поток привязанный к нему. ошибка возникает в следующем моменте - я открываю сам игровой...

Мерцание в SurfaceView - Программирование Android
Всем привет! Рисую на SurfaceView фон и на нем анимированные объекты. Кадры беру из атласа. Появилось мерцание, причем фон не мерцает а...

Восстановление SurfaceView - Программирование Android
Кто работал с SurfaceView, помогите! Рисую на SurfaceView с помощью onTouchEvent(), без потока, все замечательно рисует, сворачиваю...

SurfaceView + onKeyDown - Программирование Android
Проблемка очень простая - не реагирует на onKeyDown в классе, наследующем SurfaceView. Исправьте мою криворукость, пожалуйста, подскажите,...

SurfaceView не отображается - Программирование Android
Учусь программировать по книге П. Дейтел, Х. Дейтел "Android для программистов. Создаём приложения". Делаю уже 5 приложение, но это не...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2013, 13:50
Привет! Вот еще темы с ответами:

Простейший пример SurfaceView - Программирование Android
Здравствуйте. Напишите пожалуйста простейшую программу рисующую точку на экране с помощью SurfaceView.

Воспроизведение видео в SurfaceView - Программирование Android
Ребят прощу у вас помощи, возникла такая проблема необходимо воспроизвести видео с помощью MediaPlayer(ранее использовал его для...

SurfaceView&Canvas - Программирование Android
Подскажите, как реализовать отображение, например, карандашика, когда рисуешь на Canvas в SurfaceView. В какую сторону копать, чтобы такое...

SurfaceView - широкий рисунок - Программирование Android
Проблема в ограничениях размеров. Создаю класс: public class D3D extends SurfaceView { public D3D(Context...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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