Signature which is used in many cases
such as proof of delivery, inspection forms,to purchase new sim card.Here is sample program that how to make signature using canvas. And you can save this signature as png.
public signature(Context context,
AttributeSet attrs)
{
super(context,
attrs);
paint.setAntiAlias(true);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeWidth(STROKE_WIDTH);
}
@Override
protected
void onDraw(Canvas canvas)
{
canvas.drawPath(path,
paint);
}
@Override
public
boolean onTouchEvent(MotionEvent event)
{
float
eventX = event.getX();
float
eventY = event.getY();
mGetSign.setEnabled(true);
switch
(event.getAction())
{
case
MotionEvent.ACTION_DOWN:
path.moveTo(eventX,
eventY);
lastTouchX
= eventX;
lastTouchY
= eventY;
return
true;
case
MotionEvent.ACTION_MOVE:
case
MotionEvent.ACTION_UP:
resetDirtyRect(eventX,
eventY);
int
historySize = event.getHistorySize();
for
(int i = 0; i < historySize; i++)
{
float
historicalX = event.getHistoricalX(i);
float
historicalY = event.getHistoricalY(i);
expandDirtyRect(historicalX,
historicalY);
path.lineTo(historicalX,
historicalY);
}
path.lineTo(eventX,
eventY);
break;
default;
return
false;
}
invalidate((int)
(dirtyRect.left - HALF_STROKE_WIDTH),
(int)
(dirtyRect.top - HALF_STROKE_WIDTH),
(int)
(dirtyRect.right + HALF_STROKE_WIDTH),
(int)
(dirtyRect.bottom + HALF_STROKE_WIDTH));
lastTouchX
= eventX;
lastTouchY
= eventY;
return
true;
}
private
void expandDirtyRect(float historicalX, float historicalY)
{
if
(historicalX < dirtyRect.left)
{
dirtyRect.left
= historicalX;
}
else
if (historicalX > dirtyRect.right)
{
dirtyRect.right
= historicalX;
}
if
(historicalY < dirtyRect.top)
{
dirtyRect.top
= historicalY;
}
else
if (historicalY > dirtyRect.bottom)
{
dirtyRect.bottom
= historicalY;
}
}
private
void resetDirtyRect(float eventX, float eventY)
{
dirtyRect.left
= Math.min(lastTouchX, eventX);
dirtyRect.right
= Math.max(lastTouchX, eventX);
dirtyRect.top
= Math.min(lastTouchY, eventY);
dirtyRect.bottom
= Math.max(lastTouchY, eventY);
}
}
}
No comments:
Post a Comment