Sto utilizzando Bitmap per la creazione di immagini di firma digitale. Durante la memorizzazione della firma sul dispositivo, solo la firma è stata memorizzata con sfondo nero. Voglio sfondo verde con firma.Android: Bitmap: come salvare la tela con sfondo verde in Android?
Qui è il mio codice Bitmap
// Bitmap View
public class MyView extends View implements OnClickListener
{
public int height;
public int width;
private Bitmap mBitmap;
private Path mPath;
private Paint mBitmapPaint;
public MyView(Context c)
{
super(c);
mPath = new Path();
mBitmapPaint = new Paint(Paint.DITHER_FLAG);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
super.onSizeChanged(w, h, oldw, oldh);
Wid = w;
Ht = h;
mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
}
@Override
protected void onDraw(final Canvas canvas)
{
canvas.drawColor(0xFFFFFFFF);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
// onclick listner for SAVE button
saveButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//capture the image
try {
saveAsJpg(mBitmap);
startActivity(new Intent(Paint.this, SignatureActivity.class));
finish();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
private float mX, mY;
private static final float TOUCH_TOLERANCE = 4;
private void touch_start(float x, float y)
{
mPath.reset();
mPath.moveTo(x, y);
mX = x;
mY = y;
System.out.println("---- " +mX);
}
private void touch_move(float x, float y)
{
float dx = Math.abs(x - mX);
float dy = Math.abs(y - mY);
if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
mX = x;
mY = y;
}
}
private void touch_up()
{
mPath.lineTo(mX, mY);
// commit the path to our offscreen
mCanvas.drawPath(mPath, mPaint);
// kill this so we don't double draw
mPath.reset();
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
touch_start(x, y);
invalidate();
break;
case MotionEvent.ACTION_MOVE:
touch_move(x, y);
invalidate();
break;
case MotionEvent.ACTION_UP:
touch_up();
invalidate();
break;
}
return true;
}
posso in grado di vedere lo sfondo verde durante la creazione della firma, ma viene salvato sul blackground nero. ti prego di aiutarmi, Grazie in anticipo
pubblicare il saveAsJpg) codice del metodo (.... – himanshu
@rahul abbiamo bisogno di impostare lo sfondo di tela in 'Metodo onSizeChanged' perché Bitmap che hai usato per salvarlo usa 'canvas' di' onSizeChanged', E hai impostato il colore Canvas in 'onDraw', quindi verrà mostrato, ma non si applica a Bitmap. Controlla il mio codice aggiornato. – Herry