Suche…


Übersetzen Sie eine Zeichenfolge

Zeichenfolgen können internationalisiert werden, indem für jede unterstützte Sprache eine andere Zeichenfolge.xml definiert wird.

Sie fügen eine neue Sprache hinzu, indem Sie ein neues Werteverzeichnis mit dem ISO-Sprachcode als Suffix erstellen. Wenn Sie beispielsweise ein deutsches Set hinzufügen, könnte Ihre Struktur wie folgt aussehen:

Geben Sie hier die Bildbeschreibung ein

Wenn das System nach der angeforderten Zeichenfolge sucht, prüft es zuerst die sprachspezifische XML-Datei. Wird sie nicht gefunden, wird der Wert aus der Standarddatei strings.xml zurückgegeben. Der Schlüssel bleibt für jede Sprache gleich und nur der Wert ändert sich.

Beispielinhalt:

/res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">HelloWorld</string>
    <string name="hello_world">Hello World!</string>
</resources>

/res/values-fr/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello_world">Bonjour tout le monde !!!</string>
</resources>

Zeichenketten definieren

Zeichenfolgen werden normalerweise in der Ressourcendatei strings.xml gespeichert. Sie werden mit einem <string> XML-Element definiert.

Der Zweck von strings.xml ist es, Internationalisierung zu ermöglichen. Sie können für jeden Sprachcode eine Zeichenfolge.xml definieren. Wenn das System nach dem String 'app_name' sucht, prüft es zuerst die der aktuellen Sprache entsprechende XML-Datei. Wenn es nicht gefunden wird, sucht es nach dem Eintrag in der Standarddatei strings.xml. Dies bedeutet, dass Sie nur einige Ihrer Strings lokalisieren können, andere jedoch nicht.

/res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Hello World App</string>
    <string name="hello_world">Hello World!</string>
</resources>

Sobald eine Zeichenfolge in einer XML-Ressourcendatei definiert ist, kann sie von anderen Teilen der App verwendet werden.

Die XML-Projektdateien einer App können ein <string> -Element verwenden, indem sie auf @string/string_name . Beispielsweise enthält die Manifestdatei (/manifests/AndroidManifest.xml) einer App standardmäßig die folgende Zeile in Android Studio:

android:label="@string/app_name"

Dies weist Android an, nach einer <string> -Ressource mit dem Namen "app_name" zu suchen, die als Name für die App verwendet werden soll, wenn sie installiert oder in einem Startprogramm angezeigt wird.

Ein anderes Mal, wenn Sie eine <string> -Ressource aus einer XML-Datei in Android verwenden würden, wäre dies eine Layoutdatei. Das folgende Beispiel stellt eine Textansicht dar, die die hello_world definierte hello_world Zeichenfolge anzeigt:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world"/>

Sie können auch auf <string> -Ressourcen aus dem Java-Teil Ihrer App zugreifen. Um unseren hello_world String innerhalb einer Activity-Klasse von oben hello_world , verwenden Sie:

String helloWorld = getString(R.string.hello_world);

String-Array definieren

Um ein String-Array zu definieren, schreiben Sie in eine Ressourcendatei

res / values ​​/ filename.xml

<string-array name="string_array_name">
    <item>text_string</item>
    <item>@string/string_id</item>
</string-array>

zum Beispiel

res / values ​​/ arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="string_array_example">
        <item>@string/app_name</item>
        <item>@string/hello_world</item>
    </string-array>
</resources>

und benutze es aus Java gerne

String[] strings = getResources().getStringArray(R.array.string_array_example;
Log.i("TAG",Arrays.toString(strings)));

Ausgabe

I/TAG: [HelloWorld, Hello World!]

Bemaßungen definieren

Dimensionen werden normalerweise in einem Ressourcendateinamen dimens.xml . Sie werden mit einem <dimen> -Element definiert.

