2010年9月29日水曜日

タッチボタンの感度

uGreader Marketplaceのコメントを見るとタッチ操作の感度が悪いとの声がありました。タッチスクロールの邪魔にならないように、リストの選択感度を制限したのが裏目に出てしまったみたいです。
基本的に一回のタッチでは選択を開かないで、長押しか、選択中の項目のタッチでしか記事を開かないようにしていますが、もうちょっと調整が必要ですね

感圧式と、静電容量式とで反応も違うかもしれないのでis02をゲットしようと思ってます

is01契約してきました

本当はis02を買いに行ったのですが、在庫がなくて代わりにis01をゲットしてきました。is01はとりあえず予約しておきました。

2010年9月27日月曜日

WP7 カスタムボタンの作成

silverlightでのアプリ作成は VS2010を使いますが、GUI部分の構成はExpression blend4 を使います。もちろんblendを使わなくても構わないのですが、使った方が遥かに楽ができます。

たとえばuGReaderの記事リスト等はデータコレクションを含むクラスを元にblend上でサンプルデータを自動作成して、そのサンプルデータをlistboxにドラッグ&ドロップするだけで、適当なリスト表示のテンプレートが出来上がります。

あとはGUIで並べなおすだけで出来上がってしまいます。

手順さえ解っていればホントにあっという間に出来上がりです。

おもしろいのはボタン等のGUI部品も簡単に自分で作れてしまいます。しかもアニメーションをバシバシいれた派手なものまでプログラムコードを一切書かなくてもできます

という話しを聞いただけでは面白くないので、自分でもやってみることにします


uGReaderのスターアイコンをトグルスイッチとして動作するような部品を作ります。
ONの時に星が光って、OFFの時は消えるスイッチです


参考にしたのは ココのチュートリアル
http://msdn.microsoft.com/ja-jp/library/bb613598.aspx


まず以前に作ったpng画像をもとに作ってみましたが、pathを使って直接レンダリングする方が面白そうなので途中で路線変更

スターマークの XAMLはこんな感じで出来上がりました

ここにXAMLを入れたかったけど、<>いっぱいで表示できなかった


大変だったのは星の絵を作るところですね。なんかバランス悪いし

で、出来上がったスター画像をボタンに変更します。Make Into Contorol です。ここでToggleButtonを選びます



基本的にはこれだけでボタンとして動作する部品が出来上がります。ただし、押しても、Checke/UnCheck状態でも見た目が変わらないので、押したときと、チェック状態の時と、アンチェック状態の時の見た目を変えます



面白いのは、状態の変わったときとか、押されている間とかにタイムラインでアニメーションを指定する事ができます。アニメーションは、ボタンの色、透明度、平行移動、回転、拡大縮小、変形、3次元座標変換等なんでもできちゃう感じ。ページをめくるような動作もできます。操作画面はSoftimageとかの3dソフトみたいです。


作ったら、エミュレータで即実行できます。押してる間、拡大して、星がくるくる回るようにしてみました。(無駄ですが)





リスト表示に組み込んでみました。これら作業にプログラムコードは一切書いてません!ほんとに簡単にできます。(実際は作業に半日かかりましたけど)

この動き、動画で見せたいですねー





2010年9月25日土曜日

WP7プログラム3

uGReader PCからマーケットプレイスを見ると載るようになりました。デバイスからはまだ見えません。以前はPCからデバイスをadesに設定して見るとver1.4が見えていましたが、今はver1.4も見えていません。
t-01bとかでちゃんと見えるようになるか心配です

さて、WP7に移植ですが
まずxmlのデータ受信ができたので、受信したxmlをクラスに取り込んで表示するところに挑戦しました。

WM6では XmlDocument クラスを使っていましたが、silverlight では使えず、かわりにXDocumentを使いました。名前はよく似てますが、使い方は微妙に違います

XDocument,XElement等を使うには System.Xml.Linq を参照に加える必要がりました

using System.Linq;
using System.Xml.Linq;

もしておきます。SelectSingleNodeとか使っていたところを全部下のような感じで書き換えました

XNamespace feed = "http://www.w3.org/2005/Atom";
XElement node = xml.Element(feed + "feed"); 
link = node.Elements(feed + "link").First(p=>p.Attribute("rel").Value=="self").Attribute("href").Value;

 //.SelectSingleNode("feed:link[@rel='self']/@href", nsMgr).InnerText;


本当ならもっと簡単に(xmlからいきなりクラスに変換したり、xmlをリストコンポーネントにいきなりバインドしたり)できるんだろうなぁーと思いながら、せっせと書き換えました

xmlデータをクラスオブジェクトに書き込みができたので、クラスをリストコンポーネントにバインドして表示が出来上がりです。すげー簡単だー。と言いたいところですが、バインドするのに手こずりました。

よくわかってる人には、すごく簡単にできちゃうんでしょうね。



珍しさもあってpivotコントロールに、フォルダリスト、記事リスト、記事表示を載せてみました。
とにかくguiはWM6で全部自分で実装しなければいけなかった事を考えるとものすごく楽です。
データバインドも素晴らしいです

pivotでアイテムを切り替えて表示した場合はフォームの切り替えをしているわけでは無いので、backハードキーを押すと、アプリ終了まで巻き戻ってしまうので考え物です


順調に出来たと思ったら webbrowserで記事を表示すると文字化けしてしまいました

WM6のときは WebBrowser.DocumentText を使いましたが、wp7では

 webBrowser1.NavigateToString(str);

とします。
たとえば、ここで str = "テスト"; とかを表示させても文字化けします。

どーしましょう...




ここまで来ると早く実機を触りたいです

MarketPlaceに審査完了しました

uGreader ver1.5 審査が通りました。ダッシュボードではステータスがカタログで公開済みとなっていますが、今のところマーケットプレイス上では見当たりません。
また何か間違えちゃったかなー

今回はデバイスの必要要件に何もチェックを入れなかったので、キーボード無しのT-01Aでもカタログに載ると思ったのですが?どうなっているのでしょう.....

キーボード付きのデバイス用のマーケットからver1.4も消えているみたいです

2010年9月23日木曜日

WP7プログラム2

またしてもいきなり躓いてしまいました

フィードを取得するのに HttpWebRequest を使用するのですが、先ほど取得した認証コードをヘッダに埋め込む必要があって、今までは


req.Headers.Add("Authorization", "GoogleLogin auth=" + mAuth);

の様にしていたのですが

HttpWebRequest.Headers に Add メソッドも Set メソッドも無いです

msdnには
HttpWebRequest.Headers..Item プロパティ (String) とあるのですが、VsのエディタではItemプロパティが入力支援の候補に出てこなくて、また実装されてないの?とか思いました

実際は

req.Headers["Authorization"] = "GoogleLogin auth=" + mAuth;


のような感じでHeadersに追加できました。連想配列みたいになってんの?おじさんは悩んじゃいました