Bonjour, je voudrai savoir quel composant faut t'il utilisé pour faire une sorte de EditText mais avec écriture avec un stylet pour une signature manuscrite
merci les amis
Bonjour, je voudrai savoir quel composant faut t'il utilisé pour faire une sorte de EditText mais avec écriture avec un stylet pour une signature manuscrite
merci les amis
Personnellement pour réaliser ça lors d'un projet, j'avais utiliser un LinearLayout dans mon layout dans lequel j'appliquais un composant "view" depuis ma classe. Je te met le code :
Et après pour la récupération, une fois la signature dessinée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 private MyView myView; LinearLayout conteneurSignature; protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.xx); conteneurSignature = (LinearLayout)findViewById(R.id.conteneurSignature); myView = new MyView(this); conteneurSignature.addView(myView); }
Voila j'espère t'avoir aidé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Bitmap bmMyView = myView.getCanvasBitmap(); //Save in file File folder = new File(Environment.getExternalStorageDirectory () + "/NomDuDossierPourStocker"); if(!folder.exists()) { folder.mkdir(); } String extStorageDirectory = Environment.getExternalStorageDirectory().toString()+ "/NomDuDossierPourStocker"; OutputStream outStream = null; File file = new File(extStorageDirectory, id+".jpg"); try { outStream = new FileOutputStream(file); bmMyView.compress(Bitmap.CompressFormat.JPEG, 100, outStream); outStream.flush(); outStream.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Salut, peut tu expliquer un peut ton code?
j'ai créé mon layout et ma view mes comment dessiner dans le composant vew
merci
Oups il y'en manque un bout, la prévisualisation a du buguer un peu, tu peux difficilement créer le composant MyView si je te le donne pas![]()
MyView.java
J'ai retrouvé le tuto dont je m'étais servi : http://android-coding.blogspot.fr/20...stom-view.html
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class MyView extends View { boolean freeTouched = false; Path freePath; Bitmap myCanvasBitmap = null; Canvas myCanvas = null; Matrix identityMatrix; public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); } public MyView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onDraw(Canvas canvas) { canvas.drawColor(Color.WHITE); if(freeTouched){ Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.MAGENTA); paint.setStrokeWidth(5); // canvas.drawColor(Color.BLACK); myCanvas.drawPath(freePath, paint); canvas.drawBitmap(myCanvasBitmap, identityMatrix, null); } } @Override public boolean onTouchEvent(MotionEvent event) { switch(event.getAction()){ // case MotionEvent.ACTION_UP: // freeTouched = false; // break; case MotionEvent.ACTION_DOWN: freeTouched = true; freePath = new Path(); freePath.moveTo(event.getX(), event.getY()); break; case MotionEvent.ACTION_MOVE: freePath.lineTo(event.getX(), event.getY()); invalidate(); break; } return true; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int w = MeasureSpec.getSize(widthMeasureSpec); int h = MeasureSpec.getSize(heightMeasureSpec); myCanvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); myCanvas = new Canvas(); myCanvas.setBitmap(myCanvasBitmap); identityMatrix = new Matrix(); setMeasuredDimension(w, h); } public void cleanBoard() { freePath.reset(); myCanvasBitmap.eraseColor(Color.WHITE); // mPaths.clear(); invalidate(); } public Bitmap getCanvasBitmap(){ // myCanvasBitmap.eraseColor(Color.WHITE); return myCanvasBitmap; } }
Salut, bon j'ai réussi finalement à créer quelque chose, pas toute a fait au point car il faut tout de même une view assez grande pour pouvoir signer
Ta une idée l'ami
Merci
Partager