Frage

Ich möchte eine Komponente erstellen, die der Lage, eine ganze Zahl maximal 5 Ziffern im Stil der alten analogen Auto Zähler zu zeigen, und die Ziffer ändern animieren.

das sieht so etwas wie dies vielleicht ...

alt text

Ich habe für diese irgendwie von Beispielen versucht gesucht, aber ich kann nichts so weit finden.

Ihre Meinung Was ist der beste Ansatz, um dies zu erreichen?

schaute ich auf der iphone Alarmzeitauswahl und soweit ich sagen kann, gibt es nur einen festen Hintergrund und schieben sie die Zahlen in oder aus der Ansicht. aber wie platziere ich die Ziffern in diesem Fall und verweisen sie auf einen bestimmten Wert?

tnx.

War es hilfreich?

Lösung

Sie können versuchen, Ihre eigene Sicht zu erstellen, anzeigen erstreckt und zwingende OnDraw (). Hier können Sie Reihen von Zahlen in Bitmaps verwenden und bearbeiten ihre Position auf der Grundlage der Zahl, die Sie anzeigen möchten. Vergessen Sie nicht, invalidate () aufrufen, nachdem neue Zahlen Einstellung der Ansicht neu zu zeichnen.

Ich werde ein Beispiel fügen Sie einen Start für Ihr Projekt enthält. Die Bitmap-Nummer ist eine vertikale Bild mit den Zahlen 1 bis 9 (und 0).

Bsp.

class TickerView extends View { .. 


public void setDouble(double d) {
        value = d;
        invalidate();
    }
        protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int startx = 0;
        int starty = 0;
        DecimalFormat df = new DecimalFormat("#0.00");
        String str = df.format(value);
        String original = Double.toString(value);

        Bitmap nums = BitmapFactory.decodeResource(context.getResources(),
                R.drawable.numbers);

        for (int i = 0; i < str.length(); i++) {
            int num = 0;
            try {
                num = Integer.parseInt(str.charAt(i) + "");
            } catch (Exception e) {
                num = 10;
            }
            int numbefore = 0;
            try {
                numbefore = Integer.parseInt(original.charAt(i -1) + "");
            } catch (Exception e) {
                numbefore = 0;
            }

            canvas.drawBitmap(nums, startx + (i * 40), (starty + 40)
                    - (num * 50) + (numbefore), paintY);

        }
        paintY.setStrokeWidth(10);
        canvas.drawLine(startx, starty+36, startx + (str.length() * 40), starty+36,
                paintY);
        canvas.drawLine(startx, starty + 90, startx + (str.length() * 40),
                starty + 90, paintY);
        invalidate();
    }


}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top