WebHU - Programozási kérdések és válaszok

Hogyan hozzunk létre lépésről lépésre haladó sávot Androidon

3 alkalommal szeretném bemenetként regisztrálni a felhasználó hangját. Ehhez szeretnék létrehozni egy felhasználói felületet (az XML fájlt), amely az 1. lépésről a 2. lépésre mozgatva animál, amikor az első felvétel elkészül, amelyet a start stop gombok vezérelnének. és végül lépjen a 3. lépésre..... Valami ehhez hasonló -

adja meg itt a kép leírását

Nem tudom, hogyan magyarázzam el ezt a google-nak! Kérem, segítsen!!


Válaszok:


1

Az Ön által megadott képhez leginkább hasonló Android-komponens valószínűleg az Android diszkrét SeekBar:

<SeekBar
        android:id="@+id/seekbar"
        style="@style/Widget.AppCompat.SeekBar.Discrete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="3" />

A style="@style/Widget.AppCompat.SeekBar.Discrete" és a android:max="3" a sávot 3 részre osztja és 4 pipával határolja el őket, amelyek az Ön esetében a felhasználói beviteli fázisokat jelenthetik.

A progress attribútum ezután tükrözi a fázisokat a 0, 1, 2, 3 egész értékekkel, amelyeket beállíthat, hogy folytassa a folyamatot:

private SeekBar mSeekBar = (SeekBar) findViewById(R.id.seekbar);

public void nextPhase() {
    mSeekBar.setProgress(mSeekBar.getProgress() + 1);
}

Ne feledje, hogy a SeekBar felhasználói bevitelre szolgál, így ha csak a gombokkal/hangbeviteli eseményekkel kell vezérelnie, a normál viselkedést le kell tiltani:

mSeekBar.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // True doesn't propagate the event
        // the user cannot move the indicator
        return true;
    }
});

Ha szöveget szeretne megjeleníteni minden lépés mellett, de nem szeretne kiterjeszteni SeekBar, akkor megpróbálhat 4 TextViews-ot a sáv alá igazítani egy LinearLayout vagy TableLayout jellel, és módosítani layout_weight és a szélességeket, itt az egyenletes nézetelosztás témakörét tárgyaljuk lehetséges-e egyenletesen eloszthatja a gombokat egy androidos lineáris elrendezés szélességében.

Az animáció azonban nem működik zökkenőmentesen a SeekBar diszkrét verziójában a progress kis értékei miatt. Ha animációt szeretne, használjon normál 0-100 előrehaladást SeekBar, vagy hozzon létre egy egyénit a lépések támogatásához, például:

public class StepsSeekBar extends SeekBar {

    int mSteps;
    int mCurrentStep;
    int mStepWidth;

    public StepsSeekBar(Context context, AttributeSet attrs, int steps) {
        super(context, attrs);
        mSteps = steps;
        mCurrentStep = 0;
        mStepWidth = 100 / mSteps;
    }

    public nextStep() {
        // Animate progress to next step
        ObjectAnimator animator = ObjectAnimator.ofInt(this, "progress", mStepWidth * mCurrentStep, mStepWidth * (++mCurrentStep));
        animator.setDuration(/* Duration */);
        animator.start();
    }
}

A sáv aspektusa testreszabható a témában:

<style name="StepsSeekBar" parent="Base.Widget.AppCompat.SeekBar">
    <item name="android:indeterminateOnly"></item>
    <item name="android:progressDrawable"></item>
    <item name="android:indeterminateDrawable"></item>
    <item name="android:thumb"><!-- The circle drawable --></item>
    <item name="android:focusable"></item>
</style>
<!-- In the discrete SeekBar -->
<item name="tickMark"><!-- The circles indicating steps --></item>

Itt Hogyan adhat hozzá TextView-t a SeekBar hüvelykujj közepéhez? további információt találhat a szöveg hozzáadásával kapcsolatban a folyamatjelző hüvelykujjban.

A normál vízszintes ProgressBar is használható, de nem mutat indikátort, ezt egyedi megvalósításban kell megrajzolni.

11.07.2017
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..