1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. funk, 17.03.2010 #1
    funk

    funk Threadstarter Android-Hilfe.de Mitglied

    Hallo,

    ich habe in meiner App eine if-Abfrage, die dafür sorgt dass die App
    100mal auf die Antwort eines Bluetooth-Senders wartet.
    Jetzt möchte ich das Ganze auch noch grafisch etwas schöner machen
    (vor allem, da ich das bisher mit Discoverys mache und die einfach ne
    zeitlang dauern..).

    Dabei hab ich mir das so vorgestellt, dass ich entweder
    eine Textview nehme und darin die Anzahl der Durchläufe darstelle.
    Alternativ ein ShapeDrawable mit gerundeten Ecken...weils schee macht!

    Der Hintergrund soll dabei [Anzahl_der_Durchläufe]% grün von unten her
    sein und der Rest weiß. Damit ist es dann beim 100sten Durchlauf komplett
    grün (in meiner Vorstellung).

    Leider hab ich keine Ahnung, wie ich einen zweifarbigen Hintergrund
    ohne Bild hin bekomme!

    Bin für jede Anregung dankbar!

    Gruß,
    Frank
     
  2. Shinigami, 17.03.2010 #2
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Views haben doch eine Methode setBackgroundDrawable(...), sollte man damit nicht in der Lage sein selbst erzeugte Drawables (in Deinem Fall mit dem farblichen Verlauf) als Hintergrund zu verwenden?

    Gruß,
    Shini
     
  3. DieGoldeneMitte, 17.03.2010 #3
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Man könnte auch ein FrameLayout nehmen und dann im hinteren View herummalen.
     
  4. funk, 17.03.2010 #4
    funk

    funk Threadstarter Android-Hilfe.de Mitglied

    @Shinigami: Dann müsste ich aber wieder die drawables vorbereiten
    und schon davor in meinen /res ordner setzen (was immer noch die
    Frage offen lässt, wie ich den Hintergrund zweifarbig ohne Verlauf
    hinbekomm...) ... kommt im Endeffekt aufs Gleiche raus, wie Bilder
    vorbereiten und in den /res Ordner zu packen, oder?

    @DieGoldeneMitte: Das FrameLayout hilft mir doch da noch nicht viel!?
    Das was du ansprichst ist ja nur die Tatsache, dass Child-Objekte des
    Layouts sich überschreiben...danach müsste ich ja mit Shinigamis Idee
    weiter machen um den Hintergrund zu verändern. Oder versteh ich da
    was am FrameLayout nicht?

    Gruß,
    Frank
     
  5. Shinigami, 17.03.2010 #5
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Hi,

    nein selbst programmtechnisch ein Drawable erstellen, nicht aus den Ressourcen lesen.

    Gruß,
    Shini
     
  6. DieGoldeneMitte, 17.03.2010 #6
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Mein Gedanke war, dass Du im FrameLayout ein bel. View Objekt zu einem Hintergrund des Objektes machen kannst, dass davor liegt.

    Shinigamis Ansatz mit dem Drawable ist da natürlich direkter, hat nur dann einen leichten Nachteil, wenn man mit einem eigenen Background auch die Widgetdekoration (Stichwort padding) selber machen muss.

    (Habe gerade gelernt, dass sowas in Arbeit ausarten kann :))
     
    Zuletzt bearbeitet: 17.03.2010
  7. funk, 17.03.2010 #7
    funk

    funk Threadstarter Android-Hilfe.de Mitglied

    @Shini: Ok, stimmt: das kann man natürlich auch in Code lösen! Bleibt die
    Frage, wie ich ein drawable mache, dass zu XX% die eine Farbe und zu
    (100-XX)% die andere Farbe hat...

    @DGM: Dein Ansatz wäre dann das "hinten" liegende View-Objekt anhand
    der Anzahl der Durchläufe nach oben zu bewegen?

    Danke schon mal und Gruß,
    Frank

    EDIT: Könnte es vielleicht doch mit einem 9-Patch funktionieren? So wie
    bei der Batterie-Ladeanzeige und dann doch mit der FrameLayout
    Variante von DieGoldeneMitte (siehe http://androiddrawableexplorer.appspot.com/ )
     
    Zuletzt bearbeitet: 17.03.2010
  8. DieGoldeneMitte, 18.03.2010 #8
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Ich dachte eigentlich an sowas wie einen View, in dem
    man stumpf mittels onDraw( Canvas c ) herummalt.

    Kann sein, dass das eine dumme Idee ist...
     
  9. Fr4gg0r, 18.03.2010 #9
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)


    ich würde eine eigene View vorschlagen:
    Code:
    public fortschritt = height;
    onDraw(Canvas c){
    Paint p = new Paint();
    p.setColor(Color.GREEN);
    c.drawColor(Color.GRAY);
    c.drawRect(0, getWidth(), fortschritt, getHeight(), p);
    Thread.sleep(50);
    fortschritt--;
    }
    invalidate();
    
    Du würdest dann natürlich fortschritt bei jedem Durchlauf um einen gewissen Teil reduzieren und dann invalidate(); aufrufen.
     
  10. funk, 19.03.2010 #10
    funk

    funk Threadstarter Android-Hilfe.de Mitglied

    @Fr4gg0r: Das muss ich mal ausprobieren...hört sich gut an! Ich würde in
    dem Fall dann halt noch

    Code:
    public hoehe = height;
    public teil = hoehe/100;
    fortschritt = durchlauf*teil;
    anstatt

    Code:
    public fortschritt = height;
    einfügen. Wobei "durchlauf" von meiner App hochgezählt wird und
    dann tatsächlich den prozentualen Fortschritt meiner 100 Durchläufe
    anzeigen würde.

    Gruß,
    Frank
     
  11. ko5tik, 21.03.2010 #11
    ko5tik

    ko5tik Android-Experte

    Schon mal über Animationen nachgedacht? Alles schon deklarativ, aber natürlich nur von
    Hapttread zu benutzen:


    Code:
    
    <!-- emerge drawable  out of nothing -->
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="150"
               android:interpolator="@android:anim/accelerate_interpolator"/>
    
        <scale
                android:interpolator="@android:anim/accelerate_interpolator"
                android:fromXScale="0.01" android:toXScale="1.0"
                android:fromYScale="0.01" android:toYScale="1.0"
                android:pivotX="50%"
                android:pivotY="50%"
                android:zAdjustment="normal"
                android:fillBefore="false"
                android:fillEnabled="true"
                android:fillAfter="true"
                android:duration="150"/>
        
    </set>
    
    Und dann:

    Code:
        void appear(Drawable image) {
            setImageDrawable(image);
            startAnimation(emerge);
        }
    
    (wie es aussieht demonstriert link in meinen signatur)
    Leider wie ziemlich alles bei Android nur id dem Source-Code ausreichend dokumentiert ;)
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Komplexe View erstellen Android App Entwicklung 13.09.2017
[OFFEN] RadioButtons mit Button Tinting sehen auf Geräten unterschiedlich aus (API > 21) Android App Entwicklung 09.09.2017
[ERLEDIGT] Wie erstelle ich einen Ripple Effekt ohne hintergrund Farbe? Android App Entwicklung 18.07.2017
[RÜCKMELDUNG FEHLT] Text und Bilder in View einbinden Android App Entwicklung 26.03.2017
[OFFEN] Wie kann ich mehrere Marker in eine MapView laden Android App Entwicklung 25.03.2017
[ERLEDIGT] View zum selektieren der Wochentage Android App Entwicklung 19.03.2017
Tage zwischen zwei Terminen berechnen Android App Entwicklung 22.02.2017
SQL-Abfrage über zwei Tabellen realisieren Android App Entwicklung 12.02.2017
Fehlermeldung: Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer... Android App Entwicklung 30.01.2017
Farben ändern und permanent speichern Android App Entwicklung 19.01.2017
Du betrachtest das Thema "Zwei unterschiedliche Farben in einer View - Batterie-Laden-Effekt" im Forum "Android App Entwicklung",