res / values ​​/ dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="small_padding">5dp</dimen>
    <dimen name="medium_padding">10dp</dimen>
    <dimen name="large_padding">20dp</dimen>

    <dimen name="small_font">14sp</dimen>
    <dimen name="medium_font">16sp</dimen>
    <dimen name="large_font">20sp</dimen>
</resources> 

Sie können verschiedene Einheiten verwenden:

  • sp: Skalenunabhängige Pixel. Für Schriftarten
  • dp: Dichteunabhängige Pixel. Für alles andere
  • pt: Punkte
  • px: Pixel
  • mm: Millimeter
  • im: Zoll

Dimensionen können jetzt in XML mit der Syntax @dimen/name_of_the_dimension .

Zum Beispiel:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/large_padding">
</RelativeLayout>

Integer definieren

Integer werden normalerweise in einer Ressourcendatei namens integers.xml gespeichert, der Dateiname kann jedoch beliebig gewählt werden. Jede Ganzzahl wird mit einem <integer> -Element definiert, wie in der folgenden Datei gezeigt:

res / values ​​/ integers.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="max">100</integer>
</resources> 

Integer können jetzt in XML mit der Syntax @integer/name_of_the_integer , wie im folgenden Beispiel gezeigt:

<ProgressBar
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:max="@integer/max"/>

Definieren Sie ein ganzzahliges Array

Um ein ganzzahliges Array zu definieren, schreiben Sie in eine Ressourcendatei

res / values ​​/ filename.xml

<integer-array name="integer_array_name">
    <item>integer_value</item>
    <item>@integer/integer_id</item>
</integer-array>

zum Beispiel

res / values ​​/ arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array name="fibo">
        <item>@integer/zero</item>
        <item>@integer/one</item>
        <item>@integer/one</item>
        <item>@integer/two</item>
        <item>@integer/three</item>
        <item>@integer/five</item>
    </integer-array>
</resources>

und benutze es aus Java gerne

int[] values = getResources().getIntArray(R.array.fibo);
Log.i("TAG",Arrays.toString(values)));

Ausgabe

I/TAG: [0, 1, 1, 2, 3, 5]

Farben definieren

Farben werden normalerweise in einer Ressourcendatei mit dem Namen colors.xml im Ordner /res/values/ gespeichert.

Sie werden durch <color> -Elemente definiert:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

    <color name="blackOverlay">#66000000</color>
</resources>

Farben werden durch hexadezimale Farbwerte für jeden Farbkanal (0 - FF) in einem der folgenden Formate dargestellt:

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB

Legende

  • Ein Alpha-Kanal-0-Wert ist vollständig transparent, der FF-Wert ist undurchsichtig
  • R - roter Kanal
  • G - grüner Kanal
  • B - blauer Kanal

Definierte Farben können in XML mit der folgenden Syntax @color/name_of_the_color

Zum Beispiel:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/blackOverlay">

Farben im Code verwenden

In diesen Beispielen wird davon ausgegangen, dass this um eine Aktivitätsreferenz handelt. An seiner Stelle kann auch eine Kontextreferenz verwendet werden.

1.6
int color = ContextCompat.getColor(this, R.color.black_overlay);
view.setBackgroundColor(color);
6,0
int color = this.getResources().getColor(this, R.color.black_overlay);
view.setBackgroundColor(color);

In der obigen Deklaration colorPrimary werden colorPrimaryDark und colorAccent verwendet, um Materialdesign-Farben zu definieren, die zum Definieren eines benutzerdefinierten Android- styles.xml in styles.xml . Sie werden automatisch hinzugefügt, wenn ein neues Projekt mit Android Studio erstellt wird.

Ressourcen ohne "veraltete" Warnungen erhalten

Bei Verwendung der Android-API 23 oder höher ist eine solche Situation häufig zu sehen:

Geben Sie hier die Bildbeschreibung ein

Diese Situation wird durch die strukturelle Änderung der Android-API in Bezug auf das Abrufen der Ressourcen verursacht.
Nun die Funktion:

public int getColor(@ColorRes int id, @Nullable Theme theme) throws NotFoundException    

