SimpleDateFormat
状態:-
閲覧数:1,217
投稿日:2014-03-23
更新日:2014-03-23
ロケールを考慮して日付時刻をフォーマット、解析
クラス構成
親クラス
コード例
例1
SimpleDateFormatクラスを使って、現在日時を表示
・テキストビューを使って、文字を表示
▼/Date/src/android/style/DateActivity.java
package android.style;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import static java.lang.Math.toRadians;
import static java.lang.Math.cos;
import static java.lang.Math.sin;
public class HelloAndroid7Activity extends Activity {
// 独自のビュー
DrawViewSample v;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
v = new DrawViewSample(getApplication());
setContentView(v);
}
@Override
protected void onResume() {
super.onResume();
v.onResume(); // スレッド終了の呼び出し
}
@Override
protected void onPause() {
super.onPause();
v.onPause(); // スレッド生成、開始の呼び出し
}
class DrawViewSample extends View {
int status = 0; // 状態管理変数
int ix = 0;
Thread timer;
// (1)スレッドとして実行したい処理の定義。無名クラスを用いてRunnableインタフェースを実装
Runnable task = new Runnable() {
public void run() {
// statusが0の間実行する
while (status == 0) {
ix++; // 座標更新のためインクリメント(円弧の座標を進めるため)
postInvalidate(); // 画面更新依頼。Viewクラスで定義されたメソッドで、画面の再描画をリクエストする。画面を無効にし、描き直すようにAndroidに伝える
try {
Thread.sleep(100); // 処理の間隔をあけるために、スレッドを100ミリ秒間待機
} catch (InterruptedException e) {
}
}
}
};
public DrawViewSample(Context context) {
super(context);
}
// (2)スレッドの開始
public void onResume() {
timer = new Thread(task);
timer.start();
}
// (3)スレッドの終了。Threadクラスのjoinメソッドを使って、スレッドが終わるまでアプリケーションを待機させている。この例では、joinメソッドでの待機を省いても問題ないが、スレッドが終わる前にアプリケーション本体が終了してしまう、といった事態を防ぐために、通常joinメソッドで待機するようにする
public void onPause() {
status = 1; // スレッドを終了させる
try {
timer.join(); // スレッドが終了するまで待機
} catch (InterruptedException e) {
}
}
@Override
protected void onDraw(Canvas canvas) {// Canvasクラスのオブジェクトが渡される
super.onDraw(canvas);
// 描き方の指定
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(2);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
// 座標の設定。Mathクラスの三角関数を用いて、円弧の座標を求めている
double r = toRadians(6 * this.ix);
double x = 100 + 50 * cos(r);
double y = 100 + 50 * sin(r);
// 線で円を描く
canvas.drawCircle((float)x, (float)y, 5, paint);
}
}
}
・xml … レイアウト
▼/res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>