| |||||||
Das Thema "Unterschriften-Feld" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Sensation Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
| hat sich schon mal jemand damit beschäftigt, eine Unterschrift in seiner App entgegenzunehmen? Es muß auch kein großartiger Check oder so gemacht werden, quasi bräuchte man sowas wie "paint light" oder so. Also einfach ein Feld, wo man (mit dem Finger?) seinen Karl Otto zeichnen kann und dann als Grafik abspeichern. Jemand eine Idee? Hab auch schon gegoogelt, aber da finde ich irgendwie nur fertige Apps von Drittanbietern, aber nichts, wie man sowas selbst entwickelt ... Gruß, Tom Ich hab jetzt doch noch was gefunden: TouchPaint.java | Android Developers Allerdings läuft das erst ab Api Level 9 (2.3.1) und blendet die Linien auch wieder aus. Aber ich denke als Grundlage sollte es genügen, wenn es auch viel mehr macht als ich will ;-) Ein einfacheres Beispiel (am besten ab Api Level 4) ist natürlich gerne gesehen :-) Geändert von Kev (26.03.2012 um 19:22 Uhr) Grund: Doppelpost... Bitte vermeiden und Ändernbutton nutzen... |
| | |
| | #2 (permalink) |
| Android-Hilfe.de Mitglied |
Hi Tom299, du nimmst eine Klasse leitest diese vom View ab. Aktivierst DrawingCache. onTouchListener, onClickListener -> fährst du mit dem Finger über den Screen wird mehrmals onTouch ausgelösst, lässte los, onClick.. voila eine Linie mit paar Punkten. Methode onDraw(Canvas) überschreiben. canvas.drawLine von Punkt zu Punkt . Wenne fertig bist, nimmste den Cache und du hast ein Bitmap/Drawable was du als Array abspeichern kannst *g Gibt bestimmtt effektive Alternativen, aber diese funktioniert und als Ansatz sollte ja reichen ![]() regards |
| | |
| Folgender Benutzer bedankt sich bei Neeldarax für diesen Beitrag: | Tom299 (14.09.2011) |
| | #3 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Sensation Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
|
Ich habs hinbekommen, hab mich aber dann doch am original Code-Beispiel orientiert, ansonsten müßte ich mir alle gezeichneten Linien merken, was ich aber nicht will usw. ![]() Falls jemand mal sowas in der Art braucht, hier meine kleine Beispiel-App: Code: package test.de;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class Unterschrift extends Activity {
private static final int MENU_CLEAR = Menu.FIRST;
private static final int MENU_SAVE = Menu.FIRST+1;
private static final int MENU_LOAD = Menu.FIRST+2;
private DrawView drawView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawView = new DrawView(this);
drawView.setBackgroundColor(Color.WHITE);
setContentView(drawView);
drawView.requestFocus();
}
@Override public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_CLEAR, 0, "Clear");
menu.add(0, MENU_SAVE, 0, "Save");
menu.add(0, MENU_LOAD, 0, "Load");
return super.onCreateOptionsMenu(menu);
}
@Override public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_CLEAR:
drawView.clearBitmap();
return true;
case MENU_SAVE:
drawView.saveBitmap();
return true;
case MENU_LOAD:
drawView.loadBitmap();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
} Code: package test.de;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.View;
public class DrawView extends View {
private Paint paint = new Paint();
private float lastX, lastY;
private boolean drawing = false;
private Bitmap bitmap;
private Canvas canvas;
public DrawView(Context context) {
super(context);
setFocusable(true);
paint.setAntiAlias(true);
paint.setARGB(255, 255, 255, 255);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.RGB_565);
canvas = new Canvas(bitmap);
if (bitmap != null) {
canvas.drawBitmap(bitmap, 0, 0, null);
}
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (bitmap != null) {
canvas.drawBitmap(bitmap, 0, 0, null);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
drawPoint(event.getX(), event.getY(), event.getPressure());
return true;
}
else if (event.getAction() == MotionEvent.ACTION_UP) {
drawing = false;
return true;
}
else if (event.getAction() == MotionEvent.ACTION_MOVE) {
drawing = true;
drawPoint(event.getX(), event.getY(), event.getPressure());
return true;
}
return false;
}
private void drawPoint(float x, float y, float pressure) {
if (bitmap != null) {
//int pressureLevel = (int)(pressure * 255);
//paint.setARGB(pressureLevel, 255, 255, 255);
paint.setARGB(255, 255, 255, 255);
if (drawing) {
canvas.drawLine(lastX, lastY, x, y, paint);
}
else {
canvas.drawPoint(x, y, paint);
}
lastX = x;
lastY = y;
invalidate();
}
}
public void clearBitmap() {
if (canvas != null) {
paint.setARGB(0xff, 0, 0, 0);
canvas.drawPaint(paint);
invalidate();
}
}
public void saveBitmap() {
if (bitmap != null) {
try {
String path = Environment.getExternalStorageDirectory() + "/unterschrift/signatures";
File dir = new File(path);
if (!dir.exists() || !dir.isDirectory()) {
dir.mkdirs();
}
File file = new File(dir.getAbsolutePath() + "/signature.png");
FileOutputStream fos;
fos = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, fos);
fos.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException io) {
io.printStackTrace();
}
}
}
public void loadBitmap() {
String path = Environment.getExternalStorageDirectory() + "/unterschrift/signatures/signature.png";
Bitmap bmp = BitmapFactory.decodeFile(path);
if (bmp != null) {
if (canvas != null) {
canvas.drawBitmap(bmp, 0, 0, null);
}
invalidate();
}
}
} Code: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| TicTacToe-Feld erstellen | Nivel | Android App Entwicklung | 0 | 03.06.2011 10:37 |
| Virtuelle Tastatur bei Klick auf EditText Feld deaktivieren | Danny787 | Android App Entwicklung | 0 | 01.06.2011 01:15 |
| abnormales magnetischhes feld | elLoko | HTC Legend Forum | 14 | 09.04.2011 20:53 |
| Feld mit Nummern | pemko | Android App Entwicklung | 4 | 12.10.2010 11:06 |
| Funambol: Adressen stehen komplet im Feld Ort | speerwerfer | Sonstige Apps & Widgets | 0 | 28.05.2010 08:41 |