title: How to construct custom views in xamarin
body: <p>Is there any tutorial which will enable me to design custom views in xamarin?I want to build pinch zoom functionality for my android app using xamarin.</p>
  
  <p>I have tried following code,but its not working,I am always getting <code>android.view.InflateException: Binary XML file line #1: Error inflating class LA_Application.ZoomView</code> error</p>
  
  <pre><code>using System;    
  using System.Collections.Generic;
  using System.Linq;    
  using System.Text;    
  using Android.App;    
  using Android.Content;    
  using Android.OS;    
  using Android.Runtime;    
  using Android.Util;    
  using Android.Views;    
  using Android.Widget;    
  using Android.Graphics;
  
  namespace LA_Application    
  {
  
      public class ZoomView : FrameLayout      
      {
  
          private ScaleGestureDetector mScaleDetector;    
          private static float mScaleFactor = 1.0f;   
  
  
          public ZoomView (Context context) : base (context)
          {
              Initialize ();    
          }
  
          public ZoomView (Context context, IAttributeSet attrs) : base (context,attrs)    
          {
              Initialize ();    
          }
  
          public ZoomView (Context context, IAttributeSet attrs, int defStyle) : base (context, attrs, defStyle)
          {
              Initialize ();
          }
  
          void Initialize ()
          {
              mScaleDetector = new ScaleGestureDetector(Context, new ScaleListener());
          }
  
          public override bool OnTouchEvent (MotionEvent e)
          {
              mScaleDetector.OnTouchEvent(e);
  
              return true;
          }
  
          protected override void OnDraw(Android.Graphics.Canvas canvas)
          {
              base.OnDraw(canvas);
  
              canvas.Save();    
              canvas.Scale(mScaleFactor, mScaleFactor);
              canvas.Restore();
          }
      }
  
      private class ScaleListener : ScaleGestureDetector.SimpleOnScaleGestureListener
      {
          public override bool OnScale(ScaleGestureDetector detector)
          {
              mScaleFactor *= detector.ScaleFactor;
  
              // Don't let the object get too small or too large.
              mScaleFactor = Math.Max(0.1f, Math.Min(mScaleFactor, 5.0f));
  
              return true;
          }  
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>and in layout file </p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LA_Application.ZoomView xmlns:android="http://schemas.android.com/apk/res/android"
                           android:layout_width="match_parent"
                           android:layout_height="match_parent"
                           android:id="@+id/my_view" /&gt;
  </code></pre>
  
  <p>activity code</p>
  
  <pre><code>protected override void OnCreate (Bundle bundle)
  {
      base.OnCreate (bundle);
  
      SetContentView(Resource.Layout.zoomview);
  
      /*some code*/
  }
  </code></pre>