2012年1月29日日曜日

TextViewのワードラップ

AndroidのTextViewは、英単語が途中で改行されてしまわないようにワードラップ処理をしてくれます。
日本語の禁則処理もしてくれているようなのですが、どうにも不自然で納得できません。(句読点の直後に改行が入らず次の1文字も巻き込んで計算されるなど)

ソースを追うと、TextViewのプライベートメンバ mLayout で保持される StaticLayout がワードラップ処理をしているようです。(setText()に Spannable を渡すと mLayout自体は DynamicLayout になりますが、DynamicLayout が内部で StaticLayout を作ります)
うまいことワードラップする Layoutクラスを作ってリフレクションで mLayout に設定する方法もあると思うのですが、StaticLayoutはそこそこボリュームがあって手を出すのは心が折れるので、InputFilter を使う方法でワードラップ処理を改造してみました。

2012年1月23日月曜日

リバースプロキシとSubversion

Apacheのリバースプロキシ越しにSubversionサーバを立てていたら svn mv や svn cp (それをバックグラウンドで行う svn merge も)ができなくてハマったので解決策のメモ。

2012年1月18日水曜日

ChromeでWebGL

WebGLの仕様上のセキュリティ問題の対策のためと思われるのですが、現在の Chrome(Chrome 16)では WebGL がデフォルトで無効になっているようです。(ソースは見つけられませんでした…手元にある2台の(世代の違う)iMacでどちらもデフォルト無効だったのでそう判断しています)

せっかくChromeウェブストアにおもしろそうなゲームがあっても、WebGLデモサイトにステキなサンプルがあっても、そのままでは表示することができません。

2012年1月10日火曜日

復活の呪文2

Android Marketの人気アプリ 復活の呪文2 の呪文生成アルゴリズムを解析しました!

2012年1月8日日曜日

ハイライト表示

SyntaxHighlighter を使ってBlogger(blogspot.com)でハイライト表示をするための設定メモ。

Django

Python製WebフレームワークDjango。楽しいです。楽しいというか楽チン。
0.96の頃に作ったサイトの保守とかしていてなかなか最新版を追従できていないですが、それでも新しく始めるときはなるべく最新のDjangoを使いたいもの。

そこでDjangoをシステムにインストールしてしまわず、プロジェクトの中に内包することで、1つのシステム(1台のサーバ)上に複数のバージョンのDjango環境を作っています。
ポータビリティが高いので「じゃんごーぽーたびりてぃ」と呼んでいました(^^ゞ
(番号ポータビリティが話題になっていた頃だったので…)

2012年1月4日水曜日

ActionBarCompat

GALAXY NEXUS が発売されてAndroid 4.0(ICS)端末が市場に出てきました。
Honeycombで搭載されたActionBarがいい具合にスマホ化されていてカックイイです(*゚∀゚)

Android SDKのサンプルに、ActionBarCompat という、バージョン差を吸収してActionBarを表示する(Honeycombより前のAndroidではActionBarモドキを表示する)アプリがあったので、Toroくんのブログを参考に拙作 あとでよむ twiccaプラグイン に組み込んでみました(Ver.1.2)。

ところが直後から「IS01で起動できなくなった」「SH-10B(LYNX)で動かない」というコメントが…orz
おかしいな、エミュレータで Android 1.6 でも動くことを確認したのに。。
実機を借りて確認したら AbstractMethodError で落ちてました。ぐぬぬ…