2012年1月20日金曜日

XmlSerializerでGenericなリストを使いたい!

XmlSerializerを使って、シリアライズなどするとき、GenericのList等は使えません。
ただ、配列は使用可能なので、次のようなコードで対応します。
 [XmlIgnore]
 public List myHogeList { set; get; }
 [XmlElement("myHogeList")]
 public Hoge[] myHogeArray
 {
  set
  {
   myHogeList = new List();
   myHogeList.AddRange(value);
  }
  get
  {
   return myHogeList.ToArray();
  }
 }

考え方は、XmlIgnoreを使ってシリアライズ対象外に、配列を使って無理矢理Listと相互変換。

2012年1月9日月曜日

WPFのモーダルダイアログの表示位置が上手く設定出来ない場合

ウィンドウのプロパティに「WindowStartupLocation="CenterOwner"」を設定し、「window.ShowDialog();」
としても、思う位置にウィンドウが表示されない。

なんかよくわからないが、window.Owner を設定しないのが原因らしい。
window.Owner = this;
window.ShowDialog();
とすると上手くいくようだ。
ただ、ユーザコントロール上だと
window.Owner = this; 
はできないので、
window.Owner = Window.GetWindow(this);
とするとよい。

2011年12月20日火曜日

Android開発環境の構築

Windowsで開発を行うに当たって調べた結果必要なモノは次のとおり。
  • JDK
  • Eclipse
  • Android SDK
  • ADTプラグイン
ちなみにWindowsが64bitバージョンでも、そろえるのは全て32bit(x86)のモノをそろえる。


1.JDK
まず、このページを開く。
Java Platform, Standard Editionのダウンロードボタンをクリック。
Windows x86を探して、ダウンロード。
あとは、適当にインストール

2.Eclipse
日本人なので、日本語対応版のEclipseが欲しい。
よってPleiadesをチョイス。
このページからPleiades All in Oneの最新版を選択。
なんかいろいろあって、選択する必要有り。

Full All in One (JRE あり) ×JAVAの組み合わせを選択し、ダウンロード。
ZIPファイルを解凍して開発環境のできあがり。


3.Android SDK
本家サイトより、SDKのインストーラをダウンロード。(ZIPファイルじゃない方)
適当に、実行。
なんか、アップデートが始まったりするので、適当にアップデート。


4.ADTプラグイン
Eclipseを起動。
ヘルプ→新規ソフトウェアのインストール。
作業対象ボタンを押す。
名前に「Android Plugin」(適当)
ロケーションに「https://dl-ssl.google.com/android/eclipse/
OKボタンを押す。
リストボックスの「保留中」が「開発ツール」になるのをまつ。(1~2分は待って見ましょう)
「開発ツール」にチェックを入れて「次へ」 「次へ」 
ライセンスに同意して「完了」

以上で、環境が構築できたはず

2011年12月16日金曜日

カメラZOOM FX - Android マーケット

カメラZOOM FX - Android マーケット


ユーザレビューを見ると、無音撮影出来ない!っていっている人が多そうです。

結論から言うと無音撮影は可能です。
ただし、設定を変更するだけじゃ無理です。撮影方法も関係します。

無音撮影の方法

  1. 設定画面に「Enable shutter sound」のチェックを外す。
  2. Burst Modeにする。
  3. 撮影する。

以上です。

Burst Modeでないと無理です。
おそらくBurst Modeはビデオキャプチャーで動きます。
※Burst Mode時は撮った画像が低解像度になると書いてあります。

設定画面の「Enable shutter sound?」のチェックの所に「More Information」とありクリックすると、上記の様なことが書いてあります。

2011年12月13日火曜日

XmlSerializerで「XXのタイプ初期化子が例外をスローしました。」

XmlSerializerを使って、クラスの読み書きを行おうとした時、「XXのタイプ初期化子が例外をスローしました。」と出て上手く行かなかった。

原因は対象となるクラスがprivateだったからだった。
publicに指定したら上手くいきました。