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

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

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

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

31.05.2015, 14:27. Просмотров 179. Ответов 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
 
        }
 
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2015, 14:27     Растворение фона
Посмотрите здесь:

Android Смена фона
Растянуть картинку заднего фона Android
Создание фона для Activity Android
Android Постепенное растворение фона
Android Стандартные параметры фона кнопки
Android Установка заднего фона
Установка фона кнопке Android
Изменение стиля (фона) ActionBar Android
Android Установка заднего фона
Android Переброс переменных из фона в актив
Изменение фона активности Android
Смена фона layout Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
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;
            }
Vladimir99
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 20
31.05.2015, 15:15  [ТС]     Растворение фона #3
ничего не выходит..даже прозрачность не меняется.Программа походу не может выполнить условие
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
31.05.2015, 15:27     Растворение фона #4
Выложи тот вариант где у тебя всё работало, но потом становилось опять не прозрачным.
Vladimir99
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 20
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
 
        }
 
    }
 
}
Паблито
31.05.2015, 16:00     Растворение фона
  #6

Не по теме:

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

Yandex
Объявления
31.05.2015, 16:00     Растворение фона
Ответ Создать тему
Опции темы

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