sollte benutzt werden. Die android.support.v4 Bibliothek hat jedoch eine andere Lösung.

Fügen Sie der Datei build.gradle die folgende Abhängigkeit build.gradle :

com.android.support:support-v4:24.0.0

Dann stehen alle Methoden aus der Support Library zur Verfügung:

ContextCompat.getColor(context, R.color.colorPrimaryDark);
ContextCompat.getDrawable(context, R.drawable.btn_check);
ContextCompat.getColorStateList(context, R.color.colorPrimary);
DrawableCompat.setTint(drawable);
ContextCompat.getColor(context,R.color.colorPrimaryDark));

Darüber hinaus können weitere Methoden aus der Support-Bibliothek verwendet werden:

ViewCompat.setElevation(textView, 1F);
ViewCompat.animate(textView);
TextViewCompat.setTextAppearance(textView, R.style.AppThemeTextStyle);
...

Definieren Sie eine Menüressource und verwenden Sie sie in Aktivität / Fragment

Definieren Sie ein Menü in res / menu

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/first_item_id"
        android:orderInCategory="100"
        android:title="@string/first_item_string"
        android:icon="@drawable/first_item_icon"
        app:showAsAction="ifRoom"/>

    <item
        android:id="@+id/second_item_id"
        android:orderInCategory="110"
        android:title="@string/second_item_string"
        android:icon="@drawable/second_item_icon"
        app:showAsAction="ifRoom"/>

</menu>

Weitere Konfigurationsoptionen finden Sie unter: Menüressource

Inside- Activity :

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    ///Override defining menu resource
    inflater.inflate(R.menu.menu_resource_id, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

@Override
public void onPrepareOptionsMenu(Menu menu) {
    //Override for preparing items (setting visibility, change text, change icon...)
    super.onPrepareOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    //Override it for handling items
    int menuItemId = item.getItemId();
    switch (menuItemId) {
        case: R.id.first_item_id
             return true; //return true, if is handled
    }
    return super.onOptionsItemSelected(item);
}

Um die obigen Methoden während der getActivity().invalidateOptionsMenu(); der Ansicht aufzurufen, rufen Sie getActivity().invalidateOptionsMenu();

In Fragment ein zusätzlicher Aufruf erforderlich:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    setHasOptionsMenu(true);
    super.onCreateView(inflater, container, savedInstanceState);
}

String-Formatierung in strings.xml

Das Definieren von Strings in der Datei strings.xml ermöglicht auch die Formatierung von Strings. Der einzige Nachteil ist, dass der String mit dem folgenden Code behandelt werden muss, anstatt ihn einfach an ein Layout anzuhängen.

<string name="welcome_trainer">Hello Pokémon Trainer, %1$s! You have caught %2$d Pokémon.</string>
String welcomePokemonTrainerText = getString(R.string.welcome_trainer, tranerName, pokemonCount);

In obigem Beispiel
% 1 $ s
'%' trennt sich von normalen Zeichen,
'1' bezeichnet den ersten Parameter,
'$' wird als Trennzeichen zwischen Parameternummer und Typ verwendet.
's' bezeichnet den String-Typ ('d' wird für eine ganze Zahl verwendet)

Beachten Sie, dass getString() ist eine Methode der Context oder Resources , dh Sie können es direkt innerhalb eines verwenden können Activity oder sonst können Sie verwenden getActivity().getString() oder getContext().getString() sind.

Definieren Sie eine Farbstatusliste

Farbstatuslisten können als Farben verwendet werden, ändern sich jedoch je nach dem Status der Ansicht, für die sie verwendet werden.

Um eine zu definieren, erstellen Sie eine Ressourcendatei in res/color/foo.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#888888" android:state_enabled="false"/>
    <item android:color="@color/lightGray" android:state_selected="false"/>
    <item android:color="@android:color/white" />
</selector>

Elemente werden in der Reihenfolge bewertet, in der sie definiert sind, und es wird der erste Artikel verwendet, dessen angegebene Status mit dem aktuellen Status der Ansicht übereinstimmen. Daher empfiehlt es sich, am Ende ein Catch-All anzugeben, ohne dass Zustandsselektoren angegeben werden.

