Skip to content

Instantly share code, notes, and snippets.

@matsukurou
Last active August 29, 2015 14:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matsukurou/b7b03fc047f70886321a to your computer and use it in GitHub Desktop.
Save matsukurou/b7b03fc047f70886321a to your computer and use it in GitHub Desktop.
Xamarin.FormsでImageをカスタマイズする(カスタムレンダラー、Android)
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