Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Vladimir99
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 22
#1

Растворение фона

31.05.2015, 14:27. Просмотров 224. Ответов 5
Метки нет (Все метки)

Я сделал программу наподобие хаотичного движения газов, и мне нужно чтобы при запуске они растворялись(увеличивали свою прозрачность). У меня все вышло,только после их растворения они снова становятся полностью непрозрачными и процесс повторяется(Попробовал ограничить условием в цикле перебора шариков(alpha[i]<=0) { break}, но выходит что при запуске все уже растворилось и анимации нету(Подскажите, что не так.
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
package com.example.android19anim1;
 
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.CountDownTimer;
import android.view.View;
 
public class MyDraw extends View {
    static int n = 15;
    static boolean started;
    int[] x = new int[n];
    int[] y = new int[n];
    int[] vx = new int[n];
    int[] vy = new int[n];
    int[] color1 = new int[n];
    int[] color2 = new int[n];
    int[] color3 = new int[n];
    static int[] alpha=new int [n];
 
    int random(int min, int max) {
        return (int) (min + Math.random() * (max + 1));
    }
 
    void fillArrayRandom(int[] a, int min, int max) {
        for (int i = 0; i < a.length; i++) {
            a[i] = random(min, max);
        }
    }
 
    void makeBalls() {
        fillArrayRandom(x, 0, this.getWidth());
        fillArrayRandom(y, 0, this.getHeight());
        fillArrayRandom(vx, -10, 50);
        fillArrayRandom(vy, -10, 50);
        fillArrayRandom(color1, 0, 255);
        fillArrayRandom(color2, 0, 255);
        fillArrayRandom(color3, 0, 255);
    }
 
    void moveBalls() {
        for (int i = 0; i < n; i++) {
            if ((x[i] < 0) || (x[i] > this.getWidth())) {
                vx[i] = -vx[i];
            }
            if ((y[i] < 0) || (y[i] > this.getHeight())) {
                vy[i] = -vy[i];
            }
            x[i] += vx[i];
            y[i] += vy[i];
            alpha[i]-=1;
            if(alpha[i]<=0) {
                break;
            }
            }
        }
    
 
    public MyDraw(Context context) {
        super(context);
        MyTimer timer = new MyTimer();
        timer.start();
    }
 
    protected void onDraw(Canvas canvas) {
        if (!started) {
            makeBalls();
            started = true;
        }
        Paint paint = new Paint();
        for (int i = 0; i < n; i++) {
            canvas.drawCircle(x[i], y[i], 20, paint);
            paint.setColor(Color.argb(alpha[i],color1[i], color2[i], color3[i]));
        }
 
    }
 
    void nextFrame() {
        moveBalls();
        invalidate();
    }
 
    // public static Scanner scan = new Scanner(System.in);
    //
    // public static void main(String[] args) {
    // System.out.println("Введите колличество шариков");
    // n = scan.nextInt();
    // }
 
    class MyTimer extends CountDownTimer {
 
        MyTimer() {
            super(1000000, 100);
        }
 
        @Override
        public void onTick(long millisUntilFinished) {
            nextFrame();
 
        }
 
        @Override
        public void onFinish() {
            // TODO Auto-generated method stub
 
        }
 
    }
 
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2015, 14:27
Ответы с готовыми решениями:

Постепенное растворение фона
У меня не получается постепенно растворять цвет.В программе указал увеличение...

Смена фона
Появилась нужда в смене фона через настройки, не подскажете как это делается?...

Установка заднего фона
Здравствуйте! У меня вопрос насчёт заднего фона. Как сделать чтобы...

Установка фона кнопке
Добрый день, хочу поставить на кнопку картинку, загрузив из папки mipmap, но...

Изменение фона активности
Здравствуйте, посетители форума! Захотел поменять фон активности. Добавил в...

5
Mikalai
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 668
31.05.2015, 15:06 #2
Попробуй вместо
Java
1
2
3
4
            alpha[i]-=1;
            if(alpha[i]<=0) {
                break;
            }
написать

Java
1
2
3
            if(alpha[i] > -1) {
                alpha[i]-=1;
            }
0
Vladimir99
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 22
31.05.2015, 15:15  [ТС] #3
ничего не выходит..даже прозрачность не меняется.Программа походу не может выполнить условие
0
Mikalai
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 668
31.05.2015, 15:27 #4
Выложи тот вариант где у тебя всё работало, но потом становилось опять не прозрачным.
0
Vladimir99
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 22
31.05.2015, 15:51  [ТС] #5
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
package com.example.android19anim1;
 
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.CountDownTimer;
import android.view.View;
 
public class MyDraw extends View {
    static int n = 15;
    static boolean started;
    int[] x = new int[n];
    int[] y = new int[n];
    int[] vx = new int[n];
    int[] vy = new int[n];
    int[] color1 = new int[n];
    int[] color2 = new int[n];
    int[] color3 = new int[n];
    static int[] alpha=new int [n];
 
    int random(int min, int max) {
        return (int) (min + Math.random() * (max + 1));
    }
 
    void fillArrayRandom(int[] a, int min, int max) {
        for (int i = 0; i < a.length; i++) {
            a[i] = random(min, max);
        }
    }
 
    void makeBalls() {
        fillArrayRandom(x, 0, this.getWidth());
        fillArrayRandom(y, 0, this.getHeight());
        fillArrayRandom(vx, -10, 50);
        fillArrayRandom(vy, -10, 50);
        fillArrayRandom(color1, 0, 255);
        fillArrayRandom(color2, 0, 255);
        fillArrayRandom(color3, 0, 255);
    }
 
    void moveBalls() {
        for (int i = 0; i < n; i++) {
            if ((x[i] < 0) || (x[i] > this.getWidth())) {
                vx[i] = -vx[i];
            }
            if ((y[i] < 0) || (y[i] > this.getHeight())) {
                vy[i] = -vy[i];
            }
            x[i] += vx[i];
            y[i] += vy[i];
            alpha[i]-=1;
            if(alpha[i]<=0) {
                break;
            }
            }
        }
    
 
    public MyDraw(Context context) {
        super(context);
        MyTimer timer = new MyTimer();
        timer.start();
    }
 
    protected void onDraw(Canvas canvas) {
        if (!started) {
            makeBalls();
            started = true;
        }
        Paint paint = new Paint();
        for (int i = 0; i < n; i++) {
            canvas.drawCircle(x[i], y[i], 20, paint);
            paint.setColor(Color.argb(alpha[i],color1[i], color2[i], color3[i]));
        }
 
    }
 
    void nextFrame() {
        moveBalls();
        invalidate();
    }
 
    // public static Scanner scan = new Scanner(System.in);
    //
    // public static void main(String[] args) {
    // System.out.println("Введите колличество шариков");
    // n = scan.nextInt();
    // }
 
    class MyTimer extends CountDownTimer {
 
        MyTimer() {
            super(1000000, 100);
        }
 
        @Override
        public void onTick(long millisUntilFinished) {
            nextFrame();
 
        }
 
        @Override
        public void onFinish() {
            // TODO Auto-generated method stub
 
        }
 
    }
 
}
0
Pablito
31.05.2015, 16:00     Растворение фона
  #6

Не по теме:

я ответил, но правда в другом разделе

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

Смена фона layout
Мне необходимо реализовать смену фона layout. Например существует два layout в...

Установка заднего фона
Здравствуйте. Как сделать выбор заднего фона для Activity из галереи смартфона?...

Canvas перекрытие цвета фона
По умолчанию при рисовании в Canvas происходит смешение с цветом фона, а как...


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

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

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