androidをやってみる
いろいろあってandroidをやってみることになった
まず、Android SDKとNetBeans用のプラグインをダウンロード、インストールした
(Eclipseが標準らしいが、自分はNetBeansを使っていたので)
・HelloWorld
とりあえず、HelloWorldって出してみる
androidではコントロールの類はWidgetというものとして用意されているらしい
テキストを表示するにはTextViewというウィジットを使う
まず、プロジェクト作成、プロジェクトのタイプをAndroid Applicationにすると、
最低限必要な要素は勝手に生成される
とりあえずProject NameとActivity Nameは”Hello World”に
するとActivityクラスを継承したHelloWorldクラスが作成されるので、
そのOnCreate関数
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// ToDo add your GUI initialization code here
}
に
TextView tv = new TextView(this);
tv.setText("Hello World.");
setContentView(tv);
を追加
実行するとAndroidシミュレーターが起動し、以下のように表示される
・ボタンを作る
androidでは1つのActivity(androidアプリケーションの画面)に1つのViewしか表示できないらしい(WidgetもView)
複数のViewを表示するにはViewGroupの派生クラスのLayoutを使う
とりあえず、LinearLayoutクラスを使ってみる
テキストに加えボタンを追加する、OnCreate関数を以下のように変更する
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// ToDo add your GUI initialization code here
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
//
TextView tv = new TextView(this);
tv.setText("Hello World.");
layout.addView(tv);
//
Button bt1 = new Button(this);
bt1.setText("Button1");
layout.addView(bt1);
Button bt2 = new Button(this);
bt2.setText("Button2");
layout.addView(bt2);
setContentView(layout);
}
実行結果
・ボタンにイベントをつける
せっかくボタンを作ったので、イベントを作成してみる
イベントの取り扱いにはListenerというものを使う
今回はボタンをクリックの処理なのでOnClickListenerクラスを使う
各ボタンのSetOnClickListener関数でOnClickListenerクラスを登録する
テストのため、ボタン2をクリックしたらTextViewの表示を変える
tv変数をfinalに変更し、以下を追加
bt2.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
tv.setText("Click Button2.");
}
});
実行結果
・SurfaceView
次はSurfaceViewを使ってみる
SurfaceViewは独立したスレッドで描画が行われる、定期的な再描画などを行うアプリケーションに向いているクラスだそうだ
通常のViewではOnDraw関数内で引数canvasに描画するのが一般的だが、SurfaceViewでは任意のタイミングでcanvasを取得して描画を行う
canvasの取得、開放は以下のように行う
Canvas canvas = getHolder().lockCanvas(); getHolder().unlockCanvasAndPost(canvas);
以下ソース
public class HelloWorld extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// ToDo add your GUI initialization code here
SView view = new SView(this);
setContentView(view);
}
public class SView extends SurfaceView implements Runnable
{
Thread thread;
Paint paint;
int Cnt;
public SView(Context context)
{
super(context);
setFocusable(true);
paint = new Paint();
paint.setColor(Color.RED);
paint.setTextSize(100);
Cnt = 0;
thread = new Thread(this);
thread.start();
}
public void run()
{
while(true)
{
Canvas canvas = getHolder().lockCanvas();
if(canvas != null)
{
canvas.drawColor(Color.WHITE);
canvas.drawText(String.valueOf(Cnt),0,100,paint);
Cnt++;
if(Cnt >= 10000)
{
Cnt = 0;
}
getHolder().unlockCanvasAndPost(canvas);
}
}
}
}
}
実行結果
(おまけ)
Toastというものが結構便利
Toast.makeText(context,"Toast",Toast.LENGTH_SHORT).show();
とかで、メッセージを表示できる
終り
- Newer: 岩手県工業技術センター様
- Older: はじめてのjavaアプレット SimpleShoot
Copyright © 2002-2021 Innovative System Solutions Inc. All Rights Reserved.