it-swarm-eu.dev

jak vytvořit vlastní motiv a použít jej v aplikaci Android

Jak vytvořit vlastní motivy a použít je v kódu? v nabídce jak implementovat možnost motivu a požádat o aktivitu?

nějaké nápady ?

15
user428231

Na webu vývojářů systému Android je k dispozici průvodce Nice Styles and Themes . V podstatě to, co musíte udělat, je

  1. Definovat styl (nebo zdědit vestavěný). Definování stylu

uložte soubor XML do adresáře res/values/ vašeho projektu. Jméno souboru XML Je libovolné, ale musí použít příponu .xml A uložit do složky res/values/.

Kořenový soubor XML souboru musí být <resources>.

Pro každý styl, který chcete vytvořit, přidejte prvek do souboru S názvem, který jedinečně identifikuje styl (tento atribut je vyžadován ).

tj.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.MyGreenTheme" parent="Theme.Light">
        <item name="Android:windowBackground">#11aa22</item>
    </style>
</resources>

Je užitečné pojmenovat zdrojový soubor themes.xml, takže je snazší rozpoznat, pro co jsou tyto styly používány.

  1. Použít definovaný styl na aktivitu nebo zobrazení, které chcete Stylizovat. Můžeš buď

    • nastavit motiv aktivity/aplikace v souboru manifestu:

    <activity Android:theme="@style/Theme.MyGreenTheme"/>

    • nebo jej nastavte dynamicky - použijte odpovídající nastavovač třídy aktivity - setTheme () .
13
stan0

Toto je ideální místo, které vytváří všechny potřebné soubory, které potřebujete k vytvoření vlastního uživatelského rozhraní. Použil jsem to osobně před pár týdny a bylo to skvělé pro mě.

Nemám žádnou příslušnost k tomuto webu, ale bylo to velmi zajímavé. Doufám, že vám to může pomoci :)

3
Michele La Ferla

Vytvořit vlastní zobrazení:

public class CustomTextView rozšiřuje AppCompatTextView {

public CustomTextView(Context context) {
    super(context);
    setCommonChanges(DefaultTheme.getInstance().textColor, true, context);
}

public CustomTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    setDefaultValues(context, attrs);
}

public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    setDefaultValues(context, attrs);
}

private void setDefaultValues(Context context, AttributeSet attrs) {

    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomTextView);
    final int N = a.getIndexCount();
    int color = DefaultTheme.getInstance().textColor;
    boolean isCustomFont = a.getBoolean(R.styleable.CustomTextView_isCustomFont, true);
    for (int i = 0; i < N; ++i) {

        int colorIndex = a.getInteger(R.styleable.CustomTextView_tvBackground, 2);
        switch (colorIndex) {
            case 1:
                color = DefaultTheme.getInstance().headingTextColor;
                break;

            case 2:
                color = DefaultTheme.getInstance().textColor;
                break;

            case 3:
                color = DefaultTheme.getInstance().textHintColor;
                break;

            case 4:
                color = DesignUtils.getColorIdFromHexCode("#FFFFFF");
                break;

            case 5:
                color = DefaultTheme.getInstance().iconColor;
                break;
            case 6:
                color = DefaultTheme.getInstance().menuHeaderTextColor;
                break;
            case 7:
                color = DefaultTheme.getInstance().menuTextColor;
                break;
            case 8:
                color = DefaultTheme.getInstance().keyboardtextcolor;
                break;
            case 9:
                color = DesignUtils.getColorIdFromHexCode("#BEBEBE");
                break;
        }


    }
    a.recycle();

    setCommonChanges(color, isCustomFont, context);
}

private void setCommonChanges(int color, boolean isCustomFont, Context context) {
    if (isCustomFont) {
        Typeface typeface = DefaultTheme.getInstance().getTVFont(context);
        setTypeface(typeface, getTypeface().getStyle());
    }
    setTextColor(color);
}

public void updateTypeFace(int style){
    Typeface typeface = DefaultTheme.getInstance().getTVFont(getContext());
    setTypeface(typeface, style);
}
0
Kushaal Singla