Ich habe mit Android Studio mit Java eine App erstellt für Androidhandys, die Daten aus einer SQL Lite Datenbank zusammen rechnet. Ich möchte nun die App so anpassen, dass sie auch auf einem Windwos und Linuxpc eigenständig läuft. Geht das oder muss man für windwos und Linux alles von grund auf neu programmieren und wenn ja, mit welchen Programmen und wo kriege ich da mehr Infos dazu?
Beiträge von LukasHedinger
-
-
-
Hallo,
Per programmierung erstelle ich ein PDF Dokument. Dummerweise ist die Grundfarbe der ganzen Seite Schwarz. Seit stunden suche ich eine Möglichkeit die Farbe der ganzen Seite auf Weiss zu ändern.
Ich habe versuch die Hintergrundfrabe der ganzen View zu ändern, was aber nichts gebracht hat :-(.
Java
Alles anzeigenprivate void drawPage(PdfDocument.Page page, int pagenumber, StringBuilder datumSB, List<User> druckenVitalstoffe, List<User> lebensmittelAuswahlListe) { Log.d(VitalstoffListe.class.getSimpleName(), "pdf dokument erstellen anfang"); try { View view = ((Activity)context).getWindow().getDecorView().findViewById(android.R.id.content); view.setBackgroundColor(Color.WHITE);
Gibt es eine Möglichkeit direkt das PDF Dokument anzusprechen und so die Hintergrundfarbe zu ändern? Vielleicht hilft es, wenn ich den Code der ganzen Klasse einstelle.Code
Alles anzeigenprivate StringBuilder datumSB; private List<User> druckenVitalstoffe; private List<User> lebensmittelAuswahlListe; private int totalpages = 1; private Context context; private PrintedPdfDocument pdf; private int pageHeight; private int pageWidth; FListeDrucken(Context context, StringBuilder datumSB, List<User> druckenVitalstoffe, List<User> lebensmittelAuswahlListe) { this.context = context; this.datumSB = datumSB; this.druckenVitalstoffe = druckenVitalstoffe; this.lebensmittelAuswahlListe = lebensmittelAuswahlListe; } @Override // muss implementiert werden public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, CancellationSignal cancellationSignal, LayoutResultCallback callback, Bundle extras) { try { Log.d(FListeDrucken.class.getSimpleName(), "layout anfang"); // sofern vorhanden, altes freigeben disposePdf(); pageHeight = newAttributes.getMediaSize().getHeightMils() / 240 * 72; pageWidth = newAttributes.getMediaSize().getWidthMils() / 240 * 72; // neues PDF-Dokument mit den gewünschten Attributen erzeugen pdf = new PrintedPdfDocument(context, newAttributes); // auf Abbruchwunsch reagieren Log.d(FListeDrucken.class.getSimpleName(), "layout vor cancel"); if (cancellationSignal.isCanceled()) { callback.onLayoutCancelled(); disposePdf(); return; } if (totalpages > 0) { // Informationen an das Print-Framework zurückliefern PrintDocumentInfo info = new PrintDocumentInfo.Builder(context.getString(R.string.vitallstoffliste)) .setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT).setPageCount(totalpages).build(); callback.onLayoutFinished(info, !newAttributes.equals(oldAttributes)); } else { // einen Fehler melden callback.onLayoutFailed("Fehler beim Berechnen der Seitenzahl"); } Log.d(FListeDrucken.class.getSimpleName(), "layout ende"); } catch (Exception e) { e.printStackTrace(); } } private boolean pageInRange(PageRange[] pageRanges, int page) { try { for (int i = 0; i < pageRanges.length; i++) { if ((page >= pageRanges[i].getStart()) && (page <= pageRanges[i].getEnd())) return true; } } catch (Exception e) { e.printStackTrace(); } return false; } @Override // muss implementiert werden public void onWrite(PageRange[] pageRanges, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback) { try { Log.d(FListeDrucken.class.getSimpleName(), "write anfang"); for (int i = 0; i < totalpages; i++) { if (pageInRange(pageRanges, i)) { PdfDocument.PageInfo newPage = new PdfDocument.PageInfo.Builder(pageWidth, pageHeight, 1).create(); PdfDocument.Page page = pdf.startPage(newPage); if (cancellationSignal.isCanceled()) { callback.onWriteCancelled(); pdf.close(); pdf = null; return; } drawPage(page, i, datumSB, druckenVitalstoffe, lebensmittelAuswahlListe); pdf.finishPage(page); } } // PDF-Dokument schreiben try { pdf.writeTo(new FileOutputStream( destination.getFileDescriptor())); } catch (IOException e) { callback.onWriteFailed(e.toString()); Log.d(FListeDrucken.class.getSimpleName(), "Write Fehler"); return; } callback.onWriteFinished(pageRanges); Log.d(FListeDrucken.class.getSimpleName(), "layout ende"); } catch (Exception e) { e.printStackTrace(); } } @Override public void onFinish() { disposePdf(); } private void disposePdf() { try { Log.d(FListeDrucken.class.getSimpleName(), "dispose anfang"); if (pdf != null) { pdf.close(); pdf = null; } } catch (Exception e) { e.printStackTrace(); } } private void drawPage(PdfDocument.Page page, int pagenumber, StringBuilder datumSB, List<User> druckenVitalstoffe, List<User> lebensmittelAuswahlListe) { Log.d(VitalstoffListe.class.getSimpleName(), "pdf dokument erstellen anfang"); try { View view = ((Activity)context).getWindow().getDecorView().findViewById(android.R.id.content); view.setBackgroundColor(Color.WHITE); Canvas canvas = page.getCanvas(); Paint paint = new Paint(); canvas.drawPaint(paint); // Überschrift mit Datum int x = 200; String datum = "Tagesbedarf in % von " + datumSB.toString(); paint.setColor(Color.WHITE); paint.setTextSize(50); canvas.drawText(datum, 250, 200, paint);