diff --git a/samplecode/SampleEncode.cpp b/samplecode/SampleEncode.cpp
index b09b2eb..f4ea195 100644
--- a/samplecode/SampleEncode.cpp
+++ b/samplecode/SampleEncode.cpp
@@ -106,7 +106,7 @@
 
 #include <sys/stat.h>
 
-class EncodeView : public SkView {
+class EncodeView : public SampleView {
 public:
     SkBitmap*   fBitmaps;
     size_t      fBitmapCount;
@@ -140,6 +140,7 @@
         fBitmaps = NULL;
         fBitmapCount = 0;
     #endif
+        this->setBGColor(0xFFDDDDDD);
     }
     
     virtual ~EncodeView() {
@@ -156,38 +157,12 @@
         return this->INHERITED::onQuery(evt);
     }
     
-    void drawBG(SkCanvas* canvas) {
-        canvas->drawColor(0xFFDDDDDD);
-//        canvas->drawColor(SK_ColorWHITE);
-    }
-    
-    virtual void onDraw(SkCanvas* canvas) {
-        this->drawBG(canvas);
-        
+    virtual void onDrawContent(SkCanvas* canvas) {
         if (fBitmapCount == 0) {
             return;
         }
         
         SkPaint paint;
-        if (false) {
-//            SkColor colors[] = { 0xFE000000, SK_ColorWHITE };
-            SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };
-            SkShader* shader = SkGradientShader::CreateSweep(SkIntToScalar(50), SkIntToScalar(50),
-                                                             colors, NULL, 2);
-            paint.setShader(shader)->unref();
-
-            SkRect r;
-            r.set(0, 0, SkIntToScalar(100), SkIntToScalar(100));
-            canvas->drawRect(r, paint);
-            
-            canvas->translate(SkIntToScalar(200), SkIntToScalar(200));
-            paint.setAntiAlias(true);
-            paint.setStyle(SkPaint::kStroke_Style);
-            paint.setStrokeWidth(SkIntToScalar(10));
-            canvas->drawOval(r, paint);
-            return;
-        }
-        
         paint.setAntiAlias(true);
         paint.setTextAlign(SkPaint::kCenter_Align);
         
@@ -238,12 +213,8 @@
         return this->INHERITED::onFindClickHandler(x, y);
     }
     
-    virtual bool onClick(Click* click) {
-        return this->INHERITED::onClick(click);
-    }
-    
 private:
-    typedef SkView INHERITED;
+    typedef SampleView INHERITED;
 };
 
 //////////////////////////////////////////////////////////////////////////////
