キー/タッチ/トラックボールのイベントをトリガーに描画
SurfaceViewは入力を拾う方法がいろいろあります。
| 表2 SurfaceViewの入力イベント | ||||||||||
|
ここでは、キーイベント、タッチイベント、トラックボールイベントについて見てみます。難しいことは何もなく、SurfaceViewを継承したクラスで、メソッドをオーバーライドするだけです。
![]() |
| 図5 キーイベント(左)とタッチイベント/トラックボールイベント(右) |
- - PR -
タッチイベント/トラックボールイベントは、直前の状態に上書きしているので、残像のように表示されます。
どちらもSurfaceViewに用意されているコールバックメソッドをオーバーライドするだけですが、気を付けなければならないのは、SurfaceViewがフォーカスを受け取れるようにsetFocusable(true)を呼び出すこと、さらにキーイベントの場合は、requestFocus()などでフォーカスを与えてやることです。
透明な背景のSurfaceViewを作るには
最後に、透明なSurfaceViewの作り方を説明します。サンプルに「Transparent」というActivityがあります。これを起動すると、以下のような画面になります。
![]() |
| 図6 透明なSurfaceView |
すでに今回のサンプルアプリ(SurfaceView Example.zip)をダウンロードして動作させていた読者にとってはいまさらなのですが、今回のActivityの1つはAndroidのテーマを適用しています。
<activity android:name=".Main"
android:theme="@android:style/Theme.Wallpaper"
android:label="SurfaceView Example">
AndroidManifest.xmlは上記のように「android:theme」という属性を設定してあります。壁紙のテーマですね。
さて、SurfaceViewを透明にする方法ですが、ポイントは2つあります。
■ 【1】AndroidManifest.xmlのActivityの定義
1つはAndroidManifest.xmlのActivityの定義です。
<activity android:name=".Transparent"
android:label="Transparent SurfaceView"
android:theme="@android:style/Theme.Translucent" />
透明にしたいActivityのandroid:theme属性に「@android:style/Theme.Translucent」、またはその派生値を設定します。
■ 【2】ソースコードで行うこと
ソースコード上では、SurfaceHolderのsetFormat(int)にPixelFormat.TRANSPARENTまたはPixelFormat.TRANSLUCENTを指定します。
public MySurfaceView(Context context) {
super(context);
getHolder().setFormat(PixelFormat.TRANSPARENT);
getHolder().addCallback(this);
setFocusable(true);
}
おまけ 「Viewの透明化をするには」 |
||
今回のデモアプリには、Viewの透明化を行うサンプルも、おまけで入れておきました。
完全透明だけではなく、半透明もサポートしています。方法を簡単に説明します。以下のようなXMLを「values」フォルダに定義します。ファイル名は任意でよいです。
次に、AndroidManifest.xmlの該当のActivityに、先ほど定義した<style>要素をandroid:themに指定します。 |
OpenGL ESを使うと、もっとイロイロできる
これで背景が透明なActivityとSurfaceViewの完成です。ただ残念なことに、透明のSurfaceViewは一度何かを書いてしまうと、後から透明色で塗りつぶせないため、使い勝手がいまひとつです。
背景を透明にしたまま、かつViewの内容を更新したい場合、Viewを使うか、SurfaceViewのサブクラスであるGLSurfaceView(OpenGL ES)を使うか、のどちらかになってしまいます。
OpenGL ESについては、今後取り上げたいテーマなので、そのときに詳しく説明しようと思います。OpenGL ESとAndroidについては、下記記事もご参照ください。
■ @IT関連記事
| Androidアプリで高速描画チューニングをするコツ インタビュー特集:Google直伝!(1) Googleのさまざまなサービスを使いこなすコツをグーグル担当者に聞くインタビュー。初回は日本で端末販売がせまるAndroidについて 「リッチクライアント & 帳票」フォーラム 2009/4/21 |
||
| SIGGRAPH
2003に見るJavaの進化 [コラム]安藤幸央のランダウン(21) サンディエゴで開催された「SIGGRAPH 2003」では、いよいよJavaの標準グラフィックAPIの策定の動きが見えた 「Java
Solution」フォーラム 2003/9/10 |
| 今日から始める! Androidケータイアプリ作成の基礎 デザイナも知っておきたい「Androidアプリ」とは 日に日に国内でのニュースが増えているAndroidケータイ。その特徴を押さえてアプリ作成を始めるための基礎を紹介します |
||
| 業務用途で本当に“使える”モバイル端末はどれだ? 新時代の業務用モバイルRIAを考える(1) iPhoneやAndroid、ネットブックの登場で盛り上がるモバイル業界。しかし業務での利用には“紛失”や操作性などの問題がある 「リッチクライアント & 帳票」フォーラム 2009/2/26 |
||
| Androidのオープン性でガラパゴスから脱出しよう ものになるモノ、ならないモノ(29) ガラパゴスとやゆされる日本の高機能ケータイ。閉塞感に満ちた国内市場から世界に出るための解は、Androidのオープン性にある 「Master of IP Network」フォーラム 2008/12/1
|
||
| Androidは雇い主の分身として仕事をするエージェント Google Developer Day 2008特集(1) Androidの生みの親、アンディ・ルービン氏が、Androidに込めた思いと展望を語る。「Google Android入門」の著者の嶋氏が聞く 「リッチクライアント & 帳票」フォーラム 2008/6/13 |
||
| Google Android用携帯アプリ作成のための基礎知識 小山博史のJavaを楽しむ(9) 先日公開されたGoogleの携帯端末プラットフォームAndroid。開発環境の整え方やアプリの作り方、作成に便利なツール、SDKの中身などを解説 「Java
Solution」フォーラム 2007/12/3 |
ケータイ分野以外の組み込みデバイス開発の現場でも注目を集めている「Android」。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報・最新動向をお届けします! |
| Index | ||||||||
|
||||||||
Androidで動く携帯Javaアプリ作成入門 バックナンバー 連載インデックスへ»
- 第1回 Android Market配布を目指しEclipseでHelloWorld!
- 第2回 Androidアプリ作成の基本“Activity”とは何か?
- 第3回 ブラウザや地図、ストリートビューの基、Intentとは?
- 第4回 簡単でワクワクするAndroidウィジェット10連発!
- 第5回 Androidアプリの使いやすさを左右する5つのレイアウト
- 第6回 AndroidでSQLiteのDB操作をするための基礎知識
- 第7回 常駐アプリが作成できるAndroidの“サービス”とは
- 第8回 アプリを国際化してAndroid Marketから世界へ発信
- 第9回 Netbookにも広まるAndroidで、かつてないWeb体験を
- 第10回 Androidのホーム画面に常駐するアプリを作るには
- 第11回 Android 1.6のジェスチャーとテキスト読み上げを使う
- 第12回 SurfaceViewならAndroidで高速描画ゲームが作れる
- 第13回 iPhoneより多彩なAndroidのセンサをアプリで操作
- 第14回 Android 2.1の新機能で作る、美しく燃える“待ち受け”
- 第15回 Android NDKでJNIを使用してアプリを高速化するには
- 第16回 地図/位置情報/GPSを使うAndroidアプリを作るには
- 第17回 もはやケータイに必須のカメラをAndroidで制御しよう
- 第18回 開発者が知っておきたいAndroid 2.2新機能 12連発
- 第19回 XMLレイアウトでAndroidアプリに“設定画面”を追加
- 第20回 Androidアプリで“アニメーション”するための基礎知識
- 第21回 アニメーションでAndroidに独創的な画面エフェクトを
- 第22回 開発者が知って得するAndroid 2.3の新機能18選
- 第23回 Android 3.0の新APIで簡単ドラッグ&ドロップ実装
- 第24回 Androidの画面の大きさの違いを解決するFragments
- 第25回 Compatibility packageで2.x系でもマルチサイズ対応
- 第26回 開発者が知らないと損するAndroid 4.0の新機能44選
- 第27回 Android 4.0でアプリ開発を始めるための環境構築
- 第28回 Android 4.0で注目の顔認識をアプリに組み込むには
- 第29回 Androidのウィジェットにノーティフィケーションするには
- 第30回 Androidアプリでマルチメディアを扱うための基礎知識
- 第31回 Android 4.0のサービス/プロセス間通信の基本
| ご意見、ご感想は Smart&Social 会議室へどうぞ |
| Smart&Social フォーラム トップページへ |
TechTargetジャパン
- JenkinsでCIすればAndroidアプリ開発はもう怖くない (2012/5/23)
Androidアプリ開発における継続的インテグレーションの重要性やJenkinsの利点を解説し、環境構築の仕方や使い方の手順を紹介します - Open Graphアプリを作りApp Centerに登録するには (2012/5/18)
ユーザーの活動を共有できるFacebookの新機能を使ったアプリの開発方法と新しいアプリストアへの登録手順を解説 - Bootstrap、Hogan.js、FinagleなどTwitter系OSS (2012/5/15)
Twitterのアーキテクチャやオープンソースへの取り組みなどの講演模様をお届け。OpenJDKやStorm、Gizzard、Twitter4Jも注目 - ソーシャルゲーム/スマホ開発イベント記事が人気 (2012/5/11)
4月はソーシャルゲームの開発者向けイベントや、Webとネイティブの対決が熱かった! UnityやPerfumeも見逃せない!?
|
|
キャリアアップ
スポンサーからのお知らせ
イベントカレンダー
- - PR -





