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

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

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

Постепенное растворение фона - Программирование Android

31.05.2015, 12:51. Просмотров 277. Ответов 6
Метки нет (Все метки)

У меня не получается постепенно растворять цвет.В программе указал увеличение цвета на 10, используя массив color1[i],color2[i] и color3[i] через таймер CountDownTimer.Но цвета меняются бесконечно от черного к белому и наоборот
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
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 = 5;
    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];
 
    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];
            color1[i]+=5;
            color2[i]+=5;
            color3[i]+=5;
        }
    }
 
    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.rgb(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
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2015, 12:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Постепенное растворение фона (Программирование Android):

Растворение фона - Программирование Android
Я сделал программу наподобие хаотичного движения газов, и мне нужно чтобы при запуске они растворялись(увеличивали свою прозрачность). У...

ListView. Постепенное подгружение картинок - Программирование Android
Нужно сделать скролинг из картинок, их будет 100. Как лучше заполнять элементы лист-вью? Сразу записать ссылки на картинки, или ставить их...

Смена фона - Программирование Android
Появилась нужда в смене фона через настройки, не подскажете как это делается? Пишу tw.setBackgroundResource(R.layout.black_bg); для того...

Изменение фона активности - Программирование Android
Здравствуйте, посетители форума! Захотел поменять фон активности. Добавил в RelativeLayout атрибут background=&quot;@drawable/bg&quot; - не...

Установка заднего фона - Программирование Android
Здравствуйте. Как сделать выбор заднего фона для Activity из галереи смартфона? Добавлено через 1 минуту И нужно ли будет для этого...

Смена фона layout - Программирование Android
Мне необходимо реализовать смену фона layout. Например существует два layout в main_activity, id которых lay1 и lay2 . Как мне сделать так...

6
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,068
Завершенные тесты: 1
31.05.2015, 13:02 #2
во-первых это раздел джавы, а не андроида
а во-вторых у всех вьюшек есть что-то типа setOpacity()
и у цвета можно задавать не три а четыре параметра, первым будет идти альфа-канал, то есть прозрачность
0
Vladimir99
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 22
31.05.2015, 13:31  [ТС] #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
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
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 = 5;
//  static int alpha;
    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]+=5;
            }
            }
        }
    
 
    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
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,068
Завершенные тесты: 1
31.05.2015, 15:59 #4
я код особо не читал, но n=5 и потом цикл i от 0 до i<n, то есть от 0 до 4
и какой должен быть фон с прозрачностью 4 ?
при том что 0 это полностью прозрачный, а 255 вообще не прозрачный
0
Vladimir99
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 22
31.05.2015, 16:24  [ТС] #5
n-это число шариков, а alpha[n]-это массив значений прозрачности для n-кол-ва шариков.Т.к функция moveBalls вызывается много раз, то и прозрачность уменьшается каждый раз на 5
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,068
Завершенные тесты: 1
31.05.2015, 18:27 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
получается moveBalls вызывается 10 раз в секунду
в этом методе каждый раз отрабатывает цикл 5 раз и каждый раз альфа +5 то есть за секунду 250
все логично
1
Vladimir99
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 22
31.05.2015, 21:08  [ТС] #7
Паблито, вы все верно сказали, но проблема остается.Почему процесс повторяется?
0
31.05.2015, 21:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2015, 21:08
Привет! Вот еще темы с ответами:

Установка фона кнопке - Программирование Android
Добрый день, хочу поставить на кнопку картинку, загрузив из папки mipmap, но студия ругается тут getDrawable(R.mipmap.derev_okno1) говорит...

Установка заднего фона - Программирование Android
Здравствуйте! У меня вопрос насчёт заднего фона. Как сделать чтобы изображение не растягивалось &quot;как ему вздумается&quot;? Есть простой xml...

Создание фона для Activity - Программирование Android
Хочу создать фон для активити.. в дальнейшем буду его сжимать до xxxhdpi/xxhdpi/xhdpi/hdpi/mdpi/ldpi. Какое разрешение изображения мне...

Растянуть картинку заднего фона - Программирование Android
есть xml &lt;TableRow xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; android:layout_height=&quot;wrap_content&quot; ...


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

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

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