Jedes Element kann entweder ein Farb-Literal verwenden oder auf eine an anderer Stelle definierte Farbe verweisen.

String Plurals definieren

Um zwischen Plural- und Singularzeichenfolgen zu unterscheiden, können Sie in Ihrer Datei strings.xml einen Plural definieren und die unterschiedlichen Größen auflisten , wie im folgenden Beispiel gezeigt:

<?xml version="1.0" encoding="utf-8"?>
<resources>  
    <plurals name="hello_people">
        <item quantity="one">Hello to %d person</item>
        <item quantity="other">Hello to %d people</item>
    </plurals>
</resources>

Auf diese Definition kann aus Java-Code mit der Methode getQuantityString() der Resources Klasse getQuantityString() , wie im folgenden Beispiel gezeigt:

getResources().getQuantityString(R.plurals.hello_people, 3, 3);

Hierbei ist der erste Parameter R.plurals.hello_people der Ressourcenname. Der zweite Parameter (in diesem Beispiel 3 ) wird verwendet, um die richtige quantity auszuwählen. Der dritte Parameter (in diesem Beispiel ebenfalls 3 ) ist das Formatargument, das zum Ersetzen des Formatbezeichners %d .

Mögliche Mengenwerte (in alphabetischer Reihenfolge) sind:

few
many
one
other
two
zero

Es ist wichtig zu beachten, dass nicht alle Gebiete jede quantity . Zum Beispiel hat die chinesische Sprache kein Konzept one Elements. Englisch hat keinen zero , da er grammatikalisch dem other . Nicht unterstützte quantity werden von der IDE als Lint-Warnungen gekennzeichnet, verursachen jedoch keine Komplikationsfehler, wenn sie verwendet werden.

Importieren Sie ein in Ressourcen definiertes Array von Objekten

Es gibt Fälle, in denen benutzerdefinierte Objekte erstellt und in den Ressourcen der Anwendung definiert werden müssen. Solche Objekte können aus einfachen Java Typen bestehen, z. B. Integer , Float , String .

Hier ist das Beispiel, wie ein in Anwendungsressourcen definiertes Objekt importiert wird. Das Objekt Category enthält 3 Eigenschaften der Kategorie:

  • ICH WÜRDE
  • Farbe
  • Name

Dieses POJO hat eine entsprechende Entsprechung in der Datei categories.xml , wobei für jedes Array dieselben Eigenschaften für jede Kategorie definiert sind.

  1. Erstellen Sie ein Modell für Ihr Objekt:
public class Category {
    private Type id;
    private @ColorRes int color;
    private @StringRes String name;

    public Category getId() {
        return id;
    }

    public void setId(Category id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getColor() {
        return color;
    }

    public void setColor(int color) {
        this.color = color;
    }

    public enum Type{
        REGISTRATION,
        TO_ACCEPT,
        TO_COMPLETE,
        TO_VERIFY,
        CLOSED
    }
}
  1. Erstellen Sie die Datei im Ordner res/values :

categories.xml

  1. Stellen Sie jedes Modell zusammen, das aus Ressourcen besteht:
<array name="no_action">
    <item>0</item>
    <item>@android:color/transparent</item>
    <item>@string/statusRegistration</item>
</array>
<array name="to_accept">
    <item>1</item>
    <item>@color/light_gray</item>
    <item>@string/acceptance</item>
</array>
<array name="opened">
    <item>2</item>
    <item>@color/material_green_500</item>
    <item>@string/open</item>
</array>
<array name="to_verify">
    <item>3</item>
    <item>@color/material_gray_800</item>
    <item>@string/verification</item>
</array>
<array name="to_close">
    <item>4</item>
    <item>@android:color/black</item>
    <item>@string/closed</item>
</array>
  1. Definieren Sie ein Array in der Ressourcendatei:

