Wednesday, 8 January 2014

Android 2D Graphics Example

Android comes along with powerful open-source API libraries which support custom 2D and 3D graphics as well animations. In this tutorial let’s concentrate only on 2D graphics.
               Android framework API provides 2D drawing APIs for simple animation that does not require major dynamic changes. There are two ways of implementation using these API.
  •    Drawing to a View
  •  Drawing on a Canvas
    

Code: 

DragDrop.java:


package com.android.Graphics ;

import android.app.Activity;

import android.content.Intent;

import android.graphics.Color;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.Window;

import android.view.WindowManager;

import android.widget.Toast;

public class DragDrop extends Activity {

DrawView drawView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// Set full screen view

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

requestWindowFeature(Window.FEATURE_NO_TITLE);

Toast.makeText(getApplicationContext(), "Draw Text on screen", Toast.LENGTH_LONG).show();

getWindow().getDecorView().setBackgroundColor(Color.WHITE);

drawView = new DrawView(this);

setContentView(drawView);

drawView.requestFocus();

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

public boolean onOptionsItemSelected(MenuItem item)

{

switch (item.getItemId())

{

case R.id.Refresh:

Intent intent = getIntent();

intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);

finish();

startActivity(intent);

return true;

default:

return super.onOptionsItemSelected(item);

}

}

}

DrawView.Java:

package com.android.Graphics ;

import java.util.ArrayList;

import java.util.List;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

public class DrawView extends View implements OnTouchListener {

private static final String TAG = "DrawView";

List<Point> points = new ArrayList<Point>();

Paint paint = new Paint();

public DrawView(Context context) {

super(context);

setFocusable(true);

      setFocusableInTouchMode(true);

this.setOnTouchListener(this);

paint.setColor(Color.RED);

paint.setAntiAlias(true);

}

@Override

public void onDraw(Canvas canvas) {

for (Point point : points) {

canvas.drawCircle(point.x, point.y, 5, paint);

// Log.d(TAG, "Painting: "+point);

}

}

public boolean onTouch(View view, MotionEvent event) {

// if(event.getAction() != MotionEvent.ACTION_DOWN)

// return super.onTouchEvent(event);

Point point = new Point();

point.x = event.getX();

point.y = event.getY();

points.add(point);

invalidate();

Log.d(TAG, "point: " + point);

return true;

class Point
{

float x, y;

@Override

public String toString()

{
return x + ", " + y;

}

}


Menu.Xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item

android:id="@+id/Refresh"

android:orderInCategory="100"

android:showAsAction="never"

android:title="Refresh"/>

</menu>