2011-01-01から1年間の記事一覧
角丸四角を描画しているところでふとしたことに気がついた。白一色でべた塗りしているところが下の画像のように、 角丸の縁の部分で色が濃くなってしまいなんともキタナイ。以前はこうではなかった。調べると原因はアンチエイリアスが有効になっていることだ…
MonoTouchで使っているMacをLionにしたところWindowsからUltraVNCで接続できなくなってしまった。正確には接続するんだけどメタル色のログイン画面の背景だけが表示されるだけの状態。 ググると既知の問題の模様。そんな中で確実に接続できる方法を見つける…
MonoTouch v5.1.1 betaがダウンロードできるようになったので早速インストールしてみた。 するとAppをビルドしてデバイス(iPad2)にインストールするときに例外がでるようになってしまった。 Please ensure your device is connected... Connected to: iPad I…
Xamarinにあるサンプル(How to record sound using the iPhone microphone)が間違っていたので修正してみた。上記ページにある //public void start Recording public void StartRecording () { NSObject[] values = new NSObject[] { NSNumber.FromFloat(44…
MonoDevelopからデバイスに対するAppのインストールが出来なくなった時の備忘録。プロジェクトに追加したファイル以外のファイルをカスタムコマンドを使ってAppのパッケージに含める時、コンパイルが始まるまでにAppの出力先フォルダに含めておく必要がある。…
Mono for Androidはそのフレームワーク内のほぼ全てのクラスがIDisposableを持っている。よって.NETの基本的ルールとして生成したインスタンスは明示的にDisposeするべきである。しかしDisposeしてもなおメモリリークするパターンも存在している。それをまと…
Androidエミュレータを使って開発中、ログに GREF has increased to 2001が表示される事が多くなった。 これはJNIのグローバルリファレンス(オブジェクトの管理テーブル)の数が制限値の2000*1を超えたので表示されている。 原因はインスタンス化したBitmapや…
設定->音->入力時バイブレーション 設定値を取得するサンプルが意外と少ないので備忘録もかねて記録しておく。 int HapticFeedbackEnabled = Android.Provider.Settings.System.GetInt(context.ContentResolver, Android.Provider.Settings.System.HapticFee…
ラジオボタンのカスタマイズで良くあるのが <RadioButton android:text="On" android:textAppearance="?android:attr/textAppearanceSmall" android:button="@null" android:gravity="center" andriud:background="@drawable/custom_radio" /> という感じでandroid:button="@null"を指定することにより本来のラジオボタンのイメージを無効にしてしまう方法。 これをコードから実現するにはSetButtonDrawab…</radiobutton>
Xamarinにも書いてある*1ようにMono for AndroidでカスタムViewをレイアウト用XMLで使うには、作成したclassに特殊なコンストラクタが必要になる。この辺は本家とほぼ同じ。 ちゃんとテンプレートが用意されている。"新規作成->Mono for Android->Android Vi…
Mono for Androidで左右のフリック操作を検出したかったのでKazzzさんが書かれたサンプルコードを移植してみた。 using Android.Views; public class FlickListener : Java.Lang.Object, View.IOnTouchListener { public enum Direction { Left, Right } pri…
TFS 2010において他人のチェックアウトを取り消すにはGUIからはできない。 この場合コマンドラインから行う必要がある。さらに手順が面倒くさい。 事前にtf.exeの場所もしくはパスを解決しておこう。 取り消し対象のプロパティをGUIで確認する。 全般タブの"…
モーダルダイアログを実現したくて見つけたJavaのコードサンプルで使っているCountDownLatch。 Mono for Android v1.9ではまだ実装されていなかったので自前で実装してみた。 using System; using Android; using Android.Runtime; namespace Utilty { publi…
追加したリソース(XML)をResource.designer.csに認識させるには、追加したリソースのオプションを"AndroidResource"にして一度ビルドするとResource.designer.csが更新される。
PopupWindowをそのまま表示すると味気ない黒い背景になってしまう。 一方Dialogを使うと白い罫線枠があったりしてそれっぽくなるのだが、常に画面中央に表示されたりモードレスダイアログとして使うことができない*1。 というわけでPopupWindowの外観をDialo…
AndroidManifest.xmlからmeta-dataを読み込むには本家とほぼ同じようなコードになる。 <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="TestApp"> <application android:label="TestApp" android:icon="@drawable/icon"> </application></manifest>
iPhoneやiPad向けにPNGファイルを最適化したほうがパフォーマンスが良いらしい。 この最適化は本来xcodeが自動的に行ってくれるがMonoTouchは行ってくれないので自前で行う必要がある。 とりあえず以下のコマンドラインを使うことで最適化できた。 /Develope…
iOSシミュレータでMonoTouchプログラムをデバッグしていると、Mono.Data.Sqlite.UnsafeNativeMethods.sqlite3_prepareで例外が発生するようになった。 MonoTouch 4.0.3と4.0.4.1とMono2.10.2の組み合わせ全てで問題がおきる。 この例外、MonoDevelopではキャ…
MonoTouchにおいて文字列の描画に必要な短形の計算の方法 UIViewのStringSizeメソッド NSStringのStringSizeメソッド
UISwipeGestureRecognizerを使う方法。自前でイベントを処理するよりはるかにコードが簡潔になる。 using MonoTouch.Foundation; using MonoTouch.UIKit; using MonoTouch.ObjCRuntime; public class UISwipeView : UIView { UISwipeGestureRecognizer swRec…
MonoTouch*1ではニュートラルカルチャーなCultureInfoからDateTimeFormatを取り出せない。 CultureInfo c = new CultureInfo("en"); DateTimeFormatInfo f = c.DateTimeFormat; <- ここでNotSupportedExceptionが発生する たしかに言語だけの指定で地域が不…
ShouldBeginEditingのdelegateで常にfalseを返すようにすればキーボードが表示されなくなる。 UITextField text = new UITextField(new RectangleF(0,0,50,31); text.ShouldBeginEditing += delegate { return false; } キーボードは表示されなくなるが、そ…
UIPopoverControllerでタイトルを追加にはUIPopoverControllerの元になるUIViewControllerに対してTitleとNavigationItemにボタンを追加する。 しかし直接UINavigationControllerを作ってTitle等を変えてもなにも起きなかった。 この場合、UIViewController…
UIPopoverControllerで矢印を表示しないようにするにはpresentPopoverFromRectのpermittedArrowDirectionsに0を渡せば良い。 しかしMonoTouchのPresentFromRectメソッドはUIPopoverArrowDirection列挙値しか受け付けてくれない。というわけで0を渡せるように…
実機上でデバッグするときはネットワーク経由で行う。このときのIPアドレスは基本的に無線LAN(Airmac)のIPアドレスがデフォルト。しかし有線LANや仮想LANが有効になっているとMonoDevelopが使用するIPアドレスを間違うことがある。 この問題はMonoDevelopの…
UITabBarのボタンを押すとハイライトされる。これを解除するにはUITabBarのSelectedItemにnilを代入する必要がある。MonoTouchだとnull代入だと思い、 tabBar.SelectedItem = null; としたらnullチェックの例外が発生した。どうも引数nullには対応していない…
VGAケーブルやAVデジタルケーブルで追加されたスクリーンにUIViewを表示する為に以下の様なコードを書いた。 if (UIScreen.Screens.GetLength(0) > 1) { UIScreen screen = UIScreen.Screens[1]; UIWindow awin = new UIWindow(); awin.Screen = screen; UIB…
DrawメソッドでCGContextを使って日本語を描画しようとしたらどうにも文字化けしてしまう。調べると本家SDKでも同じで、これはNSStringのdrawStringを使うことで回避できるとのこと。これをMonoTouchでやってみた。 public override void Draw (System.Drawi…
Environmentクラスの特殊フォルダ Environment.SpecialFolder を実機で取得した。 特殊フォルダ 戻り値 ApplicationData /private/var/mobile/Applications/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents/.config CommonApplicationData /usr/share Commo…
MonoDevelop v2.6 Beta 2がなかなか終了しなくて困っていた。 調べるとどうも終了時にインターネットアクセスを行っている。 しかし環境的にプロキシ経由でなければ通信できない。 結局ソケットがタイムアウトするまで延々と待ち続けているのが原因だった。…