Androidアプリ ビューに文字を表示する [Androidアプリ開発]
さて、Android版のHello WorldであるHelloAndroidを作成することができた。
Android SDKのプロジェクト作成ウイザードが、一通りのソースファイルを自動生成してくれたおかげて、1行もプログラムを書くことなく、HelloWorldが完成してしまった。
これでは、本当にプログラムを作ったとはいえない気がする。せめて自分でprintf関数を呼び出して好きな文字列を表示させてみたい。
C言語でのHello Worldは、printfで標準出力に"Hello, World\n"といった文字列を表示するものである。Androidアプリでは標準出力というものがない(本当はあるかも知れないが、ここではないと言い切ってしまう)。
そこで、標準出力ではなく、画面上に表示することにする。
Androidではアクティビティの中にあるビューに対して何かを表示することができる。Windowsでいうと、アクティビティがウインドウで、ビューはクライアントエリアといったところか。
HelloAndroidでは、ビューがmain.xmlで定義されたものになっている。main.xmlの定義を変更することで、表示される文字列を変更することもできるが、それでは面白くない。printfっぽいものを使っていないから。
printfっぽいものを使うには、自分でViewを作成する必要がある。作成したViewをsetContentViewで指定してやれば、自分で作ったビューが表示される。
まぁ、やってみるべし。その方が早い。
まずは、Viewを継承してHelloAndroidViewクラスを作る。
コンストラクタが必要とかいわれるので、作ってやる。
eclipseはimportなどを自動でやってくれるので便利。
とりあえず、ビューはできたものとする。これをsetContentViewで指定する。以下のようにHelloAndroidActivityの方を変更する。
これで、実行してみると、Hello Worldと表示されているものが出なくなった。失敗?、いやいやこれで正しいのである。HelloAndroidViewでは何も表示していないので、これで正解。
onDraw
ビューで何かを表示する場合は、ViewのonDrawメソッドをオーバーライドして行う。
onDrawには、Canvasが引数で渡ってくる。このcanvasオブジェクトを使って、画面に描画することができる。Paintオブジェクトは、描画時の色などを指定するためのもの。例では、文字の色を白に設定している。Canvasオブジェクトのメソッドには、drawCircleやdrawRectなど図形を描画するメソッドもある。例では、drawTextで文字列を描画している。
Android APIのドキュメントは以下のURLにある。
http://developer.android.com/
残念ながら、日本語に翻訳されたものは少ししかない。
本日はここまで。
サイト内を検索
Android SDKのプロジェクト作成ウイザードが、一通りのソースファイルを自動生成してくれたおかげて、1行もプログラムを書くことなく、HelloWorldが完成してしまった。
これでは、本当にプログラムを作ったとはいえない気がする。せめて自分でprintf関数を呼び出して好きな文字列を表示させてみたい。
C言語でのHello Worldは、printfで標準出力に"Hello, World\n"といった文字列を表示するものである。Androidアプリでは標準出力というものがない(本当はあるかも知れないが、ここではないと言い切ってしまう)。
そこで、標準出力ではなく、画面上に表示することにする。
Androidではアクティビティの中にあるビューに対して何かを表示することができる。Windowsでいうと、アクティビティがウインドウで、ビューはクライアントエリアといったところか。
HelloAndroidでは、ビューがmain.xmlで定義されたものになっている。main.xmlの定義を変更することで、表示される文字列を変更することもできるが、それでは面白くない。printfっぽいものを使っていないから。
printfっぽいものを使うには、自分でViewを作成する必要がある。作成したViewをsetContentViewで指定してやれば、自分で作ったビューが表示される。
まぁ、やってみるべし。その方が早い。
まずは、Viewを継承してHelloAndroidViewクラスを作る。
import android.view.View; public class HelloAndroidView extends View { }
コンストラクタが必要とかいわれるので、作ってやる。
import android.content.Context; import android.view.View; public class HelloAndroidView extends View { public HelloAndroidView(Context context) { super(context); // TODO 自動生成されたコンストラクター・スタブ } }
eclipseはimportなどを自動でやってくれるので便利。
とりあえず、ビューはできたものとする。これをsetContentViewで指定する。以下のようにHelloAndroidActivityの方を変更する。
public class HelloAndroidActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.main); setContentView(new HelloAndroidView(this)); } }
これで、実行してみると、Hello Worldと表示されているものが出なくなった。失敗?、いやいやこれで正しいのである。HelloAndroidViewでは何も表示していないので、これで正解。
onDraw
ビューで何かを表示する場合は、ViewのonDrawメソッドをオーバーライドして行う。
public class HelloAndroidView extends View { public HelloAndroidView(Context context) { super(context); } protected void onDraw(Canvas canvas){ Paint paint = new Paint(); paint.setColor(Color.WHITE); canvas.drawText("好きな文字書いてね", 20, 30, paint); } }
onDrawには、Canvasが引数で渡ってくる。このcanvasオブジェクトを使って、画面に描画することができる。Paintオブジェクトは、描画時の色などを指定するためのもの。例では、文字の色を白に設定している。Canvasオブジェクトのメソッドには、drawCircleやdrawRectなど図形を描画するメソッドもある。例では、drawTextで文字列を描画している。
Android APIのドキュメントは以下のURLにある。
http://developer.android.com/
残念ながら、日本語に翻訳されたものは少ししかない。
本日はここまで。
サイト内を検索
2012-01-18 09:30
nice!(0)
コメント(0)
Copyright Atsushi Asai Google+朝井淳
[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)
- 作者: 朝井 淳
- 出版社/メーカー: 技術評論社
- 発売日: 2015/03/03
- メディア: 単行本(ソフトカバー)
Access クエリ 徹底活用ガイド ~仕事の現場で即使える
- 作者: 朝井 淳
- 出版社/メーカー: 技術評論社
- 発売日: 2018/05/25
- メディア: 大型本
コメント 0