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

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

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

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

13.09.2016, 15:56. Просмотров 162. Ответов 3
Метки нет (Все метки)

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

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
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DrawView myDrawView = new DrawView(this);
        setContentView(myDrawView);
        myDrawView.tikTak();
    }
}
 
public class DrawView extends View {
    Paint p;
    Rect c;
    Timer myTimer;
    int x0 = 540;
    int y0 = 500;
    int R = 400;
    private final double angle = 6 * Math.PI / 180;
    double a ;
    int x = 0;
    int x1 = 0;
    int y1 = 0;
 
    public DrawView(Context context) {
        super(context);
        p = new Paint();
        c = new Rect();
 
        p.setColor(Color.BLACK);
        p.setStrokeWidth(4);
        p.setStyle(Paint.Style.STROKE);
        p.setTextSize(50);
    }
 
    @Override
    public void onDraw(Canvas canvas){
        canvas.drawPoint(x0, y0, p); //точка - центр
        canvas.drawCircle(x0, y0, R, p);
 
        p.setColor(Color.RED);
        p.setStrokeWidth(3);
 
        x1 = (int) (x0 + R * Math.cos(a));
        y1 = (int) (y0 + R * Math.sin(a));
 
        canvas.drawLine(x0, y0, x1, y1, p);
    }
 
    public void tikTak(){
        myTimer = new Timer();
        myTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                if (x == 60) x = 0;
                else x++;
                a = getAngle();
            }
        },0, 1000);
    }
 
    public double getAngle(){
        return x * angle;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2016, 15:56     Перерисовка картинки
Посмотрите здесь:

Картинки и текст Eclipse Android
Android Оптимальное разрешение картинки
Android Загрузка картинки
Android Картинки для аркады
Android Вставка картинки
Android Загрузка картинки на сервер
Листать картинки Android
Android Смена картинки по нажатию
Текст вокруг картинки Android
Смена картинки в TabHost Android
Android Перерисовка layout
Android Картинки в RadioButton-е

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,208
Завершенные тесты: 1
13.09.2016, 16:25     Перерисовка картинки #2
начни с HelloWorld
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
13.09.2016, 19:54     Перерисовка картинки #3
Что то типа. У меня правда не часы, а секундомер, стрелка делает один оборот.
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
// анимация таймера
            RotateAnimation rAnim = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
            rAnim.setInterpolator(new LinearInterpolator()); // типа добавит сглаживания
            rAnim.setDuration(TimeMS * K_Speed / KSpeebBtn); // длительность сюда переменную загнать.
            ImageView imgview = (ImageView) findViewById(R.id.arrow); // рисунок
            //  rAnim.setDetachWallpaper (true); не работает
            imgview.startAnimation(rAnim); // запуск анимации
        }
 
        @Override
        protected Void doInBackground(Void... params) {
            try {
                TimeUnit.MILLISECONDS.sleep(TimeMS * K_Speed / KSpeebBtn);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            controltask = new ControlTask();
            controltask.execute();
        }
    }
REALIST07
Автор FAQ
Автор FAQ
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
13.09.2016, 21:22     Перерисовка картинки #4
anton_rynkovoy, проблема в перерисовке, вызывай invalidate():
Java
1
2
3
4
5
6
7
8
9
10
11
12
public void tikTak(){
        myTimer = new Timer();
        myTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                if (x == 60) x = 0;
                else x++;
                a = getAngle();
               invalidate(); // требуешь вручную перерисовать view элемент
            }
        },0, 1000);
    }
Yandex
Объявления
13.09.2016, 21:22     Перерисовка картинки
Ответ Создать тему
Опции темы

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