Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
geometria
1 / 1 / 6
Регистрация: 13.01.2013
Сообщений: 107

При изменении настройки в приложении выскакивает ошибка - Программирование Android

14.12.2016, 21:38. Просмотров 668. Ответов 30
Метки (Все метки)

Java
1
2
3
4
5
6
private SharedPreferences prefs;
        public void prefMethod()
        {
               this.mSettings = Integer.parseInt(prefs.getString("preference_radius",
"25"));
    }
Как правильно оформить этот метод?


Painting.java
Кликните здесь для просмотра всего текста
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
package com.livewallpaper;
 
import android.content.*;
import android.graphics.*;
import android.view.*;
import java.util.*;
 
public class LiveWallpaperPainting extends Thread implements Runnable{
        
        private SurfaceHolder surfaceHolder;
        private static final int MAX_COUNT = 17;
        int mSettings;
        Bitmap foni;
        Bitmap pic;
        Timer timer;
        int count;
        private boolean wait;
        private boolean run;
        private Paint mScorePaint;
        public LiveWallpaperPainting(SurfaceHolder surfaceHolder, final Context context, int radius) {
                this.surfaceHolder = surfaceHolder;
                this.wait = true;
                pic = BitmapFactory.decodeResource(context.getResources(), R.drawable.p01);
                mSettings=radius;
                
                
                mScorePaint = new Paint();
                mScorePaint.setTextSize(30);
                mScorePaint.setStrokeWidth(2);
                mScorePaint.setColor(Color.WHITE);
                
                foni = BitmapFactory.decodeResource(context.getResources(), R.drawable.fon2);
                timer = new Timer(); 
                timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    if(count == MAX_COUNT ) count = 0;
                pic = BitmapFactory.decodeResource(context.getResources(), R.drawable.p01 + count);
                count++;
                          }
 
    }, 0,80);
 
        
        }   
        
    private SharedPreferences prefs;
        public void prefMethod()
        {
               this.mSettings = Integer.parseInt(prefs.getString("preference_radius",
"25"));
 
            //this.mSettings = Integer.parseInt("10");
    }
        public void pausePainting() {
                this.wait = true;
                synchronized(this) {
                        this.notify();
                }}
        public void resumePainting() {
                this.wait = false;
                synchronized(this) {
                        this.notify();
                } }
        public void stopPainting() {
                this.run = false;
                synchronized(this) {
                        this.notify();
                }}
        @Override
        public void run() {
            
                this.run = true;
                Canvas c = null;
                while (run) {
                        try {
                                c = this.surfaceHolder.lockCanvas(null);
                                synchronized (this.surfaceHolder) {
                                        Thread.sleep(50);
                                        doDraw(c);
                                }
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        } finally {
                                if (c != null) {
                                        this.surfaceHolder.unlockCanvasAndPost(c);
                                }
                        }
                        synchronized (this) {
                                if (wait) {
                                        try {
                                                wait();
                                        } catch (Exception e) {}
                                }
                        }
                }
        }
        int w; int h;
        int wp; int hp;
        int wpV; int wpH;
        int ws; int hs;
        public void setSurfaceSize(int width, int height) {
             this.w = width;
             this.h = height;
             this.wp = foni.getWidth();
             this.hp = foni.getHeight();
             this.wpV = wp*11/10;
             this.wpH = w*11/10;
             this.ws = h*3/5;
             this.hs = h*3/5;
                    synchronized(this) {
                     this.notify();
             }
     }
       float t = 0;
       float t2 = 0;
       int T = -1;
       int A = -1;
         public boolean doTouchEvent(MotionEvent event) {
             switch (event.getAction()){
             case MotionEvent.ACTION_DOWN:
                 t = event.getX();
             case MotionEvent.ACTION_MOVE:
             t2 = event.getX();
             if (t < t2 & w < h & T < 0){//пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
                     T++;}
             if (t < t2 & w > h & A < 0){//пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
                 A++;}
             if (t > t2 & w > h & A*3 > w-wpH){//пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
                     A--;}
             if (t > t2 & w < h & T*7 > w-wpV){//пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
                 T--;}
             }
            return true;
      }
         
         private void doDraw(Canvas canvas) {
             
                canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
                //canvas.drawColor(Color.WHITE);
               int prefs = mSettings;
                if (w < h){
                    Bitmap fon = Bitmap.createScaledBitmap(foni, wpV, h, false);
                    canvas.drawBitmap(fon, T*7, 0, null);// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ    пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
                    Bitmap bmHalf = Bitmap.createScaledBitmap(pic, ws, hs, false);
                    canvas.drawBitmap(bmHalf, T*7+w/2, h-hs, null); 
                    canvas.drawText("пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ - " + prefs, 50, 70, mScorePaint);
                    }
                if (w > h) {
                    Bitmap fon = Bitmap.createScaledBitmap(foni, wpH, h, false);
                    canvas.drawBitmap(fon, A*3, 0, null);// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ    пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
                    Bitmap bmHalf2 = Bitmap.createScaledBitmap(pic, ws, hs, false);
                    canvas.drawBitmap(bmHalf2, A*3+w/3, h/2, null);
                    canvas.drawText("пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ - " + prefs, 50, 70, mScorePaint);}
                
                
                }
        
}

Service.java
Кликните здесь для просмотра всего текста

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
package com.livewallpaper;
 
