Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2009 The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package com.android.ninepatchlab;
 
 
 import android.view.*;
 
 public class NinePatchLab extends Activity {
     public NinePatchLab() {}
 
     Drawable[]  mButtons;
     Drawable[]  mBGs;
     float       mScale;
     
     boolean     mShowFPS = true;
     boolean     mDoDither = true;
     boolean     mDoFilter = true;
     int         mCurrBGIndex;
 
     private static final int FPS_COUNTER_LIMIT = 30;
     private int mFPSTime;
     private int mFPSCounter;
     private int mFPSAve;
     
     private View mView;
     
     private void updateTitle() {
         String title = "D=" +  + " F=" + ;
         if () {
             title += " FPS=" + ;
         }
         setTitle(title);
     }
 
     private static Drawable make_custom_bg() {
         int[] colors = new int[] {
             //            0xFFFF0000, 0xFFFF00FF, 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00,  0xFFFFFF00, 0xFFFF0000
             0xFFFF0000, 0xFF0000FF
         };
         return new GradientDrawable(..,
                                     colors);
     }
     
     private static Drawable make_solid_bg() {
         return new ColorDrawable(0xFF008800);
     }
     
     private class NPView extends View {
 
         public NPView(Context context) {
             super(context);
             setFocusable(true);
 
             int[] bgs = new int[] {
                 ..,
                 ..,
                 ..,
                 ..,
                 ..,
             };
             int[] ids = new int[] {
                 ..,
                 ..,
                 ..,
                 ..,
                 ..,
                 ..,
             };
             
              = new Drawable[ids.length];
              = new Drawable[bgs.length + 2];
             
             Resources res = context.getResources();
 
             for (int i = 0; i < ids.lengthi++) {
                 [i] = res.getDrawable(ids[i]);
            }
            for (int i = 0; i < bgs.lengthi++) {
                [i] = res.getDrawable(bgs[i]);
            }
            [bgs.length] = make_custom_bg();
            [bgs.length+1] = make_solid_bg();
            
             = res.getDisplayMetrics().;
        }
        private static final int MARGIN_X = 16;
        private static final int MARGIN_Y = 8;
        private void setDrawableFlags(Drawable dr) {
            dr.setDither();
            dr.setFilterBitmap();
        }
        protected void onDraw(Canvas canvas) {
            long now = 0;
            if () {
                now = SystemClock.uptimeMillis();
            }
            Drawable bg = [];
            bg.setBounds(0, 0, getWidth(), getHeight());
            setDrawableFlags(bg);
            bg.draw(canvas);
            final int WIDTH = getWidth() - 2*;
            final int HEIGHT = getHeight() - 2*;
            final int N = .;
            final int gapSize = Math.round( * 8);
            final int drHeight = (HEIGHT - (N - 1) * gapSize) / N;
            final int drWidth = WIDTH;
            
//            canvas.drawColor(0xFF5F810C);
            canvas.translate();
            for (Drawable dr : ) {
                dr.setBounds(0, 0, drWidthdrHeight);
                setDrawableFlags(dr);
                dr.draw(canvas);
                canvas.translate(0, drHeight + gapSize);
            }
            if () {
                 += (int)(SystemClock.uptimeMillis() - now);
                 += 1;
                if ( > ) {
                     =  * 1000 / ;
                    updateTitle();
                     = 0;
                     = 0;
                }
                invalidate();
            }
        }
    }
    private void toggleFPS() {
         = !;
        if () {
             = 0;
             = 0;
            .invalidate();
        }
    }
    @Override public boolean onKeyDown(int keyCodeKeyEvent event) {
        switch (keyCode) {
            case .:
                 = !;
                updateTitle();
                .invalidate();
                return true;
            case .:
                 = !;
                updateTitle();
                .invalidate();
                return true;
            case .:
                 = ( + 1) % .;
                .invalidate();
                return true;
            case .:
                 -= 1;
                if ( < 0) {
                     = 0;
                }
                .invalidate();
                return true;
            case .:
                toggleFPS();
                return true;
            case .:
            case .:
            case .:
                return super.onKeyDown(keyCodeevent);
        }
        return super.onKeyDown(keyCodeevent);
    }
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
         = new NPView(this);
        setContentView();
    }