Last active
August 29, 2015 14:24
-
-
Save matsukurou/b7b03fc047f70886321a to your computer and use it in GitHub Desktop.
Xamarin.FormsでImageをカスタマイズする(カスタムレンダラー、Android)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using Xamarin.Forms; | |
using Xamarin.Forms.Platform.Android; | |
// CustomImageViewのレンダラーをCustomImageViewRendererに変更する宣言 | |
[assembly:ExportRenderer(typeof(CustomImage.CustomImage), typeof(CustomImage.Droid.CustomImageRenderer))] | |
namespace CustomImage.Droid | |
{ | |
/// <summary> | |
/// Imageに対応した、ImageRendererを継承したクラスをカスタムレンダラークラスとして作成 | |
/// </summary> | |
public class CustomImageRenderer : Xamarin.Forms.Platform.Android.ImageRenderer | |
{ | |
/// <summary> | |
/// 初期設定されたときに呼ばれる | |
/// </summary> | |
/// <param name="e">E.</param> | |
protected override void OnElementChanged(ElementChangedEventArgs<Image> e) | |
{ | |
base.OnElementChanged(e); | |
// 画像の色を設定 | |
SetImageColor(); | |
} | |
/// <summary> | |
/// 画像のカラーを設定 | |
/// </summary> | |
void SetImageColor() | |
{ | |
// ElementをキャストしてFormsで定義したカスタム用のImageを取得 | |
var formsImage = (CustomImage)Element; | |
// 設定の変更があった場合 | |
// Controlでこのカスタムレンダラーで使用する、AndroidのImageViewが取得できる | |
if (Control != null && formsImage.ImageColor != Color.Transparent) | |
{ | |
// 画像のカラーをプロパティに設定したものに変更 | |
Control.SetColorFilter(formsImage.ImageColor.ToAndroid()); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment