2011年1月14日金曜日

Animation-listの動作

androidでアニメーションさせたい場合は、res/animにxmlを作成すれば良いのだが、Tweenとanimation-listでは起動時から再生したい場合、呼び出すタイミングが違うので注意。

tweenの方は、親のActivityのOnCreateのタイミングでloadAnimationを呼んでもOK
animation-listで実行する場合は、OnCreateでstartを呼んでも実行されない。
で、どこで呼ぶかというと、ActivityのOnWindowChangedで呼ぶ。

参考リンク:以下の最後の方に記載してある。
2D Graphics

2011年1月13日木曜日

Android applicationからTitleを消したい

manifestのandroid:themeに参照するリソースを設定。
resourceはres/values/styles.xml
の中の値を渡している。
resource側では、
    <style name="Theme" parent="android:Theme">
        <item name="android:windowNoTitle">true</item>
     </style>
と指定してやればOK。

参考リンク:
http://developer.android.com/guide/topics/ui/themes.html

ついでに、Homeアプリ(HOMEを押した時に選択肢が出るように)にするためには、MainのActivityにintent filterで、category.HOMEを指定してあげましょう。

2011年1月5日水曜日

Evernote試す

Evernote APIを試したく、中に入っていたRuby サンプルコードを試してみる。
足りないライブラリがあったので、gemsでインストール。
プロキシ越しの場合は、
gem install パッケージ名 -r -p http://your.proxy.hostname:port_no
で行ける。
参考リンク:

2010年12月24日金曜日

size対応

WebViewでローカルhtmlを読み込んだ際、大きくしたEmulatorだと小さい画面でしか表示されない。(しかもその中でスクロールされる・・・・)
修正するために、supports screensで対応。
Android manifestに、

<supports-screens android:largeScreens="true" />
を追加。


参考リンク:
supports-screens

2010年10月11日月曜日

Java reflection

Java でリフレクションを使って動的にimport出来ない関数を呼び出す方法。
inputのパラメータは適宜使いたいものに変更。

Boolean[] input={new Boolean(true)};
//using reflection
try{
// call class name
Class cl = Class.forName(*******);
Class[] par = new Class[1];
par[0]=Boolean.TYPE;
// import dynamic class library function
// ここで動的に関数を呼び出す
Method mthod=cl.getMethod(******, par);
mthod.invoke(mWebView.getSettings(), input );
/* normal sequence functions */
}catch(Exception e){
/* exception error */
}

うーん、書いてはみたもののまだいまいち腑におちてないかんじ。
参考リンク:
Flash devlop on Android 1.5
Javaプログラミングのダイナミクス 第二回
Javaプログラミングのダイナミクス 第三回

2010年10月5日火曜日

Wirelessが死んだ。。

自宅のUbuntuはSuspendからの復帰時大体キーが効かなくなって再起動するハメになる。
これはこれで解決しないといけないのだけど、この時一緒にWirelessもDisableになって使えなくなってしまった。
その時の復帰の方法は、以下。
System > Administration > Users and Groups
でログイン名を選択し、
Advanced setting > User privileges
で,Connect to wireless and ethernet networkにチェックを入れたらOK.
でも、何で突然ここだけチェックが外れるのかな。。。

2010年10月1日金曜日

LiveWallPaper - Android

作りかた。
Dynamic Displayのレンダリングのため,Surface Viewを利用
ユーザのスクリーンタッチイベントを取得したり、イベント処理も必要。
作るコンポーネントは以下3つ。

  • Live Wallpaper用のXML resource

Androidのお作法で、res/xmlの中に作る。
wallpaper がTop elementで、その中のuser attributesとしてauthor, description, thumbnailを指定。
これらがWallpaper設定時の選択画面で出てくる表示になる。
追加で何か設定させたい場合(画像や図選択、挙動の設定などなど)は、"SettingActivity"tagを指定すれば、独自の設定画面を用意できる。

  • Wallpaper serviceの実装

Wallpaperserviceの拡張を行う。ここでWallpaperService Engineクラスのインスタンス化。
すべてのdrawing処理、インタラクションはwallpaper service engine クラスでハンドルされる。
このサービスを、マニフェストにserviceとして登録。
また、Live wallpaperはandroid.service.wallpaper.WallpaperService のIntent Filterを含む必要がある。
また、meta-dataノードにandroid.service.wallpaperをname attributeとして、
リソースファイルをresouece attributeとして追加。
また、BIND_WALLPAPER パーミッションも必要なのでこれも追加。


  • Wallpaper engineの実装 (WallpaperService.Engineのインスタンスを新規に作成して返す。)

WallPaperServiceクラスでは、必ずEngineの実装が必要。WallpaperService.Engineクラス拡張をする。
このEngineは、Surface(壁紙表示、タッチイベントの取得)をカプセル化している。Surfaceはバックグランドスレッドのアップデート、スムーズネス、動的でインタラクティブ表示)の描画サポートを行うcanvasの一種。
drawingする前には、必ずonsurfaceCreatedのイベントハンドラで示される初期化を待つ必要がある。
その他、イベントコールバックの実装が必要。(onTouchEvent などなど。)