    <array name="categories">
        <item>@array/no_action</item>
        <item>@array/to_accept</item>
        <item>@array/opened</item>
        <item>@array/to_verify</item>
        <item>@array/to_close</item>
    </array>
    
  2. Erstellen Sie eine Funktion, um sie zu importieren:

    @NonNull
    public List<Category> getCategories(@NonNull Context context) {
    final int DEFAULT_VALUE = 0;
    final int ID_INDEX = 0;
    final int COLOR_INDEX = 1;
    final int LABEL_INDEX = 2;
    
    if (context == null) {
        return Collections.emptyList();
    }
    // Get the array of objects from the `tasks_categories` array
    TypedArray statuses = context.getResources().obtainTypedArray(R.array.categories);
    if (statuses == null) {
        return Collections.emptyList();
    }
    List<Category> categoryList = new ArrayList<>();
    for (int i = 0; i < statuses.length(); i++) {
        int statusId = statuses.getResourceId(i, DEFAULT_VALUE);
        // Get the properties of one object
        TypedArray rawStatus = context.getResources().obtainTypedArray(statusId);
    
        Category category = new Category();
    
        int id = rawStatus.getInteger(ID_INDEX, DEFAULT_VALUE);
        Category.Type categoryId;
        //The ID's should maintain the order with `Category.Type`
        switch (id) { 
            case 0:
                categoryId = Category.Type.REGISTRATION;
                break;
            case 1:
                categoryId = Category.Type.TO_ACCEPT;
                break;
            case 2:
                categoryId = Category.Type.TO_COMPLETE;
                break;
            case 3:
                categoryId = Category.Type.TO_VERIFY;
                break;
            case 4:
                categoryId  = Category.Type.CLOSED;
                break;
            default:
                categoryId = Category.Type.REGISTRATION;
                break;
        }
        category.setId(categoryId);
    
        category.setColor(rawStatus.getResourceId(COLOR_INDEX, DEFAULT_VALUE));
    
        int labelId = rawStatus.getResourceId(LABEL_INDEX, DEFAULT_VALUE);
        category.setName(getString(context.getResources(), labelId));
    
        categoryList.add(taskCategory);
    }
    return taskCategoryList;
    }
    

9 Patches

9 Flecken sind streckbare Bilder, bei denen die Bereiche, die gedehnt werden können, durch schwarze Markierungen auf einem transparenten Rand definiert werden.

Es gibt ein großes Tutorial hier .
Obwohl es so alt ist, ist es immer noch so wertvoll und es hat vielen von uns geholfen, die 9-Patch-Ausrüstung tief zu verstehen.

Leider wurde diese Seite in letzter Zeit vorübergehend nicht mehr angezeigt (derzeit ist sie wieder verfügbar).

Daher ist es notwendig, eine physische Kopie dieser Seite für Android-Entwickler auf unseren zuverlässigen Servern zu haben.

Hier ist es.

EIN EINFACHER HILFE ZUM 9-PATCH FÜR ANDROID UI 18. Mai 2011

Während ich an meiner ersten Android-App arbeitete, fand ich 9-Patch (aka 9.png) verwirrend und schlecht dokumentiert. Nach einer Weile habe ich endlich herausgefunden, wie es funktioniert und beschloss, etwas zusammen zu werfen, um anderen zu helfen, es herauszufinden.

Grundsätzlich verwendet 9-Patch png-Transparenz, um eine erweiterte Form von 9-Slice oder Scale9 zu erstellen. Bei den Hilfslinien handelt es sich um gerade schwarze 1-Pixel-Linien, die am Bildrand gezeichnet werden und die Skalierung und Füllung des Bildes bestimmen. Indem Sie Ihre Bilddatei name.9.png benennen, erkennt Android das 9.png-Format und verwendet die schwarzen Hilfslinien, um Ihre Bitmaps zu skalieren und zu füllen.

Hier ist eine grundlegende Übersichtskarte:

Geben Sie hier die Bildbeschreibung ein

Wie Sie sehen, haben Sie auf jeder Seite Ihres Bildes eine Anleitung. Die TOP- und LEFT-Hilfslinien dienen zum Skalieren Ihres Bildes (dh 9-Slice), während die RECHTEN und UNTEN-Hilfslinien den Füllbereich definieren.

Die schwarzen Hilfslinien werden von Ihrem Bild abgeschnitten / entfernt - sie werden in der App nicht angezeigt. Die Hilfslinien müssen nur ein Pixel breit sein. Wenn Sie also eine 48 × 48-Taste wünschen, ist Ihr Png tatsächlich 50 × 50. Alles, was dicker als ein Pixel ist, bleibt Teil Ihres Bildes. (Meine Beispiele verfügen über 4 Pixel breite Hilfslinien zur besseren Sichtbarkeit. Sie sollten eigentlich nur 1 Pixel groß sein).

Ihre Guides müssen durchgehend schwarz sein (# 000000). Sogar ein geringfügiger Unterschied in Farbe (# 000001) oder Alpha führt zum Ausfall und zur normalen Dehnung. Dieser Fehler wird auch nicht offensichtlich sein *, er versagt lautlos! Ja. Ja wirklich. Jetzt wissen Sie.

Beachten Sie auch, dass der verbleibende Bereich der Einpixel-Kontur vollständig transparent sein muss. Dazu gehören die vier Ecken des Bildes - diese sollten immer klar sein. Dies kann ein größeres Problem sein, als Sie annehmen. Wenn Sie beispielsweise ein Bild in Photoshop skalieren, werden Anti-Alias-Pixel hinzugefügt, die fast unsichtbare Pixel enthalten können, was dazu führt, dass das Bild auch ausfällt *. Wenn Sie in Photoshop skalieren müssen, verwenden Sie die Einstellung "Nächster Nachbar" im Pulldown-Menü "Bild neu berechnen" (unten im Popup-Menü "Bildgröße"), um scharfe Kanten auf den Hilfslinien zu erhalten.

* (aktualisiert 1/2012) Dies ist eigentlich ein "Update" im neuesten Entwicklungskit. Zuvor manifestierte es sich, als alle Ihre anderen Bilder und Ressourcen plötzlich brechen, nicht das tatsächlich zerbrochene 9-Patch-Bild.

Geben Sie hier die Bildbeschreibung ein

Die TOP- und LEFT-Hilfslinien werden verwendet, um den skalierbaren Teil Ihres Bildes zu definieren - LEFT für die Skalierungshöhe und TOP für die Skalierungsbreite. Wenn Sie ein Schaltflächenbild als Beispiel verwenden, bedeutet dies, dass sich die Schaltfläche innerhalb des schwarzen Bereichs horizontal und vertikal erstrecken kann. Alle anderen Elemente, z. B. die Ecken, bleiben gleich groß. Mit können Sie Schaltflächen verwenden, die auf jede Größe skaliert werden können und ein einheitliches Erscheinungsbild beibehalten.

Beachten Sie, dass 9-Patch-Bilder nicht verkleinert werden - sie werden nur vergrößert. Also fangen Sie am besten so klein wie möglich an.

Sie können auch Teile in der Mitte der Skalenlinie auslassen. Wenn Sie beispielsweise eine Schaltfläche mit einem scharfen, glänzenden Rand in der Mitte haben, können Sie einige Pixel in der Mitte der LEFT-Hilfslinie auslassen. Die horizontale Mittelachse Ihres Bildes wird nicht skaliert, sondern nur die darüber und darunter liegenden Teile, so dass Ihr scharfer Glanz nicht mit Anti-Aliasing oder Fuzzy-Effekt versehen wird.

Füllbereich

Hilfslinien für den Ausfüllbereich sind optional und bieten eine Möglichkeit, den Bereich für Elemente wie Ihre Textbeschriftung festzulegen. Ausfüllen bestimmt, wie viel Platz in Ihrem Bild zum Platzieren von Text, Symbolen oder anderen Dingen vorhanden ist. 9-patch ist nicht nur für Knöpfe, sondern auch für Hintergrundbilder.

Das obige Beispiel für die Schaltfläche und das Etikett ist übertrieben, um die Idee des Füllens zu erläutern. Das Etikett ist nicht vollständig genau. Um ehrlich zu sein, habe ich noch nicht erfahren, wie Android mehrzeilige Beschriftungen ausführt, da es sich bei einer Schaltflächenbeschriftung normalerweise um eine einzelne Textzeile handelt.

Zum Abschluss möchten wir Ihnen zeigen, wie die Skalierungs- und Füllhilfslinien variieren können, beispielsweise ein LinearLayout mit Hintergrundbild und vollständig abgerundeten Seiten:

Geben Sie hier die Bildbeschreibung ein

In diesem Beispiel wird die LEFT-Anleitung nicht verwendet, wir benötigen jedoch weiterhin eine Anleitung. Das Hintergrundbild wird nicht vertikal skaliert. es skaliert nur horizontal (basierend auf der TOP-Anleitung). Wenn Sie die Füllhilfslinien betrachten, erstrecken sich die Hilfslinien RECHTS und UNTEN über die Stelle, an der sie auf die gebogenen Kanten des Bildes treffen. Dadurch kann ich meine runden Knöpfe in der Nähe der Ränder des Hintergrunds platzieren, um ein enges, enges Aussehen zu erzielen.

So, das war es. 9-Patch ist super einfach, sobald Sie es bekommen. Die Skalierung ist zwar nicht perfekt, aber der Füllbereich und die mehrzeiligen Skalierungshilfslinien bieten mehr Flexibilität als herkömmliche 9-Slice- und Scale9-Formate. Probieren Sie es aus und Sie werden es schnell herausfinden.

Farbtransparenz (Alpha)

Hex-Deckkraftwerte

    ------------------------------
   |   Alpha(%)  |   Hex Value    |
    ------------------------------
   |    100%     |      FF        |
   |     95%     |      F2        |
   |     90%     |      E6        |
   |     85%     |      D9        |
   |     80%     |      CC        |
   |     75%     |      BF        |
   |     70%     |      B3        |
   |     65%     |      A6        |
   |     60%     |      99        |
   |     55%     |      8C        |
   |     50%     |      80        |
   |     45%     |      73        |
   |     40%     |      66        |
   |     35%     |      59        |
   |     30%     |      4D        |
   |     25%     |      40        |
   |     20%     |      33        |
   |     15%     |      26        |
   |     10%     |      1A        |
   |      5%     |      0D        |
   |      0%     |      00        |
    ------------------------------   

Wenn Sie 45% auf Rot setzen möchten.

<color name="red_with_alpha_45">#73FF0000</color> 

Hexadezimalwert für Rot - # FF0000

Sie können 73 für 45% Deckkraft im Präfix hinzufügen - # 73FF0000

Mit der Datei strings.xml arbeiten

Eine Zeichenfolgenressource enthält Textzeichenfolgen für Ihre Anwendung mit optionaler Textgestaltung und -formatierung. Es gibt drei Arten von Ressourcen, die Ihrer Anwendung Strings zur Verfügung stellen können:

String

XML resource that provides a single string.

Syntax:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="string_name">text_string</string>
</resources>

Und diese Zeichenfolge im Layout verwenden:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/string_name" />

String Array

XML resource that provides an array of strings.

Syntax:

    <resources>
<string-array name="planets_array">
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
</string-array>

Verwendungszweck

Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);

Anzahl Zeichenketten (Plurals)

XML resource that carries different strings for pluralization. 

Syntax:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <plurals
        name="plural_name">
        <item
            quantity=["zero" | "one" | "two" | "few" | "many" | "other"]
            >text_string</item>
    </plurals>
</resources>

Verwendungszweck:

int count = getNumberOfsongsAvailable();
Resources res = getResources();
String songsFound = res.getQuantityString(R.plurals.plural_name, count, count);


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow