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

Анимация в живых обоях - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как открыть Activity по открытии ссылки? http://www.cyberforum.ru/android-dev/thread1376753.html
Допустим, у нас есть WebView, как открывать Activity при открытии определенной ссылки? Например, http://localhost/login/ - открываем LoginActivity
Программирование Android In-app Billing API Изучаю внедрение In-App Purchase в приложение. Хотел по этому руководству сделать http://habrahabr.ru/post/117944/, а потом ещё немного почитал, и выяснилось, что In-app Billing API v2 устарела. И... http://www.cyberforum.ru/android-dev/thread1376600.html
Программирование Android Запрет пересоздания DialogFragment
Привет. Можно ли как нибуть запретить пересоздание DialogFragment при повороте? Не Activity а именно DialogFragment.
Таймер Программирование Android
new CountDownTimer(1800000, 1000) { public void onTick(long millisUntilFinished) { mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); } public...
Программирование Android Отследить изменение текстового поля http://www.cyberforum.ru/android-dev/thread1376362.html
Добрый день. Прошу помощи. Как отслеживать изменение текстового поля (EditText). Предположим, я ввожу какое-нибудь число в поле(EditText1), а в другом поле(EditText2) тут же меняется значение...
Программирование Android Указать цвет текста, подходящий для разных цветовых тем Есть напр. 2 темы: Theme.AppCompat - темная Theme.AppCompat.Light - светлая Вот как указать одним стилем что цвет TextView при светлой теме , будет черным, а при светлой теме - белым. Наведите... подробнее

Показать сообщение отдельно
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,111

Анимация в живых обоях - Программирование Android

17.02.2015, 13:36. Просмотров 872. Ответов 32
Метки (Все метки)

Всем привет, у меня тут проблема, делаю живые обои с покадровой анимацией все сделал ок, все работает, только анимация работает не плавно, а с рывками, кадры проигрываются 1 кадр в секунду...

Вот если что код, может кто подскажет в чем там проблема.
Кликните здесь для просмотра всего текста
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
public class WallpaperSer extends WallpaperService {
 
    static final Handler mHandler = new Handler();
 
    public void onCreate() {
        super.onCreate();
    }
 
    public void onDestroy() {
        super.onDestroy();
    }
 
    public Engine onCreateEngine() {
        return new WallpaperSerEngine();
    }
 
    class WallpaperSerEngine extends Engine  {
        private boolean mVisible;
        private float mScaleX;
        private float mScaleY;
        private Bitmap icon;
        private Runnable diwaliImg;
 
        int i = 0;
        int[] pirates = {
                R.drawable.final_0001,
                R.drawable.final_0002,
                R.drawable.final_0003,
                R.drawable.final_0004,
                R.drawable.final_0005,
                R.drawable.final_0006,
                R.drawable.final_0007,
                R.drawable.final_0008,
                R.drawable.final_0009,
                R.drawable.final_0010,
                R.drawable.final_0011,
                R.drawable.final_0012,
                R.drawable.final_0013,
                R.drawable.final_0014,
                R.drawable.final_0015,
                R.drawable.final_0016,
                R.drawable.final_0017,
                R.drawable.final_0018,
                R.drawable.final_0019,
                R.drawable.final_0020,
                R.drawable.final_0021,
                R.drawable.final_0022,
                R.drawable.final_0023,
                R.drawable.final_0024,
                R.drawable.final_0025,
                R.drawable.final_0026,
                R.drawable.final_0027,
                R.drawable.final_0028,
                R.drawable.final_0029,
                R.drawable.final_0030,
                R.drawable.final_0031,
                R.drawable.final_0032,
                R.drawable.final_0033,
                R.drawable.final_0034,
                R.drawable.final_0035,
                R.drawable.final_0036,
                R.drawable.final_0037,
                R.drawable.final_0038,
                R.drawable.final_0039,
                R.drawable.final_0040,
                R.drawable.final_0041,
                R.drawable.final_0042,
                R.drawable.final_0043,
                R.drawable.final_0044,
                R.drawable.final_0045,
                R.drawable.final_0046,
                R.drawable.final_0047,
                R.drawable.final_0048,
                R.drawable.final_0049,
                R.drawable.final_0050,
                R.drawable.final_0051,
                R.drawable.final_0052,
                R.drawable.final_0053,
                R.drawable.final_0054,
                R.drawable.final_0065,
                R.drawable.final_0056,
                R.drawable.final_0057,
                R.drawable.final_0058,
                R.drawable.final_0059,
                R.drawable.final_0060,
                R.drawable.final_0061,
                R.drawable.final_0062,
                R.drawable.final_0063,
                R.drawable.final_0064,
                R.drawable.final_0065,
                R.drawable.final_0066,
                R.drawable.final_0067,
                R.drawable.final_0068,
                R.drawable.final_0069,
                R.drawable.final_0070,
                R.drawable.final_0071,
                R.drawable.final_0072,
                R.drawable.final_0073,
                R.drawable.final_0074,
                R.drawable.final_0075,
                R.drawable.final_0076,
                R.drawable.final_0077,
                R.drawable.final_0078,
                R.drawable.final_0079,
                R.drawable.final_0080,
                R.drawable.final_0081,
                R.drawable.final_0082,
                R.drawable.final_0083,
                R.drawable.final_0084,
                R.drawable.final_0085,
                R.drawable.final_0086,
                R.drawable.final_0087,
                R.drawable.final_0088,
                R.drawable.final_0089,
                R.drawable.final_0090,
                R.drawable.final_0091,
                R.drawable.final_0092,
                R.drawable.final_0093,
                R.drawable.final_0094,
                R.drawable.final_0095,
                R.drawable.final_0096,
                R.drawable.final_0097,
                R.drawable.final_0098,
                R.drawable.final_0099,
                R.drawable.final_0100,
                R.drawable.final_0101,
                R.drawable.final_0102,
                R.drawable.final_0103,
                R.drawable.final_0104,
                R.drawable.final_0105,
                R.drawable.final_0106,
                R.drawable.final_0107,
                R.drawable.final_0108,
                R.drawable.final_0109,
                R.drawable.final_0110,
                R.drawable.final_0111,
                R.drawable.final_0112,
                R.drawable.final_0113,
                R.drawable.final_0114,
                R.drawable.final_0115,
                R.drawable.final_0116,
                R.drawable.final_0117,
                R.drawable.final_0118,
                R.drawable.final_0119,
                R.drawable.final_0120
        };
 
        WallpaperSerEngine() {
            diwaliImg = new Runnable() {
                public void run() {
                    drawFrame();
                }
            };
        }
 
        @Override
        public void onCreate(SurfaceHolder holder){
            super.onCreate(holder);
        }
 
        @Override
        public void onDestroy() {
            super.onDestroy();
            mHandler.removeCallbacks(diwaliImg);
        }
 
        @Override
        public void onVisibilityChanged(boolean visible) {
            mVisible = visible;
            if (visible) {
                drawFrame();
            } else {
                mHandler.removeCallbacks(diwaliImg);
            }
        }
 
        @Override
        public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
            super.onSurfaceChanged(holder, format, width, height);
            drawFrame();
            mScaleX = width / (1f * icon.getWidth());
            mScaleY = height / (1f * icon.getHeight());
        }
 
        @Override
        public void onSurfaceCreated(SurfaceHolder holder) {
            super.onSurfaceCreated(holder);
        }
 
        @Override
        public void onSurfaceDestroyed(SurfaceHolder holder) {
            super.onSurfaceDestroyed(holder);
            mVisible = false;
            mHandler.removeCallbacks(diwaliImg);
        }
 
 
        @Override
        public void onOffsetsChanged(float xOffset, float yOffset, float xStep,float yStep, int xPixels, int yPixels) {
            drawFrame();
        }
 
        @Override
        public void onTouchEvent(MotionEvent event) {
            super.onTouchEvent(event);
        }
 
        private void drawFrame() {
            final SurfaceHolder holder = getSurfaceHolder();
            Canvas c = null;
            try {
                c = holder.lockCanvas();
                if (c != null) {
                    drawPirate(c);
                }
            } finally {
                if (c != null)
                    holder.unlockCanvasAndPost(c);
            }
            mHandler.removeCallbacks(diwaliImg);
            if (mVisible) {
                mHandler.postDelayed(diwaliImg, 1000 / 25);
            }
        }
 
        private void drawPirate(Canvas c) {
            icon = BitmapFactory.decodeResource(getResources(), pirates[i]);
            i++;
            if (i == 120) {
                i = 0;
            }
            Matrix matrix = new Matrix();
            c.scale(mScaleX, mScaleY);
            c.drawBitmap(icon, matrix, null);
            icon.recycle();
        }
    }
}


Добавлено через 46 минут
Нашел наверное ответ здесь http://stackoverflow.com/a/18003129/520349, но как мне сделать ?
Decode them once, and just draw them on each frame.
Как мне мой массив декодировать за один раз?) Или я все правильно делаю?) Я что то запутался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru