コード例

Android用語集

カテゴリー: java.text  閲覧数:410 配信日:2014-03-27 18:12


例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>