import android.content.Context;
import android.content.SharedPreferences;
import android.service.wallpaper.WallpaperService;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
 
public class LiveWallpaperService extends WallpaperService {
 
    public static final String APP_PREFERENCES = "mysettings";
    public static final String APP_PREFERENCE_RADIUS = "preference_radius";
    
    
    @Override
    public Engine onCreateEngine() {
                   return new SampleEngine();
    }
 
    @Override
    public void onCreate() {
            super.onCreate();
    }
 
    @Override
    public void onDestroy() {
            super.onDestroy();
    }
 
    public class SampleEngine extends Engine implements SharedPreferences.OnSharedPreferenceChangeListener {
 
            
            private LiveWallpaperPainting painting;
            private SharedPreferences prefs;
            SharedPreferences mSettings;
            
            SampleEngine() {
                    SurfaceHolder holder = getSurfaceHolder();
                    prefs = LiveWallpaperService.this.getSharedPreferences(APP_PREFERENCES, 0);
                    prefs.registerOnSharedPreferenceChangeListener(this);
                    painting = new LiveWallpaperPainting(holder, getApplicationContext(), 
                                Integer.parseInt(prefs.getString(APP_PREFERENCE_RADIUS, "10")));
                    
                    
                                        
            }
 
            public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
painting.prefMethod();
    //mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
                //    super.onCreate(surfaceHolder);
                  
                                            }
 
 
 
 @Override
            public void onCreate(SurfaceHolder surfaceHolder) {
                mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
                    super.onCreate(surfaceHolder);
                    setTouchEventsEnabled(true);
            }
 
            @Override
            public void onDestroy() {
                    super.onDestroy();
                    // remove listeners and callbacks here
                    painting.stopPainting();
            }
 
            @Override
            public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
                    super.onSurfaceChanged(holder, format, width, height);
                    painting.setSurfaceSize(width, height);
            }
 
            @Override
            public void onSurfaceCreated(SurfaceHolder holder) {
                    super.onSurfaceCreated(holder);
                    painting.start();
                    
            }
 
 
            @Override
            public void onVisibilityChanged(boolean visible) {
                    if (visible) {
                            painting.resumePainting();
                    } else {
                            // remove listeners and callbacks here
                            painting.pausePainting();
                    }
            }
            
            @Override
            public void onSurfaceDestroyed(SurfaceHolder holder) {
                    super.onSurfaceDestroyed(holder);
                    boolean retry = true;
                    painting.stopPainting();
                    while (retry) {
                            try {
                                    painting.join();
                                    retry = false;
                            } catch (InterruptedException e) {}
                    }
            }
 
 
            @Override
            public void onTouchEvent(MotionEvent event) {
                    super.onTouchEvent(event);
                    painting.doTouchEvent(event);
            }
            
    }
    
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2016, 21:38
Готовые ответы и решения для Программирование Android При изменении настройки в приложении выскакивает ошибка:

При работе с IntentService выскакивает ошибка
Почему она выскакивает? Installation failed with message Failed to...

Ошибка приложения, при изменении эмулятора
Суть проблемы: запускаю приложение на эмуляторе под разрешение показанное на...

"В приложении произошла ошибка" при нажатии на кнопку перехода на какую-либо активность
Нужно было несколько функций в одно приложение соединить..Отдельно каждая из...

При запуске приложения на Android оно крашится и вылетает с ошибкой "В приложении %название% произошла ошибка"
Как посмотреть логи ошибки? Игра просто была установлена, она не...

Почему после выхода из приложения выскакивает ошибка?
Я начал писать программу для андроид (плеер) Скомпилировал, установил на свое...

Когда жму Назад выскакивает ошибка Unfortunately <my app> has stopped
Здравствуйте! Пишу игру под андроид. Все работает хорошо за исключением одного...

30
При изменении настройки в приложении выскакивает ошибка Программирование Android   Следующее сообщение темы 
Другие темы раздела
Программирование Android Из сайта игры сделать мобильное приложение без знания Java http://www.cyberforum.ru/android-dev/thread1878525.html
Здравствуйте, есть сайт с игрой работает на PHP+HTML+MYSQL. Все работает не плохо, но понадобилось мобильное приложение. Делать мобильную версию и втыкать в приложение андроид через webview не...
Программирование Android ORMLite - как писать в корень SDCARD (6 андроид) Ранее в другом топике я смог получить возможность создавать файлы и директории в корне SDCARD, однако я не вижу возможности применить полученный опыт для работы с базой при помощи ORMLite. Для... http://www.cyberforum.ru/android-dev/thread1878479.html
Проект не компилируется (подробности в теме) Программирование Android
Вот не хочет оно компилироваться, показывается неизвестная мне ошибка. Помогите
Андроид студия не видит библиотек, но приложение компилируется Программирование Android
Я вчера делал свое приложение, все сохранил а сегодня зашел, а андроид студия не видит библиотек, но приложение компилируется и на телефоне запускается. Как это исправить
Программирование Android Нужен исходник авто-навигатора для cordova http://www.cyberforum.ru/android-dev/thread1878178.html
нужен функционал навигации по картам. ищу готовые исходники. спасибо и извините за краткость.
Программирование Android Как выводить в бесконечном потоке значение переменной Подскажите как выводить переменную в Edit Text в бесконечном потоке подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru