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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
PinkPink
9 / 9 / 2
Регистрация: 10.05.2012
Сообщений: 279
#1

Перерисовка - Программирование Android

30.12.2013, 11:22. Просмотров 1188. Ответов 0
Метки нет (Все метки)

Добрый день.

Помогите пожалуйста разобраться. Не могу понять почему тормозит перерисовка изображения.
Рисуется шарик, который должен двигаться по экрану в зависимости от того как вы наклоняете телефон. Почему-то после каждого наклона изображение задерживается где-то на секунду и только потом шарик начинает перемещаться.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package com.example.forlgball;
 
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
 
public class MainLG extends Activity implements SensorEventListener {
 
 
    private SensorManager mSensorManager; //менеджер сенсоров
    private Sensor mOrientation;    //датчик положения
    private draw d;
    
    private void mainProcessing() {
        Thread thread = new Thread(null, doBackgroundThreadProcessing,
                "Background");
        thread.start();
    }
    private Runnable doBackgroundThreadProcessing = new Runnable() {
        public void run() {
            backgroundThreadProcessing();
        }
    };
    
    private void backgroundThreadProcessing() {
        do{d.invalidate();}while(true);
        
    }
    
    
    public class draw extends View
    {
        int x=0;
        int y=0;
        int cx =160;
        int cy =240;
        public draw(Context context)
        {
            super(context);
        }  
        
        public void set(float _x, float _y)
        {          
           x = (int) _x;
           y = (int) _y;
        }
        int count=0;
        @Override
        protected void onDraw(Canvas canvas)
        {
            if( x<0)
            {
                if(cx<300)cx=cx+5;
            }
            else 
            {
                if(cx>20)cx=cx-5;
            }
            if( y>0)
            {
                if(cy>20)cy=cy-5;
            }
            else
            {
                if(cy<440)cy=cy+5;
            }
            super.onDraw(canvas);
            Paint paint = new Paint();
            paint.setStyle(Paint.Style.FILL);
 
            // закрашиваем холст белым цветом
            paint.setColor(Color.GRAY);
            canvas.drawPaint(paint);
            
            // Рисуем круг
            paint.setAntiAlias(true);
            paint.setColor(Color.MAGENTA);
            canvas.drawCircle(cx, cy, 15, paint);
                
            while(count!=1000)//цикл для плавной отрисовки
            {
                this.invalidate();//перерисовываем
                count++;
                if(count==1000)
                {
                    count=0;
                    break;
                }
            }
        }
    }
 
 
    @SuppressWarnings("deprecation")
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        // без заголовка
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        d = new draw(this);//создаем холст
        setContentView(d);//и устанавливаем его
        
        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); // Получаем менеджер сенсоров
        mOrientation = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); // Получаем датчик положения
        mSensorManager.registerListener(this, mOrientation,SensorManager.SENSOR_DELAY_NORMAL);
        
    }
    
    
    public void onSensorChanged(SensorEvent event)//вызывается при изменении наклона телефона
    {
        //Нужны плоскость XZ и ZY
        d.set(event.values[2], event.values[1]);//устнавливаем значение наклона
        //d.invalidate();//вызываем перерисовку
    }
 
    
    public void onAccuracyChanged(Sensor arg0, int arg1)//здесь можно ничего не писать  
    {
        
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2013, 11:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перерисовка (Программирование Android):

Перерисовка картинки - Программирование Android
Нужно перерисовывать секундную стрелку часов. Запихнул всё в timetask и запускаю через таймер. не могу разобраться, как это сделать....

Перерисовка layout - Программирование Android
здравствуйте,может кто сталкивался с такой проблемой имею такой xml &lt;RelativeLayout ...

Перерисовка - C++ Qt
Здравствуйте! Хочу в одном из методов реализовать перерисовку , прочитал , что это можно достичь при помощи метода &quot;update&quot;, который в...

Перерисовка - Delphi
Рисую на PainBox средствами GDI+. Но вот возникает такая проблема: при нажатии на клавишу Alt происходит полное стирание того, что было...

Перерисовка - C#
подскажите как можно сделать такое(что-то не могу сообразить): нужно чтобы в соответствии с выбранными радиокнопками при нажатии ОК в...

Перерисовка - Java
Здравствуйте! У меня снова глючит перерисовка( Описывать всё, что есть долго - лучше выложу программу. После нажатия кнопки на тулбаре...

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

Перерисовка - Java SE
Кусок чужого кода. В чём ошибка? Как-то оно странно перерисовывается.(При запуске станет ясно о чём я) import java.awt.*; import...

перерисовка формы - Visual C++
Пытаюсь сделать перерисовку окна по таймеру: ... MoveToEx(hdc,r1-5,r1-5,NULL); ... case WM_COMMAND: if...

Перерисовка кнопок - Delphi
В общем, делу визибл радиогроуп тру и исчезают кнопки, при наведение на них мышкой они появляются, как сделать чтобы они не исчезали?

Перерисовка TextOut - Delphi
Привет! СОздан объект он имеет форму круга, в нем с помощью ТеxtOut вывожу текст вот таким кодом Canvas.Font.Name :=...


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

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

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