アイエスエス株式会社 "Innovative System Solutions"
Androidをやってみる
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();
とかで、メッセージを表示できる
終り
はじめてのjavaアプレット SimpleShoot
上司「javaアプレット」
自分「はい」
というわけで javaアプレットというかjava自体から勉強開始.
最初の題材として,大昔にN88-BASICで作ったゲームをjavaアプレットで再現.
青丸(自分)と赤丸(敵)が上下で撃ち合うというシンプルな内容.
下側にいる青色戦闘機を操作して上側にいる侵略部隊を撃墜するゲーム(インベーダゲームの亜種という感じ).
真ん中にある壁をうまく利用して戦おう.
【最新の変更内容(ver.10/07/23-2)】
・爆発のエフェクトを追加
・自動操縦ON時はその旨を表示
・タイトルにバージョン表記
・稀にボスが登場.1発では倒せない(耐久力はランダム)&高い火力.
・敵が3機以上の場合は自機がバリア装備(1発だけ耐えられる)
【操作方法】
・マウス左ボタン:操舵.押していると左,離していると右に加速
・マウス右ボタン:攻撃.(押しっぱなし可)
・マウスホイールクリック:自動操縦のON/OFF, 勝利または敗北時にはリスタート
by nakiusagi3