サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
ichitcltk.hustle.ne.jp
Canvasの移動、拡大縮小、回転、歪(傾き) Canvasに描画する図形を、移動、拡大縮小、回転したり、歪(傾き)をもたせることができる。 translateメソッドを使うと、Canvasの座標を移動する事ができます。 rotateメソッドを使うと、Canvasの座標を回転する事ができます。 skewメソッドを使うと、Canvasの座標に歪(傾き)をもたせる事ができます。 scaleメソッドを使うと、Canvasの座標を拡大・縮小する事ができます。 各メソッドの書式は、以下のようになります。 void translate(float dx, float dy) void rotate(float degrees) final void rotate(float degrees, float px, float py) void skew(float sx, float sy) void
参照型変数と値が未定義の変数とnullと空文字 javaの 文字列 の、空文字 とnullとは同じものと勘違いしている人がいるので注意。 さらに、ややこしい事に、nullと「初期値が未定義である。」とは意味が異なる。 javaの データ型 には、 基本データ型 と 参照型 がある。 基本データ型はbyte,short,int,long,float, double,char,booleanの8つの型がある。 参照型は インスタンス や配列型)を指す。 基本データ型と参照型の違いとして、基本データ型には変数に値そのものが格納されるのに対して、 参照型の場合は、値の実体が格納されているメモリー位置を指し示す(参照する)値が格納されてる。 つまり、参照型変数にはデータそのものではなく、データの格納先(参照先)を示す値が入っている。 参照型にnullを代入すると、参照型の変数は何もオブジェクトを参照
グラフィックを描画するには、描画する位置を座標で指定する必要があります。 ここでは、座標と座標をあらわすクラスについてみていきます。 描画領域の取得 グラフィックの描画領域は、右上の点を(0,0)として右に向かってx座標の値が、下に向かってy座標の値が増えていきます。 Viewクラスの描画領域を取得するには、getWidthメソッドとgetHeightメソッドを使って取得できます。 SurfaceViewの描画領域も、Viewクラスのサブクラスですので、同じように取得できます。 Canvasクラスにも、getWidthメソッドとgetHeightメソッドがありますが、こちらはWindowのタイトルバーも含めた領域となるようです。 Canvasクラスにも、getWidthメソッドとgetHeightメソッドがあります。 また、View#onSizeChangedメソッドをオーバライトすると、
Canvasクラスのメソッドには、図形を描画する様々なメソッドが用意されています。 描画領域を塗りつぶす 描画領域を塗りつぶすCanvasクラスのメソッドには、以下のものがあります。 void drawColor(int color) Color値で、描画領域を塗りつぶします。 void drawColor(int color, PorterDuff.Mode mode) 2番目の列挙型引数PorterDuff.Modeの意味が理解できず、どのような使い方ができるのか、よくわかりませんでした。 PorterDuff.Modeの引数は「PorterとDuffの12のルール」というものを示しているようで、 どうやら、既に塗りつぶされている色の上に新しい色を合成するみたいです。 とりあえず、以下のURLが参考になりそうなので、載せておきます。 Merlinの魔術- Porter-Duffのルール
開発環境を整える事ができたのでこれで開発を開始する事ができるわけであるが、 その前にAndroid仮想デバイスの作成方法やエミュレータの起動方法について知っておいた方が良いだろう。 コマンドラインによるAVDの操作 エミュレータを起動するには、まずAVDを作成する必要があります。 AVDとは「Android Virtual Device」の略で日本語で言えばAndroid仮想デバイスという事になる。 AVDを作成する事で、どのような仕様のAndroid携帯端末をターゲットにして開発を進めるのを決める事になる。 例えば、作成するアプリケーションのAndroid APIの対応バージョンはいくつにするか, SDカードオプションのメモリーがどのくらいのマシーンでデバッグをおこなうかという事を決める事になる。 ターゲットリストの確認 コマンドラインを起動して以下のようなコマンドを実行する事で、どのよ
CanvasのMatrixとclipの状態の保存と復元 Canvasの、Matrixとclipの状態の保存と復元を、おこなう事ができます。 Matrixについては、「グラフィックス(8)-Canvasの移動、拡大・縮小、回転、歪(傾き)とMatrixの操作」を、参照して下さい。 clipについては、「グラフィックス(9)-描画領域のクリップ」を、参照して下さい。 保存と復元に関する、Canvasクラスのメソッドを、「Android Developers」のCanvasクラスのリファレンスより、抜粋して以下に列挙します。 int save() Saves the current matrix and clip onto a private stack. int save(int saveFlags) Based on saveFlags, can save the current matri
グラフィックスを描画するには、Canvasオブジェクトを取得して、このCanvasに描画をおこなうことになりますが、 このためにはColorクラスとPaintクラスがとういうものか知っておく必要があります。 実際にCanvasに描画をおこなう前に、このColorとPaintについて述べる事にします。 グラフィックの描画等で、色を指定するにはint型の値を使います。 ここでは、便宜上、このint型の値をColor値と呼ぶ事にします。 Color値は、16進0x00~0xffまでのRGB(赤緑青)値と透明度を示すアルファ値の、4つの要素からなります。 RGB(赤緑青)とアルファ値についてはRGB を参照して下さい。 Colorクラスには、色を指定するのに便利な定数やメソッドが、定義されています。 Colorクラスには、あらかじめよく使う色を示す以下のような、int型の定数が定義されています。
トーストを使うと、アプリケーションの状態が変化した事をユーザに通知するためのポップアップWindowに、メッセージを表示させる事ができる。 トーストは、ウィンドウを持たないコンポーネントでも表示させる事ができるので、 バックグランドで何か処理を行った後の状態を、一時的にユーザに通知するのに適している。 トーストは表示した後、短い時間の後、直ぐに消えてしまう。 また、表示だけで、データの入力等の操作をおこなう事はできない。 このような目的には、トーストとは別のNotificationを使う。 トーストの表示 まず、トーストを表示させる簡単なサンプルを以下に示す。 トーストプログラム1(ToastSample1.java) このプログラムを実行して、「トーストを表示」ボタンを押すと、 以下の図のような「Hello toast!」というメッセージが、短い時間であるが表示される。 makeText
Spinnerウィジェットは、ドロップダウンリストを表示するためのウィジェットです。 Spinnerウィジェットは、ListViewウィジェットと同じく、AdapterViewクラスのサブクラスのサブクラスです。 ListViewと同じく、ドロップダウンにて表示されるデータを指定するのに、Adapterオブジェクトを使います。 Spinnerウィジェットの基本形 Spinnerウィジェットの、基本的な使い方のサンプルを、以下に示します。 リスト1(SpinnerSample1.java) このプログラムを実行すると、以下の図のようなSpinnerウィジェットが、画面に表示されます。 Spinnerウィジェットをクリックすると、以下のようなリストが表示されます。 リストの項目が選択されると、39~41行目のコードにより、トーストが表示されます。 33行目のOnItemSelectedList
「Pleiades All in One 日本語ディストリビューション (JREあり)」 (Eclipse 3.5.1 Galileo Windows 32bit ベース / Pleiades All in One 3.5.1.20090930)に SAStrutsのプラグインをインストールしてみる。 eclipseのインストールについてはeclipseのインストール(Eclipse 3.5.2 Galileo編) を参照 「Seasar Plugin3.3」プラグインのインストール Eclipseのメニューから「ヘルプ(H)」→「新規ソフトウェアのインストール...」にて表示されるダイアログボックスにて 「追加(A)...」ボタンを押して表示される「サイトの追加」ダイアログボックスの名前(N)欄に「Seasar Plugin3.3」を ロケーション(L)欄に「http://eclipse
drawBitmapメソッドの簡単なサンプル CanvasクラスのdrawBitmapメソッドを使って、Bitmapを描画する事ができます。 以下に、drawBitmapメソッドを使ってBitmapを描画する、簡単なサンプルを示します。 このプログラムを実行するには、res/drawableデレクトリに、画像ファイルsample.JPGが保存されている必要があります。 画像ファイルは、JPGだけでなくBMP,PNG,GIFも表示可能なようです。 BitmapFactory.decodeResourceメソッドは、res/drawableデレクトリの画像ファイルを、Bitmapオブジェクトとして取得するメソッドです。 drawBitmapメソッドは、CanvasにBitmapオブジェクトを描画するメソッドで、引数の意味については、次の「drawBitmapメソッドのオーバロードメソッド」を参
seasarのSuper Agile Struts - Feature Referenceを参考に 新しいアクションの追加で作成した exsample1に、Validateの機能を追加してみる。 メッセージリソースも修正するので、ついでにJSPページの表示項目名もメッセージリソースから取得するよう修正した。 入力ページの修正 入力ページindex.jspをsrc/main/webapp/WEB-INF/view/exsample3にコピーし<html:errors>タグを追加する。 <%@page pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>exsample3入力フォーム</title> </head> <b
AlarmManagerを使うと、アンドロイドのコンポーネントを指定した時間に呼び出す事ができる。 また、一定の時間間隔で呼び出す事もできる。 サンプルプログラム サンプルプログラムをまず示します。 このプログラムは、AlarmManagerを使って指定した時間にブロードキャスト レシーバを呼び出します。 ブロードキャスト レシーバでは、トーストとログに呼び出し時の情報を出力します。 eclipseに新しいアンドロイドプロジェクトを作成して、以下のようなアクティビティクラスを記述します。 プログラム(1)-AlarmManagerを使ってブロードキャストレシーバを呼び出すアクティビティクラス(AlarmManagerSample.java) プロジェクトに、BroadcastReceiverを継承したクラスを追加して、以下のようなコードを記述します。 プログラム(2)-呼び出されるブロード
SQLiteデータベースのデータ等の、アプリケーションが管理しているリソースは、通常は他のアプリケーションから使う事はできません。 しかし、住所録などのデータを一元的に管理して、いろいろなアプリケーションから利用できると便利です。 アンドロイドのコンポーネントの1つであるコンテンツ プロバイダの実装により、 アプリケーションの管理しているリソースを、他のアプリケーションから利用する事ができます。 以前に、「ListViewとListActivity(3)-応用編」の「SimpleCursorAdapterクラス-コンテンツプロパイダよりデータを取得してリスト表示する。」で アンドロイドの「連絡先」データを、アンドロイドにはじめから用意されているコンテンツプロパイダーを利用してアクセスして、 ListViewウィジェットに表示する例を紹介しました。 コンテンツプロパイダで管理するデータとして
描画領域をクリップすると、クリップされた領域のみが描画対象になります。 クリップする領域を指定するCanvasクラスのメソッド 以下のCanvasクラスのメソッドを使って、クリップする領域を指定します。 boolean clipRect(float left, float top, float right, float bottom) float型の引数left, top, right, bottomで指定された矩形領域を、Region.Op.INTERSECTでクリップします。 boolean clipRect(float left, float top, float right, float bottom, Region.Op op) float型の引数left, top, right, bottomで指定された矩形領域を、Region.Opの指定に従ってクリップします。 boolea
AndroidではデータベースとしてSQLiteが標準でサポートされています。 Androidでデータベースを使う前に、WindowsでJavaからSQLiteを使う方法について、調べてみました。 SQLiteのインストール インストールと言っても、特別な事をする必要はありません。 データベースサーバ用の特別のプログラムをインストールする必要は無く、 コマンドラインから使うだけであればSQLite Download Pageより 「Precompiled Binaries For Windows」の下の 「sqlite-3_6_23_1.zip」をダウンロードしてきて、適当なデレクトリに解凍してパスを通すだけです。 「Microsoft Access」 のMDBファイルをコマンドラインツールを使ってアクセスするようなイメージになります。 必要無いが、後で何かの時に使うかもと思って、いちおう
アンドロイドのSDKがアップデートされた。 「Android 2.2 SDK」(コードネーム:Froyo) 「 開発環境を整える。」で「Android 2.1 SDK」をインストールしたが、 今回は、これを「Android 2.2 SDK」にアップデートしてみる。 SDKアップデート始末記 Android Developersのドキュメント をみると、「Android SDK and AVD Manager」からアプデートすれば良いような事が書いてある。 これでアップデートは楽勝かと思いきや... まず、eclipseより「Android SDK and AVD Manager」を起動して、アップデートをこころみる。 eclipseを起動し、「メニュー」→「ウィンドウ(W)」→「Android SDK and AVD Manager」を選択する。 「Android SDK and AVD
ここでは、アンドロイド・アプリケーション開発の初めの一歩として、eclipseに新しいアンドロイド・プロジェクトを作成して それをエミュレータで実行してみる。 基本的にはgoogleのWebサイトにある、チュートリアル Hello, World - Android Developers のパクリではあるが自分の頭を整理する意味で私なりにまとめてみた。 EclipseでAndroidプロジェクトを作成 Eclipseのメニューから「ファイル(F)」→「新規(N)」→「プロジェクト...(R)」を選択する。 「新規」ダイアログボックスにて「Android」の下の「Android プロジェクト」を選択して次(N)ボタンを押す。 「新規 Android プロジェクト」ダイアログボックスが表示されるので、下図のように入力して完了ボタンを押すとプロジェクトが作成される。 それぞれの入力項目と意味は以下
アンドロイドでは、SQLiteというデータベースが、標準でサポートされています。 SQLiteはWindow等の他のOSでも使う事ができ、JavaでもJDBCを使ってアクセスする事ができます。 SQLiteになじみの無い方は、 先に「JavaとSQLiteデータベース」 を参照して、まず、SQLite単体での使い方に、慣れてみると良いと思います。 データベースの作成とオープン - SQLiteOpenHelperクラスとSQLiteDatabaseクラス アンドロイドでは、SQLiteDatabaseオブジェクトを使って、データベースを操作します。 SQLiteDatabaseオブジェクトを取得するには、通常、ヘルパークラスとして、SQLiteOpenHelperクラスを継承したクラスを作成して、 このクラスよりSQLiteDatabaseオブジェクトを取得します。 以下に、その例を示しま
xmlリソースファイルにメニューを定義して、これを読み込んで表示させる事ができる。 xmlリソースファイルの作成 メニューのリソースファイルを作成するには、eclipseのパッケージ・エクスプローラにてAndroidプロジェクトを選択し、 右クリックにて表示されるメニューより、「新規(W)」→「Android XML File」を選択する。 以下のようなダイアログボックスが表示されるので、 ファイル欄にxmlリソースファイルを保存するファイル名を(ここではmenu.xmlを入力)、 「What type of resource would you like to create?」の下に表示されているラジオボタンより、 「メニュー」をチェックして完了ボタンを押す。 これにより、「プロジェクトルート/res/layout/」デレクトリに、 xmlファイルが作成され、以下のような画面が表示される
グラフィックスは機能が豊富で、またしても、理解できない部分が多くありましたが、とりあえずわかる範囲でまとめてみました。 まず、グラフィックスの最初の一歩として、今回は、Viewクラスへのグラフィックの描画に限定して、みていくことにします。 グラフィックスの基本形-Viewクラスへのグラフィックの描画 まずは、以前に「独自のViewクラスを使う」 で紹介したコードを基に、Viewクラスの描画領域に簡単な図形を表示してみます。 リスト1(GraphicsSample1.java) Viewクラスの場合、通常、onDrawメソッドをオーバーライトして、そこにグラフィックを描画するコードを記述します。 onDrawメソッドでは、Paintオブジェクトを作成して、描画色を緑色に設定した後、左上端に四角形の図形を描画しています。 このコードを実行すると、以下のような画面が表示されます。 ユーザからのイ
「グラフィックス(1)-Viewクラスへの描画」 では、グラフィックの描画にViewクラスを使っていましたが、これをSurfaceViewクラスを使って実現する事もできます。 SurfaceViewは、Viewクラスを継承したクラスですが、Viewクラスよりも高速に描画ができ、ゲームプログラミング等に適しています。 通常のウィジェットと違い、別スレッドで直接GUI操作をおこなう事もできます。 今回は「グラフィックス(1)-Viewクラスへの描画」で紹介した、リスト1~リスト3のプログラムを、 SurfaceViewで実現するにはどのようにしたらよいか、についてみていきます。 SurfaceViewによるグラフィックスの基本形-静止した画像の描画 「グラフィックス(1)-Viewクラスへの描画」のリスト1では、 Viewを使って、静止した画像を描画していましたが、これをSurfaceView
アンドロイドでリスト表示をおこなうには、ウィジェットであるListViewクラスを使う方法と、 リスト表示専用のアクティビティであるListActivityクラス使う方法とがあります。 リスト表示はAdapterクラスと組み合わせて使う事が前提となっており、 いろいろなAdapterクラスとの組み合わせにより、さまざまなパターンが存在していてややこしい。 Adapterクラスを組み合わせたいろいろなパターンについては、「ListViewとListActivity(3)-応用編」で述べる事として、 今回は、ListViewとListActivityとArrayAdapterクラスを組み合わせた、基本的なパターンについてみていく。 ListViewの基本形とArrayAdapterクラス まず、ListViewウィジェットの基本形として、よく使うであろうArrayAdapterを使った簡単なサ
アンドロイドには標準でログを出力するAPIがそなわっており、デバッグをおこなう際に便利である。 ログの出力 Logを出力するには、Logクラスのメソッドを使用する。 ログには4種類のログが存在し、出力するログの種類によって使うメソッドが決まっている。 以下に、アクティビティ起動時に4種類のログを出力するサンプルを示す。 ログ出力メソッドの第1引数にはログの発生源を示す文字列(タグという,ここではアクティビティのクラス名を使用) を、第2引数にはログに記録したいメッセージを指定する。 指定する引数には他のパターンも存在するが、それについては APIのリファレンスを参照。 APIリファレンスには、冗長ログは開発時にしか記録されない, デバッグログは実行環境では削除される、ような事が書いてある。 ログ出力の確認 eclipseでログ出力を確認するには、「LogCat」ビューを使う。 eclips
ProgressDialogのサンプルプログラムをながめていたら、Handlerという見なれぬクラスが使われていた。 Handlerクラスて何だろう、と思って調べてみたらすっかりはまってしまった。 他の記事もそうなのだが、今回は特にサンプルコードをもとに推察で書いている部分が多いので、誤りがあればご容赦いただきたい。 動作確認は、きちんとしているつもりであるが。 別スレッドでのGUI操作の問題点 アンドロイドでも、通常のjavaプログラムのようにThreadクラスが使える。 しかし、アンドロイドのGUIはシングルスレッドにしか対応していないため、 ウィジェット等のGUIオブジェクトを生成したスレッドとは別のスレッドから、ウィジェットに直接アクセスする事はできない。 まず次のプログラムを実行して、別スレッドから直接ウィジェットの操作を試みてみる。 このプログラムを実行してボタンを押すと、新し
今回は、ListViewとListActivityのイベント処理について、みていきます。 ListViewのイベント処理 ListViewのイベント処理の例として、ここではOnItemClickListenerとOnItemSelectedListenerの例を示します。 リスト7(ListViewSample5.java) このプログラムを実行して、リスト項目を選択したりクリックしたりしてその時のログ出力を参照してみると、どのようなタイミングでイベントが発生するかがわかります。 リスト項目を選択すると、onItemClickメソッドが呼ばれます。 リスト項目を選択した状態で、リスト項目をクリックすると、リスト項目は非選択の状態になり、 onNothingSelectedメソッドが呼ばれ、その後onItemClickメソッドが呼ばれることになります。 ListActivityのイベント処理
アンドロイド・プロジェクトを作成した時に生成されるのはどのようなファイルだろう? プロジェクトを作成した時に入力した情報は、どこに保存されているのだろうか? アンドロイドプロジェクトを構成するファイルについて、大雑把ではあるがまとめてみた。 前回までに作成したHelloAndroidプロジェクトのデレクトリ構造は以下のようになっている。 srcデレクトリは説明の必要も無い、javaのソースコードを保存するためのデレクトリである。 Android 2.1と表示されている部分も見てのとおりアンドロイドAPIのjarファイルを指している。 当然、アンドロイドプロッジェクト作成時にビルド・ターゲットの指定を「Android 2.1」以外に指定すれば、この表示名も変更される事になる。 アプリケーションの設定情報 アンドロイド・プロジェクトのルートデレクトリには、以下の2つアプリケーションの設定情報を
Androidでウィジェット(Viewクラス)のイベントの処理をおこなうには、イベントリスナーと呼ばれるインターフェースをインプリメントしたクラスを作成して、 このクラスをウィジェットと結び付けます。 例えば、ウィジェットがクリックされた時に実行されるクリックイベントの処理を記述するには、 イベント処理を記述するクラスにView.OnClickListenerインターフェースをインプリメントして、 ViewクラスのsetOnClickListenerメソッドを使ってこのクラスと結び付けます。 以下に、その例を示します。 上記のプログラムでは、TextViewウィジェットがクリックされた時にonClickメソッドが呼び出され、 クリックされたTextViewクラスのオブジェクトの表示文字列を変更します。 イベント処理メソッドは通常、Viewクラスの引数を持ち、その値はイベントの発生源となった
今回は、ListViewとAdapterクラスを組み合わせた、いろいろなパターンについてみていきます。 プログラムはListViewウィジェットを使って書かれていますが、これらはすべて、ListActivityを使って実現する事もできます。 BaseAdapterクラスを拡張してリスト項目のレイアウトを自由にカスタマイズする。 BaseAdapterは、ArrayAdapterクラスのスーパクラスです。 BaseAdapterを継承したクラスには、ArrayAdapterの他にもCursorAdapter, SimpleAdapter等があります。 BaseAdapterクラスは、他のAdapterクラスの基となるクラスです。 このBaseAdapterクラスを拡張して、独自のAdapterクラスを定義して、getViewメソッドをオーバライトすることで、 リスト項目のレイアウトを自由にカ
次のページ
このページを最初にブックマークしてみませんか?
『ichitcltk.hustle.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く