teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

コード修正

2015/02/11 04:33

投稿

naia
naia

スコア20

title CHANGED
File without changes
body CHANGED
@@ -35,300 +35,367 @@
35
35
  };
36
36
 
37
37
 
38
- 【2月9日13:33追記
38
+ 【2月11日13:33更新
39
39
  以下のプログラムは指定された時間になると音を鳴らすというものです
40
40
  テキストを読み込みkizyunZikokuを設定できるように変えたいのですが、教えて頂いたコードを追加しても上手くいきませんでした
41
41
  どう修正すれば上手くいくでしょうか?
42
42
 
43
- ```lang-package sample.android.usingview;
43
+ ```lang-import java.applet.Applet;
44
+ import java.applet.AudioClip;
45
+ import java.awt.Color;
46
+ import java.awt.Font;
47
+ import java.awt.Graphics;
48
+ import java.awt.Image;
49
+ import java.io.IOException;
50
+ import java.nio.charset.Charset;
51
+ import java.nio.file.Files;
52
+ import java.nio.file.Paths;
53
+ import java.util.ArrayList;
44
54
  import java.util.Calendar;
55
+ import java.util.List;
45
56
 
46
- import android.content.Context;
47
- import android.graphics.Canvas;
48
- import android.graphics.Color;
49
- import android.graphics.Paint;
50
- import android.graphics.Rect;
51
- import android.media.MediaPlayer;
52
- import android.view.View;
53
57
 
58
+ public class Javatokei extends Applet
54
59
 
55
- class SampleView extends View {
56
- Paint paint = new Paint();
57
60
 
58
- //音楽ファイルの読み込み
59
- MediaPlayer chime = MediaPlayer.create(getContext(), R.raw.test);
60
61
 
61
-
62
- static int h;
63
- static int m;
64
- static int s;
65
-
66
- static int animetion = 0;
67
62
 
63
+
64
+ implements
65
+ Runnable
66
+ {
67
+ static final int DIM = 2; // DIM 要素の配列 を 1 つの要素にする
68
+
69
+
70
+ // 基準時刻
71
+ int kizyunZikoku[][] = {
72
+ { 9, 0 }, { 9, 55 },
73
+ { 10, 0 }, { 10, 55 },
74
+ { 11, 0 }, { 12, 0 },
75
+ { 12, 40 }, { 13, 40 },
76
+ { 13, 45 }, { 14, 45 },
77
+ { 14, 50 }, { 16, 0 }
78
+ };
79
+
80
+
81
+ static int h;
82
+ static int m;
83
+ static int s;
84
+
85
+
86
+
68
- // デフォルトフレームサイズ
87
+ // デフォルトフレームサイズ
69
- private int width = 800;
88
+ private int width = 640;
70
- private int height = 480;
89
+ private int height = 480;
71
-
72
-
90
+
91
+
73
- int A = width;
92
+ int A = 640;
74
- int B = 0;
93
+ int B = 0;
75
- int C = 0;
94
+ int C = 0;
76
- int D = 0;
95
+ int D = 0;
77
- int E = 0;
96
+ int E = 0;
78
- int X1 = 0;
97
+ int X1 = 0;
79
- int X2 = width;
98
+ int X2 = 640;
80
- int Y1 = 150;
99
+ int Y1 = 150;
81
- int Y2 = 250;
100
+ int Y2 = 250;
82
- int mm;
101
+ int mm;
83
-
84
- int kizyunZikokuNoKazu = 17;
102
+
85
-
86
-
103
+
104
+
87
105
 
106
+ int kizyunZikokuNoKazu = 17;
107
+
88
- boolean a = true;
108
+ boolean a = true;
89
- boolean saisyoNoFureemuDeAru = true;
109
+ boolean saisyoNoFureemuDeAru = true;
90
- int maeNiOtoWoNarasitaZikantai = -1;
110
+ int maeNiOtoWoNarasitaZikantai = -1;
91
-
92
- boolean greenflag = true;
93
-
94
- int zenntai = 7 * 60;
111
+ int zenntai = 7 * 60;
95
- int F;// 今の時間
112
+ int F;
96
-
113
+
97
- //全体を表すゲージ
114
+ //全体を表すゲージ
98
- int NowJikann = zenntai; //現在の残り時間
115
+ int NowJikann = zenntai; //現在の残り時間
99
- int Width = 480;
116
+ int Width = 480;
100
- double G;
117
+ double G;
101
-
118
+
102
- //譎ょ綾縺ョ險ュ螳?
119
+ //時刻の設定
103
- int hazimariNoZikoku = 60 * ( 60 * 9 + 0 ) + 0;
120
+ int hazimariNoZikoku = 60 * ( 60 * 9 + 0 ) + 0;
104
- int owariNoZikoku = hazimariNoZikoku + 60 * zenntai;
121
+ int owariNoZikoku = hazimariNoZikoku + 60 * zenntai;
122
+
123
+
105
124
 
106
-
125
+
107
- //時間に合わせてメッセージが変わる
126
+ //時間に合わせてメッセージが変わる
108
- String messages[] = {
127
+ String messages[] = {
109
- "",
128
+ "",
110
- " ",
129
+ " ",
111
- " ",
130
+ " ",
112
- " ",
131
+ " ",
113
- " ",
132
+ " ",
114
- " ", // 5
133
+ " ", // 5
115
- " ",
134
+ " ",
116
- " ",
135
+ " ",
117
- "おはようござます",
136
+ "おはようござます",
118
- "おはようございます",
137
+ "おはようございます",
119
- "今日も一日頑張りましょう!", // 10
138
+ "今日も一日頑張りましょう!", // 10
120
- "もうすぐお昼休みだ!",
139
+ "もうすぐお昼休みだ!",
121
- "休憩時間です!",
140
+ "休憩時間です!",
122
- "午後も頑張りましょう",
141
+ "午後も頑張りましょう",
123
- "こんにちは",
142
+ "こんにちは",
124
- "残り1時間をきりました", // 15
143
+ "残り1時間をきりました", // 15
125
- "お疲れ様でした",
144
+ "お疲れ様でした",
126
- "お疲れ様でした"
145
+ "お疲れ様でした"
127
- };
146
+ };
147
+
148
+
149
+
150
+
151
+
152
+ static Image OffBuf;
153
+
154
+ Thread th = null;
155
+ int delay = 100;
128
156
 
129
- public SampleView(Context context) {
130
- super(context);
131
- }
132
-
133
- @Override
134
- public void onDraw(Canvas c) {
157
+ public void init() {
135
-
136
- Paint paint = new Paint();
137
- paint.setStrokeWidth(2);//太さを2に
138
- paint.setColor(Color.argb(255, 255, 0, 0));//赤セット
139
- //文字の描画
140
- Paint p = new Paint();
141
- p.setARGB(255,100,100,255);
142
- p.setTextSize(64);
143
- p.setAntiAlias(true);
144
158
 
145
159
 
146
160
 
161
+ }
162
+
163
+ public void paint(Graphics g) {
164
+ OffBuf = createImage(640, 480);
165
+ Graphics OffG;//グラフィックス型変数を宣言
166
+ OffG = OffBuf.getGraphics();
167
+
147
- ///////////////
168
+ OffG.clearRect(0,0,getSize().width,getSize().height); //オフスクリーンの初期化
169
+ /////////////////////////////////////////////////////
148
- //全体のゲージ
170
+ //全体のゲージが徐々に減っていく
149
- ///////////////
171
+ // 棒グラフのパラメータを設定する
150
- p.setColor( Color.GREEN );
172
+ OffG.setColor( Color.GREEN );
151
- c.drawRect( 0, 300, width, 480, p );
173
+ OffG.fillRect( 0, 420, 640, 480 );
152
174
  G = ( zenntai - F ) * width / zenntai;
153
- p.setColor( Color.RED );
175
+ OffG.setColor( Color.PINK );
154
- c.drawRect( 0, 300, (int)G, 480, p );
176
+ OffG.fillRect( 0, 420, (int)G, 640 );
177
+ //デバッグ用 変数G
178
+ OffG.drawString("デバッグ用"+ G +"" , 60, 80 );//邨碁℃譎る俣
179
+
180
+ ////////////////////////////////////////////////////
155
181
 
156
- /////////////
157
- //セクションごとのゲージ
182
+ //ゲージ
183
+ OffG.setColor( Color.GREEN );
184
+ OffG.fillRoundRect(0, 100, 640, 71, 5, 10);
185
+ int geeziNoKawarime = X1 + (X2 - X1)*(C - B) / (A - B);
186
+ OffG.setColor( Color.PINK );
187
+ OffG.fillRoundRect(0, 100, geeziNoKawarime, 71, 5, 10);
188
+ OffG.setColor( Color.PINK );
189
+ Font font = new Font("TimesRoman",Font.ITALIC,42);
190
+ OffG.setFont( font );
191
+ OffG.drawString( "経過時間", 25, 300 );
158
- ///////////////////////
192
+ OffG.drawString("" + m +"分", 70, 250 );//邨碁℃譎る俣
193
+ OffG.setColor( Color.BLACK );
194
+ OffG.drawString( "/全体の時間/",200, 300 );
195
+ OffG.drawString( "" + E + "分", 350, 250 );
196
+ OffG.setColor( Color.GREEN );
197
+ D += 1;
198
+ OffG.drawString( "残り時間",450, 300 );
199
+ OffG.drawString("" + D +"分", 500, 250 );//残り時間
200
+ OffG.setColor( Color.BLACK );
159
201
 
160
- p.setColor( Color.GREEN );
202
+ // 午前 午後
161
- c.drawRect(0, 0, width, 71, p);
203
+ int jikann;
204
+ int gogo;
162
205
 
163
- int geeziNoKawarime = X1 + (X2 - X1)*(C - B) / (A - B);
164
- Rect rect = new Rect(0, 0, geeziNoKawarime,71);
165
- c.drawRect(rect, paint);
206
+ if ( h >= 13){
207
+ jikann = h - 12;
208
+ gogo = 1;
209
+ }
210
+ else{
211
+ jikann = h;
212
+ gogo = 0;
213
+ }
166
214
 
215
+
216
+ if( gogo == 1){
217
+ OffG.drawString( "午後"+jikann+"時"+mm+"分", 300,350 );
218
+ }else{
219
+ OffG.drawString( "午前"+h+"時"+mm+"分", 300,350 );
220
+ }
221
+ OffG.setColor( Color.BLACK );
222
+ OffG.drawString( "全体の残り時間"+F+"分", 100,400 );
223
+
224
+
225
+ //メッセージ
226
+ if (1 <= h && h <= 17) {
227
+ OffG.drawString(messages[h], 0, 30);
228
+ }
229
+ g.drawImage(OffBuf, 0, 0, this);
230
+
231
+
232
+ //時間を取得する
233
+ Calendar now = Calendar.getInstance();
234
+ h = now.get(now.HOUR_OF_DAY); //時
235
+ m = now.get(now.MINUTE); //分
236
+ s= now.get(now.SECOND); //秒
237
+ mm=now.get(now.MINUTE); //時間表示用
238
+
239
+ //
240
+
167
241
 
168
- ///////////////////////////////////
169
- // 文字表示
170
- //////////////////////////////////
171
- p.setColor( Color.RED );
172
- c.drawText( "経過", 25, 250 , p);
173
- c.drawText("" + m +"分", 25, 200 ,p);//邨碁℃譎る俣
174
- p.setColor( Color.BLACK );
175
- c.drawText( "/全体/",200, 250 ,p);
176
- c.drawText( "" + E + "分", 200, 200 ,p);
177
- p.setColor( Color.GREEN );
178
- D += 1;
179
- c.drawText( "残り",450, 250 ,p);
180
- c.drawText("" + D +"分", 450, 200 ,p);//残り時間
181
- p.setColor( Color.WHITE);
182
242
 
243
+
183
244
 
245
+
246
+
247
+ // その基準時刻と次の基準時刻の間でゲージを動かすか
248
+ boolean zikanWoHyouziSuru[] = {
249
+ true, true,
250
+ true, true,
251
+ true, true,
252
+ true, true,
253
+ true, true,
254
+ true, true
255
+ };
184
256
 
257
+ // 今の時刻がどこに該当するかを計算する
258
+ int imaNoZikoku = 60 * (60 * h + m) + s;//秒に変換
259
+ int maeNoKizyunZikoku = 0;
260
+ int tugiNoKizyunZikoku = 0;
261
+ int imaNoZikantai = -1;
262
+ for (int i = 0; i < 12; i++) {
263
+ int miteiruKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
264
+ if (imaNoZikoku < miteiruKizyunZikoku) {
265
+ if (i > 0) {
266
+ imaNoZikantai = i - 1;
267
+ maeNoKizyunZikoku = 60 * (60 * kizyunZikoku[i - 1][0] + kizyunZikoku[i - 1][1]);
268
+ tugiNoKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
269
+ }
270
+ break;
271
+ }
272
+ }
273
+ if (saisyoNoFureemuDeAru) {
274
+ maeNiOtoWoNarasitaZikantai = imaNoZikantai;
275
+ saisyoNoFureemuDeAru = false;
276
+ }
185
277
 
278
+ // 経過時間と残り時間を計算し。ゲージのパラメータを設定する
279
+ if (imaNoZikantai >= 0 && zikanWoHyouziSuru[imaNoZikantai]) {
280
+ // 表示する時間
281
+ m = (imaNoZikoku - maeNoKizyunZikoku) / 60;
282
+ E = (tugiNoKizyunZikoku - maeNoKizyunZikoku) / 60;
283
+ D = (tugiNoKizyunZikoku - imaNoZikoku) / 60;
284
+ //ゲージのパラメータ
285
+ A = tugiNoKizyunZikoku;
286
+ B = maeNoKizyunZikoku;
287
+ C = imaNoZikoku;
288
+ }
289
+ else {
290
+ // 表示する時間
291
+ m = 99;
292
+ E = 99;
293
+ D = 99;
186
- // 午後と午前切り替え
294
+ // ゲージパラメータ
187
- int jikann;
188
- int gogo;
295
+ A = 640;
296
+ B = 0;
297
+ C = 0;
298
+ }
189
299
 
300
+ // 全体の残り時間を計算する
301
+ if (imaNoZikoku < hazimariNoZikoku) {
190
- if ( h >= 13){
302
+ // 始まっていない
191
- jikann = h - 12;
303
+ F = 60 * zenntai;
192
- gogo = 1;
193
- }
304
+ }
194
- else{
305
+ else if (owariNoZikoku < imaNoZikoku) {
195
- jikann = h;
306
+ // 終わった後
196
- gogo = 0;
307
+ F = 0;
197
- }
308
+ }
309
+ else {
310
+ // 実行中
311
+ F = owariNoZikoku - imaNoZikoku;
312
+ }
313
+ // 棒グラフのパラメータを設定する
314
+ G = F * Width / (60 * zenntai);
315
+ // 谿九j譎る俣繧貞�縺ォ螟画鋤縺吶k
316
+ F = (F + 59) / 60;
198
317
 
318
+ // 情報が正しくなるように補正する
319
+ if (imaNoZikoku % 60 == 0) D--;
199
320
 
200
- if( gogo == 1){
201
- c.drawText( "午後"+jikann+"時"+mm+"分", 300,365 ,p);
202
- }else{
203
- c.drawText( "午前"+h+"時"+mm+"分", 300,365 ,p);
204
- }
205
- p.setColor( Color.BLACK );
206
- c.drawText( "全体の残り時間"+F+"分", 100,300 ,p);
207
321
 
322
+
208
323
 
324
+
325
+ if (maeNiOtoWoNarasitaZikantai != imaNoZikantai) {
326
+ maeNiOtoWoNarasitaZikantai = imaNoZikantai;
327
+ if (imaNoZikantai >= 0) {
209
- //メッセージ
328
+ //音を鳴らす
210
- if (1 <= h && h <= 17) {
211
- c.drawText(messages[h], 25, 150, p);
212
- }
213
-
214
-
215
- //TODO: 時刻を取得する
216
- Calendar now = Calendar.getInstance();
217
- h = now.getInstance().get(now.HOUR_OF_DAY); //譎ゅr莉」蜈・
218
- m = now.getInstance().get(now.MINUTE); //蛻?繧剃サ」蜈・
219
- s= now.getInstance().get(now.SECOND); //遘偵r莉」蜈・
220
- mm=now.getInstance().get(now.MINUTE); //時間表示用
221
-
222
- //
329
+ PutSound();
223
-
224
- // 基準時刻
225
- int kizyunZikoku[][] = {
226
- { 9, 0 }, { 9, 55 },
227
- { 10, 0 }, { 10, 55 },
228
- { 11, 0 }, { 12, 0 },
229
- { 12, 40 }, { 13, 40 },
230
- { 13, 45 }, { 14, 45 },
231
- { 14, 50 }, { 16, 0 }
232
- };
233
- // その基準時刻と次の基準時刻の間でゲージを動かすか
234
- boolean zikanWoHyouziSuru[] = {
235
- true, true,
236
- true, true,
237
- true, true,
238
- true, true,
239
- true, true,
240
- true, true
241
- };
242
-
243
- // 今の時刻がどこに該当するかを計算する
244
- int imaNoZikoku = 60 * (60 * h + m) + s;//秒に変換
245
- int maeNoKizyunZikoku = 0;
246
- int tugiNoKizyunZikoku = 0;
247
- int imaNoZikantai = -1;
248
- for (int i = 0; i < 12; i++) {
249
- int miteiruKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
250
- if (imaNoZikoku < miteiruKizyunZikoku) {
251
- if (i > 0) {
252
- imaNoZikantai = i - 1;
253
- maeNoKizyunZikoku = 60 * (60 * kizyunZikoku[i - 1][0] + kizyunZikoku[i - 1][1]);
254
- tugiNoKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
255
330
  }
256
- break;
257
- }
258
331
  }
259
- if (saisyoNoFureemuDeAru) {
332
+
260
- maeNiOtoWoNarasitaZikantai = imaNoZikantai;
261
- saisyoNoFureemuDeAru = false;
262
- }
263
333
 
264
- // 経過時間と残り時間を計算し、ゲージのパラメータを設定する
334
+
265
- if (imaNoZikantai >= 0 && zikanWoHyouziSuru[imaNoZikantai]) {
335
+
266
- // 表示する時間
267
- m = (imaNoZikoku - maeNoKizyunZikoku) / 60;
268
- E = (tugiNoKizyunZikoku - maeNoKizyunZikoku) / 60;
269
- D = (tugiNoKizyunZikoku - imaNoZikoku) / 60;
270
- // ゲージのパラメータ
271
- A = tugiNoKizyunZikoku;
272
- B = maeNoKizyunZikoku;
273
- C = imaNoZikoku;
274
- }
275
- else {
276
- // 表示する時間
277
- m = 99;
278
- E = 99;
279
- D = 99;
280
- // ゲージのパラメータソ
281
- A = width;
282
- B = 0;
283
- C = 0;
284
- }
285
336
 
286
- // 全体の残り時間を計算する
287
- if (imaNoZikoku < hazimariNoZikoku) {
288
- // 始まっていない?
289
- F = 60 * zenntai;
290
- }
337
+ }
291
- else if (owariNoZikoku < imaNoZikoku) {
292
- // 終わった後
293
- F = 0;
294
- }
295
- else {
296
- // 実行中
297
- F = owariNoZikoku - imaNoZikoku;
298
- }
299
- // 棒グラフのパラメータを設定する
300
- G = F * Width / (60 * zenntai);
301
-
302
- F = (F + 59) / 60;
303
338
 
304
- // 情報が正しくなるように補正する
305
- if (imaNoZikoku % 60 == 0) D--;
339
+ public void update(Graphics g) {
340
+ paint(g);
341
+ }
306
342
 
343
+ public void start() {
344
+ th = new Thread(this);
345
+ th.start();
346
+ }
307
347
 
348
+ public void stop() {
349
+ th = null;
350
+ }
308
351
 
309
-
352
+ public void run() {
310
-
311
- if (maeNiOtoWoNarasitaZikantai != imaNoZikantai) {
353
+ Thread me = Thread.currentThread();
354
+ while (th == me) {
355
+ try{
312
- maeNiOtoWoNarasitaZikantai = imaNoZikantai;
356
+ Thread.currentThread().sleep(delay);
313
- if (imaNoZikantai >= 0) {
357
+ }catch (InterruptedException e) {
358
+ }
314
- chime.start();
359
+ repaint();
315
360
  }
361
+ }
362
+
363
+ public static void PutSound(){
364
+ AudioClip ac = null;
365
+ ac = java.applet.Applet.newAudioClip(Javatokei.class.getResource("test.wav"));
366
+ // XXXXX はクラス名。Minipro.java の場合は Minipro。
367
+ ac.play();
368
+ /* 500ミリ秒待機する */
369
+ try{
370
+ Thread.sleep(12000);
371
+ }catch (InterruptedException e){
372
+ }
316
373
  }
374
+ public static int[][] loadIntArray(final String filename, final int dim) throws IOException {
375
+ List<int[]> nums = new ArrayList<int[]>();
317
376
 
377
+ //Files クラスを使用してファイルを行単位に読み込む。
378
+ List<String> line = Files.readAllLines(Paths.get(filename), Charset.forName("UTF-8"));
318
379
 
319
-
320
-
321
-
322
-
323
- //ループ処理(onDrawを実行)
324
- invalidate();
380
+ int pos = 0;
325
-
326
- //ウェイト処理
327
- try {
328
- Thread.sleep(100);
381
+ int[] vals = new int[dim];
329
- } catch (InterruptedException e) {
382
+ for (String s : line) {
383
+ vals[pos % dim] = Integer.parseInt(s);
384
+ pos++;
385
+ if (pos % dim == 0) {
386
+ nums.add(vals);
387
+ vals = new int[dim];
388
+ }
330
389
  }
390
+ if (pos % dim != 0) {
391
+ nums.add(vals);
392
+ }
393
+ return (int[][]) nums.toArray(new int[0][dim]);
331
394
  }
395
+
396
+
332
397
  }
398
+ }
399
+ }
333
400
  コード
334
401
  ```

4

誤字修正

2015/02/11 04:33

投稿

naia
naia

スコア20

title CHANGED
File without changes
body CHANGED
@@ -37,7 +37,7 @@
37
37
 
38
38
  【2月9日13:33追記】
39
39
  以下のプログラムは指定された時間になると音を鳴らすというものです
40
- 時間を読み込んだテキストからkizyunZikokuを設定できるように変えたいのですが、教えて頂いたコードを追加しても上手くいきませんでした
40
+ テキストを読み込みkizyunZikokuを設定できるように変えたいのですが、教えて頂いたコードを追加しても上手くいきませんでした
41
41
  どう修正すれば上手くいくでしょうか?
42
42
 
43
43
  ```lang-package sample.android.usingview;

3

追記

2015/02/09 05:52

投稿

naia
naia

スコア20

title CHANGED
File without changes
body CHANGED
@@ -32,4 +32,303 @@
32
32
  { 0, 0 }, { 0, 0 },
33
33
  { 0, 0 }, { 0, 0 },
34
34
  { 0, 0 }, { 0, 0 }
35
- };
35
+ };
36
+
37
+
38
+ 【2月9日13:33追記】
39
+ 以下のプログラムは指定された時間になると音を鳴らすというものです
40
+ 時間を読み込んだテキストからkizyunZikokuを設定できるように変えたいのですが、教えて頂いたコードを追加しても上手くいきませんでした
41
+ どう修正すれば上手くいくでしょうか?
42
+
43
+ ```lang-package sample.android.usingview;
44
+ import java.util.Calendar;
45
+
46
+ import android.content.Context;
47
+ import android.graphics.Canvas;
48
+ import android.graphics.Color;
49
+ import android.graphics.Paint;
50
+ import android.graphics.Rect;
51
+ import android.media.MediaPlayer;
52
+ import android.view.View;
53
+
54
+
55
+ class SampleView extends View {
56
+ Paint paint = new Paint();
57
+
58
+ //音楽ファイルの読み込み
59
+ MediaPlayer chime = MediaPlayer.create(getContext(), R.raw.test);
60
+
61
+
62
+ static int h;
63
+ static int m;
64
+ static int s;
65
+
66
+ static int animetion = 0;
67
+
68
+ // デフォルトフレームサイズ
69
+ private int width = 800;
70
+ private int height = 480;
71
+
72
+
73
+ int A = width;
74
+ int B = 0;
75
+ int C = 0;
76
+ int D = 0;
77
+ int E = 0;
78
+ int X1 = 0;
79
+ int X2 = width;
80
+ int Y1 = 150;
81
+ int Y2 = 250;
82
+ int mm;
83
+
84
+ int kizyunZikokuNoKazu = 17;
85
+
86
+
87
+
88
+ boolean a = true;
89
+ boolean saisyoNoFureemuDeAru = true;
90
+ int maeNiOtoWoNarasitaZikantai = -1;
91
+
92
+ boolean greenflag = true;
93
+
94
+ int zenntai = 7 * 60;
95
+ int F;// 今の時間
96
+
97
+ //全体を表すゲージ
98
+ int NowJikann = zenntai; //現在の残り時間
99
+ int Width = 480;
100
+ double G;
101
+
102
+ //譎ょ綾縺ョ險ュ螳?
103
+ int hazimariNoZikoku = 60 * ( 60 * 9 + 0 ) + 0;
104
+ int owariNoZikoku = hazimariNoZikoku + 60 * zenntai;
105
+
106
+
107
+ //時間に合わせてメッセージが変わる
108
+ String messages[] = {
109
+ "",
110
+ " ",
111
+ " ",
112
+ " ",
113
+ " ",
114
+ " ", // 5
115
+ " ",
116
+ " ",
117
+ "おはようござます",
118
+ "おはようございます",
119
+ "今日も一日頑張りましょう!", // 10
120
+ "もうすぐお昼休みだ!",
121
+ "休憩時間です!",
122
+ "午後も頑張りましょう",
123
+ "こんにちは",
124
+ "残り1時間をきりました", // 15
125
+ "お疲れ様でした",
126
+ "お疲れ様でした"
127
+ };
128
+
129
+ public SampleView(Context context) {
130
+ super(context);
131
+ }
132
+
133
+ @Override
134
+ public void onDraw(Canvas c) {
135
+
136
+ Paint paint = new Paint();
137
+ paint.setStrokeWidth(2);//太さを2に
138
+ paint.setColor(Color.argb(255, 255, 0, 0));//赤セット
139
+ //文字の描画
140
+ Paint p = new Paint();
141
+ p.setARGB(255,100,100,255);
142
+ p.setTextSize(64);
143
+ p.setAntiAlias(true);
144
+
145
+
146
+
147
+ ///////////////
148
+ //全体のゲージ
149
+ ///////////////
150
+ p.setColor( Color.GREEN );
151
+ c.drawRect( 0, 300, width, 480, p );
152
+ G = ( zenntai - F ) * width / zenntai;
153
+ p.setColor( Color.RED );
154
+ c.drawRect( 0, 300, (int)G, 480, p );
155
+
156
+ /////////////
157
+ //セクションごとのゲージ
158
+ ///////////////////////
159
+
160
+ p.setColor( Color.GREEN );
161
+ c.drawRect(0, 0, width, 71, p);
162
+
163
+ int geeziNoKawarime = X1 + (X2 - X1)*(C - B) / (A - B);
164
+ Rect rect = new Rect(0, 0, geeziNoKawarime,71);
165
+ c.drawRect(rect, paint);
166
+
167
+
168
+ ///////////////////////////////////
169
+ // 文字表示
170
+ //////////////////////////////////
171
+ p.setColor( Color.RED );
172
+ c.drawText( "経過", 25, 250 , p);
173
+ c.drawText("" + m +"分", 25, 200 ,p);//邨碁℃譎る俣
174
+ p.setColor( Color.BLACK );
175
+ c.drawText( "/全体/",200, 250 ,p);
176
+ c.drawText( "" + E + "分", 200, 200 ,p);
177
+ p.setColor( Color.GREEN );
178
+ D += 1;
179
+ c.drawText( "残り",450, 250 ,p);
180
+ c.drawText("" + D +"分", 450, 200 ,p);//残り時間
181
+ p.setColor( Color.WHITE);
182
+
183
+
184
+
185
+
186
+ // 午後と午前の切り替え
187
+ int jikann;
188
+ int gogo;
189
+
190
+ if ( h >= 13){
191
+ jikann = h - 12;
192
+ gogo = 1;
193
+ }
194
+ else{
195
+ jikann = h;
196
+ gogo = 0;
197
+ }
198
+
199
+
200
+ if( gogo == 1){
201
+ c.drawText( "午後"+jikann+"時"+mm+"分", 300,365 ,p);
202
+ }else{
203
+ c.drawText( "午前"+h+"時"+mm+"分", 300,365 ,p);
204
+ }
205
+ p.setColor( Color.BLACK );
206
+ c.drawText( "全体の残り時間"+F+"分", 100,300 ,p);
207
+
208
+
209
+ //メッセージ
210
+ if (1 <= h && h <= 17) {
211
+ c.drawText(messages[h], 25, 150, p);
212
+ }
213
+
214
+
215
+ //TODO: 時刻を取得する
216
+ Calendar now = Calendar.getInstance();
217
+ h = now.getInstance().get(now.HOUR_OF_DAY); //譎ゅr莉」蜈・
218
+ m = now.getInstance().get(now.MINUTE); //蛻?繧剃サ」蜈・
219
+ s= now.getInstance().get(now.SECOND); //遘偵r莉」蜈・
220
+ mm=now.getInstance().get(now.MINUTE); //時間表示用
221
+
222
+ //
223
+
224
+ // 基準時刻
225
+ int kizyunZikoku[][] = {
226
+ { 9, 0 }, { 9, 55 },
227
+ { 10, 0 }, { 10, 55 },
228
+ { 11, 0 }, { 12, 0 },
229
+ { 12, 40 }, { 13, 40 },
230
+ { 13, 45 }, { 14, 45 },
231
+ { 14, 50 }, { 16, 0 }
232
+ };
233
+ // その基準時刻と次の基準時刻の間でゲージを動かすか
234
+ boolean zikanWoHyouziSuru[] = {
235
+ true, true,
236
+ true, true,
237
+ true, true,
238
+ true, true,
239
+ true, true,
240
+ true, true
241
+ };
242
+
243
+ // 今の時刻がどこに該当するかを計算する
244
+ int imaNoZikoku = 60 * (60 * h + m) + s;//秒に変換
245
+ int maeNoKizyunZikoku = 0;
246
+ int tugiNoKizyunZikoku = 0;
247
+ int imaNoZikantai = -1;
248
+ for (int i = 0; i < 12; i++) {
249
+ int miteiruKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
250
+ if (imaNoZikoku < miteiruKizyunZikoku) {
251
+ if (i > 0) {
252
+ imaNoZikantai = i - 1;
253
+ maeNoKizyunZikoku = 60 * (60 * kizyunZikoku[i - 1][0] + kizyunZikoku[i - 1][1]);
254
+ tugiNoKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
255
+ }
256
+ break;
257
+ }
258
+ }
259
+ if (saisyoNoFureemuDeAru) {
260
+ maeNiOtoWoNarasitaZikantai = imaNoZikantai;
261
+ saisyoNoFureemuDeAru = false;
262
+ }
263
+
264
+ // 経過時間と残り時間を計算し、ゲージのパラメータを設定する
265
+ if (imaNoZikantai >= 0 && zikanWoHyouziSuru[imaNoZikantai]) {
266
+ // 表示する時間
267
+ m = (imaNoZikoku - maeNoKizyunZikoku) / 60;
268
+ E = (tugiNoKizyunZikoku - maeNoKizyunZikoku) / 60;
269
+ D = (tugiNoKizyunZikoku - imaNoZikoku) / 60;
270
+ // ゲージのパラメータ
271
+ A = tugiNoKizyunZikoku;
272
+ B = maeNoKizyunZikoku;
273
+ C = imaNoZikoku;
274
+ }
275
+ else {
276
+ // 表示する時間
277
+ m = 99;
278
+ E = 99;
279
+ D = 99;
280
+ // ゲージのパラメータソ
281
+ A = width;
282
+ B = 0;
283
+ C = 0;
284
+ }
285
+
286
+ // 全体の残り時間を計算する
287
+ if (imaNoZikoku < hazimariNoZikoku) {
288
+ // 始まっていない?
289
+ F = 60 * zenntai;
290
+ }
291
+ else if (owariNoZikoku < imaNoZikoku) {
292
+ // 終わった後
293
+ F = 0;
294
+ }
295
+ else {
296
+ // 実行中
297
+ F = owariNoZikoku - imaNoZikoku;
298
+ }
299
+ // 棒グラフのパラメータを設定する
300
+ G = F * Width / (60 * zenntai);
301
+
302
+ F = (F + 59) / 60;
303
+
304
+ // 情報が正しくなるように補正する
305
+ if (imaNoZikoku % 60 == 0) D--;
306
+
307
+
308
+
309
+
310
+
311
+ if (maeNiOtoWoNarasitaZikantai != imaNoZikantai) {
312
+ maeNiOtoWoNarasitaZikantai = imaNoZikantai;
313
+ if (imaNoZikantai >= 0) {
314
+ chime.start();
315
+ }
316
+ }
317
+
318
+
319
+
320
+
321
+
322
+
323
+ //ループ処理(onDrawを実行)
324
+ invalidate();
325
+
326
+ //ウェイト処理
327
+ try {
328
+ Thread.sleep(100);
329
+ } catch (InterruptedException e) {
330
+ }
331
+ }
332
+ }
333
+ コード
334
+ ```

2

誤字の修正

2015/02/09 04:39

投稿

naia
naia

スコア20

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- Javaでテキストファイルから数値を取り込んで二次配列に保存するにはどうしたらいいでしょうか
1
+ Javaでテキストファイルから数値を取り込んで順番に二次配列に保存するにはどうしたらいいでしょうか
2
2
  テキストファイルの中身
3
3
  9
4
4
  0

1

誤字の修正

2015/02/06 05:19

投稿

naia
naia

スコア20

title CHANGED
File without changes
body CHANGED
@@ -25,13 +25,11 @@
25
25
  16
26
26
  0
27
27
 
28
- ```lang-int hairetu[][] = {
28
+ int hairetu[][] = {
29
29
  { 0, 0 }, { 0, 0 },
30
30
  { 0, 0 }, { 0, 0 },
31
31
  { 0, 0 }, { 0, 0 },
32
32
  { 0, 0 }, { 0, 0 },
33
33
  { 0, 0 }, { 0, 0 },
34
34
  { 0, 0 }, { 0, 0 }
35
- };
35
+ };
36
-
37
- ```