Demonstrates the handling of touch screen events to

Basic Tutorials concerning: GUI, Views, Activites, XML, Layouts, Intents, ...

Demonstrates the handling of touch screen events to

Postby CHAKYANAS » Thu Mar 20, 2008 7:38 pm

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. /**
  2.  
  3.  * Demonstrates the handling of touch screen events to implement a simple
  4.  
  5.  * painting app.
  6.  
  7.  */
  8.  
  9. package com.e2esp.android.drawing;
  10.  
  11.  
  12.  
  13.  
  14.  
  15. import android.app.Activity;
  16.  
  17. import android.content.Context;
  18.  
  19. import android.graphics.Bitmap;
  20.  
  21. import android.graphics.Canvas;
  22.  
  23. import android.graphics.Color;
  24.  
  25. import android.graphics.Paint;
  26.  
  27. import android.graphics.PorterDuff;
  28.  
  29. import android.graphics.Rect;
  30.  
  31. import android.os.Bundle;
  32.  
  33. import android.view.MotionEvent;
  34.  
  35. import android.view.View;
  36.  
  37.  
  38.  
  39. //Need the following import to get access to the app resources, since this
  40.  
  41. //class is in a sub-package.
  42.  
  43.  
  44.  
  45.  
  46.  
  47. /**
  48.  
  49.  * Demonstrates the handling of touch screen events to implement a simple
  50.  
  51.  * painting app.
  52.  
  53.  */
  54.  
  55. public class TouchPaint extends Activity {    
  56.  
  57.        
  58.  
  59.     @Override
  60.  
  61.     protected void onCreate(Bundle icicle) {
  62.  
  63.         super.onCreate(icicle);
  64.  
  65.         setContentView(new MyView(this));
  66.  
  67.        
  68.  
  69.        
  70.  
  71.     }
  72.  
  73.    
  74.  
  75.     public class MyView extends View {
  76.  
  77.         Bitmap mBitmap;
  78.  
  79.         Canvas mCanvas;
  80.  
  81.         private final Rect mRect = new Rect();
  82.  
  83.         private final Paint mPaint;
  84.  
  85.         private boolean mCurDown;
  86.  
  87.         private int mCurX;
  88.  
  89.         private int mCurY;
  90.  
  91.         private float mCurPressure;
  92.  
  93.         private float mCurSize;
  94.  
  95.         private int mCurWidth;
  96.  
  97.        
  98.  
  99.         boolean isActionMove = false;
  100.  
  101.         private int[] xCoord;
  102.  
  103.         private int[] yCoord;
  104.  
  105.         private int count = 0;
  106.  
  107.        
  108.  
  109.        
  110.  
  111.         public MyView(Context c) {
  112.  
  113.             super(c);
  114.  
  115.             mPaint = new Paint();
  116.  
  117.             mPaint.setAntiAlias(true);
  118.  
  119.             //mPaint.setARGB(0, 0, 0, 0);
  120.  
  121.             mPaint.setColor(Color.BLACK);
  122.  
  123.             xCoord = new int[100];
  124.  
  125.             yCoord = new int[100];
  126.  
  127.         }
  128.  
  129.  
  130.  
  131.         @Override
  132.  
  133.         protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  134.  
  135.             int curW = mBitmap != null ? mBitmap.width() : 0;
  136.  
  137.             int curH = mBitmap != null ? mBitmap.height() : 0;
  138.  
  139.             if (curW >= w && curH >= h) {
  140.  
  141.                 return;
  142.  
  143.             }
  144.  
  145.            
  146.  
  147.             if (curW < w) curW = w;
  148.  
  149.             if (curH < h) curH = h;
  150.  
  151.            
  152.  
  153.             Bitmap newBitmap = Bitmap.createBitmap(curW, curH, false);
  154.  
  155.             Canvas newCanvas = new Canvas();
  156.  
  157.             newCanvas.setDevice(newBitmap);
  158.  
  159.             if (mBitmap != null) {
  160.  
  161.                 newCanvas.drawBitmap(mBitmap, 0, 0, null);
  162.  
  163.             }
  164.  
  165.             mBitmap = newBitmap;
  166.  
  167.             mCanvas = newCanvas;
  168.  
  169.             mCanvas.drawColor(Color.WHITE);
  170.  
  171.         }
  172.  
  173.        
  174.  
  175.         @Override
  176.  
  177.         protected void onDraw(Canvas canvas) {
  178.  
  179.             if (mBitmap != null) {
  180.  
  181.                 canvas.drawBitmap(mBitmap, 0, 0, null);
  182.  
  183.             }
  184.  
  185.         }
  186.  
  187.  
  188.  
  189.        
  190.  
  191.         @Override
  192.  
  193.         public boolean onMotionEvent(MotionEvent event) {
  194.  
  195.             int action = event.getAction();
  196.  
  197.            
  198.  
  199.            
  200.  
  201.            
  202.  
  203.             int X = (int)event.getX();
  204.  
  205.             int Y = (int)event.getY();
  206.  
  207.            
  208.  
  209.             mCurPressure = event.getPressure();
  210.  
  211.             mCurSize = event.getSize();
  212.  
  213.                        
  214.  
  215.             mCurWidth = (int)(mCurSize*(getWidth()/3));
  216.  
  217.            
  218.  
  219.             switch (action ) {
  220.  
  221.            
  222.  
  223.             case MotionEvent.ACTION_DOWN:
  224.  
  225.                 mCurX = (int)event.getX();
  226.  
  227.                 mCurY = (int)event.getY();
  228.  
  229.                 break;
  230.  
  231.                
  232.  
  233.             case MotionEvent.ACTION_MOVE:
  234.  
  235.  
  236.  
  237.                 // saving the coordinates
  238.  
  239.                 xCoord[count] = X;
  240.  
  241.                 yCoord[count] = Y;
  242.  
  243.                 count++;
  244.  
  245.                
  246.  
  247.                 mCanvas.drawLine(mCurX, mCurY, X, Y, mPaint);
  248.  
  249.                
  250.  
  251. //                      Paint paint = new Paint();
  252.  
  253. //                int pressureLevel = (int)(mCurPressure*255);
  254.  
  255. //                paint.setARGB(pressureLevel, 255, 255, 255);
  256.  
  257. //                      paint.setColor(Color.WHITE);
  258.  
  259. //                      mCanvas.drawLine(mCurX, mCurY, X, Y, paint);
  260.  
  261.  
  262.  
  263.                 //isActionMove = true;
  264.  
  265.                 break;
  266.  
  267.                
  268.  
  269.             case MotionEvent.ACTION_UP:
  270.  
  271. //              if (isActionMove)
  272.  
  273.                
  274.  
  275.                 // rub the previous lines
  276.  
  277. /*              for (int i=0; i<count; i++) {                          
  278.  
  279.                         Paint paint = new Paint();
  280.  
  281.                         paint.setColor(Color.WHITE);
  282.  
  283.                         mCanvas.drawLine(0, 0, xCoord[i], yCoord[i], paint);
  284.  
  285.                 }
  286.  
  287. */             
  288.  
  289. //              Paint clearPaint = new Paint();
  290.  
  291. //              clearPaint.setXfermode(new PorterDuff(PorterDuff.Mode.CLEAR));
  292.  
  293. //              mCanvas.drawPaint(clearPaint);
  294.  
  295. //              mCanvas.drawRect(0, 0, xCoord[count] + 10, yCoord[count] + 10, clearPaint);
  296.  
  297.                
  298.  
  299.                 mCanvas.drawLine(mCurX, mCurY, X, Y, mPaint);
  300.  
  301.                 break;
  302.  
  303.          
  304.  
  305.             }
  306.  
  307.             invalidate();
  308.  
  309.                
  310.  
  311.             return true;
  312.  
  313.         }
  314.  
  315.        
  316.  
  317.     }
  318.  
  319. }
Parsed in 0.049 seconds, using GeSHi 1.0.8.4
User avatar
CHAKYANAS
Developer
Developer
 
Posts: 44
Joined: Mon Mar 03, 2008 5:08 am
Location: INDIA

Top

Return to Novice Tutorials

Who is online

Users browsing this forum: No registered users and 10 guests