Mono for Android

Mono for Android v4 とx86版ICSエミュレータを組み合わせて開発する

止まっているのかと勘違いするほどクソ遅いARM版ICSエミュレータでMono for Androidアプリを開発するのは非常にストレスがある。エミュレータの起動まではスナップショットを使えば回避できるが、ビルド->転送->実行->ブレーク->ステップ等はとてつもなく遅…

Mono for Androidとメモリリークのまとめ

Mono for Androidはそのフレームワーク内のほぼ全てのクラスがIDisposableを持っている。よって.NETの基本的ルールとして生成したインスタンスは明示的にDisposeするべきである。しかしDisposeしてもなおメモリリークするパターンも存在している。それをまと…

Mono for Androidはメモリリークが多すぎる?

Androidエミュレータを使って開発中、ログに GREF has increased to 2001が表示される事が多くなった。 これはJNIのグローバルリファレンス(オブジェクトの管理テーブル)の数が制限値の2000*1を超えたので表示されている。 原因はインスタンス化したBitmapや…

設定->音->入力時バイブレーション 設定値の取得

設定->音->入力時バイブレーション 設定値を取得するサンプルが意外と少ないので備忘録もかねて記録しておく。 int HapticFeedbackEnabled = Android.Provider.Settings.System.GetInt(context.ContentResolver, Android.Provider.Settings.System.HapticFee…

xmlで記述するandroid:button="@null"をコードで書くには

ラジオボタンのカスタマイズで良くあるのが <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>

カスタムViewをレイアウト用XMLで使うには

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…

Mono for Androidでjava/util/concurrent/CountDownLatchを使えるようにしてみた

モーダルダイアログを実現したくて見つけたJavaのコードサンプルで使っているCountDownLatch。 Mono for Android v1.9ではまだ実装されていなかったので自前で実装してみた。 using System; using Android; using Android.Runtime; namespace Utilty { publi…

追加したリソース(XML)をResource.designer.csに認識させるには

追加したリソース(XML)をResource.designer.csに認識させるには、追加したリソースのオプションを"AndroidResource"にして一度ビルドするとResource.designer.csが更新される。

PopupWindowの外観をDialogのようにする

PopupWindowをそのまま表示すると味気ない黒い背景になってしまう。 一方Dialogを使うと白い罫線枠があったりしてそれっぽくなるのだが、常に画面中央に表示されたりモードレスダイアログとして使うことができない*1。 というわけでPopupWindowの外観をDialo…

AndroidManifest.xmlからmeta-dataを読み込む

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>