boxviewの美味しい食べ方
DESCRIPTION
2014.11.22 第2回 Japan Xamarin User Group Conference 東日本編TRANSCRIPT
2014.11.22 第2回 Japan Xamarin User Group Conference 東日本編
Xamarin.Formsのグラフィック描画の考慮事項について
BoxViewの美味しい食べ方
自己紹介
識別子 SIN/札幌ワークス
Twitter @furuya02
仕事 某社でシステムサポート
スタッフ CLR/H
ブログ SIN@SAPPOROWORKSの覚書
Microsoft MVP for Visual C# (2013/1~)
フリーソフト BlackJumboDog
Xamarin.Formsでの描画考慮しなけれならない事項が2つあります
1 デバイスごとの画面サイズの違いモバイルアプリで共通の問題
2 PCLとレンダラーでのサイズの違いXamarin.Formsの特有の問題
本日は、こちらの話だけ・・
Xamarin.FormsのBoxView矩形しか描けない、最弱のコントロール(すいません)
何か描きたいときは、レンダラーで拡張してください
PCLとレンダラー側のサイズを検証するノーマルのBoxViewとBoxViewを継承したMyBoxViewを並べてみる
Android iOS WindowsPhone
BoxView
MyBoxView
レンダラーを実装するXamarin.Forms上のコントロールのWidth/Heightを使用する
PCL側public class MyBoxView : BoxView { }
レンダラー側(例:Android)
[assembly: ExportRenderer(typeof(MyBoxView), typeof(MyBoxViewRenderer))]
namespace App1.Droid {
class MyBoxViewRenderer :BoxRenderer{
public override void Draw(Canvas canvas){var myBoxView = (MyBoxView)Element; //Xamarin.Forms側のオブジェクトの取得
using (var paint = new Paint()){
var rect = new RectF(0, 0, (float)myBoxView.Width, (float)myBoxView.Height);paint.Color = myBoxView.Color.ToAndroid(); //塗りつぶしの色を指定canvas.DrawRoundRect(rect,0,0, paint); //四角形描画(塗りつぶし)
}}
Forms側オブジェクトのWidth/Heightを使用する
Forms側オブジェクトのColorを使用する
サイズが合わないBoxViewそのままと、レンダラーで描画する拡張BoxViewを比べると・・・XX
Android iOS WindowsPhone
Androidだけサイズが違う
BoxView
MyBoxView
Width/Heightの値が違うAndroidだけの問題
Forms側のサイズ値を使用する場合は、倍率を処理する
必要がある
比率を取得してPCL側のサイズに乗ずるこれで、すべて解決・・安心してサイズを使用してください
続きはブログで・・・SIN@SAPPOROWORKSの覚書 http://furuya02.hatenablog.com/
ご清聴ありがとうございました
札幌ワークス
http://www.sapporoworks.ne.jp/spw