Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 5th, 2012  |  syntax: None  |  size: 2.72 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. package com.nbadal.draw;
  2.  
  3. import android.content.Context;
  4. import android.graphics.Bitmap;
  5. import android.graphics.BitmapFactory;
  6. import android.graphics.Canvas;
  7. import android.graphics.Color;
  8. import android.graphics.Paint;
  9. import android.graphics.Rect;
  10. import android.view.View;
  11.  
  12. public class DrawView extends View {
  13.  
  14.         private Paint paint;
  15.         private BitmapFactory.Options options;
  16.         private Bitmap bitmapOrg;
  17.         private Bitmap target;
  18.         private Bitmap bitmapRev;
  19.         private Bitmap resizedBitmap;
  20.  
  21.         private int currY;
  22.  
  23.         public int drawX;
  24.         public int drawY;
  25.         public float drawSizeX;
  26.         public float drawSizeY;
  27.         private boolean drawGlasses;
  28.         private boolean drawMirrored;
  29.  
  30.         public DrawView(Context context) {
  31.                 super(context);
  32.                 paint = new Paint();
  33.                 paint.setDither(false);
  34.                 paint.setAntiAlias(false);
  35.  
  36.                 options = new BitmapFactory.Options();
  37.                 options.inDither = false;
  38.                 options.inScaled = false;
  39.  
  40.                 bitmapOrg = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(),
  41.                                 R.drawable.micro, options), 32, 5, false);
  42.                 bitmapRev = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(),
  43.                                 R.drawable.reverse, options), 32, 5, false);
  44.                 drawGlasses = false;
  45.                
  46.                 drawGlasses(150, 210, 570, false);
  47.         }
  48.  
  49.         @Override
  50.         protected void onDraw(Canvas canvas) {
  51.                 canvas.drawBitmap(target, 0, 0, paint);
  52.  
  53.                 boolean moving = currY < drawY;
  54.                 if (moving) {
  55.                         currY++;
  56.                 }
  57.                 if (drawGlasses) {
  58.                         int newWidth = resizedBitmap.getWidth();
  59.                         int newHeight = resizedBitmap.getHeight();
  60.                         Paint bluey = new Paint();
  61.                         bluey.setColor(Color.argb(64, 0, 0, 255));
  62.                         canvas.drawRect(new Rect(drawX, currY, drawX + newWidth,
  63.                                         currY + newHeight), bluey);
  64.  
  65.                         canvas.drawBitmap(resizedBitmap, drawX, currY, paint);
  66.                 }
  67.                 if (moving) {
  68.                         invalidate();
  69.                 }
  70.         }
  71.  
  72.         public void drawGlasses(int x1, int x2, int y, boolean mirror) {
  73.                 drawGlasses = true;
  74.                 drawMirrored = mirror;
  75.                 if (!mirror) {
  76.                         drawSizeX = (float) (x2 - x1) / (float) (25 - 16);
  77.                         drawSizeY = drawSizeX;
  78.                         drawY = y - (int)(1*drawSizeX);
  79.                         drawX = (int) (x1 - (drawSizeX * 16));
  80.                 } else {
  81.                         drawSizeX = (float) (x1 - x2) / (float) (25 - 16);
  82.                         drawSizeY = drawSizeX;
  83.                         drawY = y - (int)(1*drawSizeX);
  84.                         drawX = (int) (x1 - (drawSizeX * 16));
  85.                 }
  86.  
  87.                 currY = -1;
  88.  
  89.                 if (!drawMirrored) {
  90.                         resizedBitmap = Bitmap.createScaledBitmap(bitmapOrg,
  91.                                         (int) (bitmapOrg.getWidth() * drawSizeX),
  92.                                         (int) (bitmapOrg.getHeight() * drawSizeY), false);
  93.                 } else {
  94.                         resizedBitmap = Bitmap.createScaledBitmap(bitmapRev,
  95.                                         (int) (bitmapRev.getWidth() * drawSizeX),
  96.                                         (int) (bitmapRev.getHeight() * drawSizeY), false);
  97.                 }
  98.         }
  99.  
  100.         public void setTargetPic(Bitmap targetPic) {
  101.                 target = targetPic;
  102.         }
  103.  
  104. }