[JAVA] [Android] Ich möchte die Qualitätssicherung vereinfachen ... Das stimmt! Lassen Sie uns ein Debug-Menü erstellen!

Was ist das Debug-Menü?

Versteckte Funktionen für Softwareentwickler. Da es sich nur um eine Funktion für Entwickler handelt, ist es Standard, dass allgemeine Benutzer sie nicht bedienen können.

Brauchst du es?

Es ist kein Muss. Es dient nur dazu, das Debuggen zu vereinfachen. Beginnen wir also damit, von der Person zu hören, die das Debuggen durchführt. Wenn jedoch eine Stimme sagt, dass es schön wäre, sie zu haben, oder wenn das Debuggen eines Ingenieurs erforderlich ist, ist es besser, sie zu erstellen.

Funktionsbeispiel implementiert

Anzeigen & Kopieren

Aktion

Implementierungsbeispiel

Dies ist ein Beispiel für eine Artikelzelle. Ich denke, es ist okay für Eltern, es in ScrollView einzuschließen und zu multiplizieren.

activity_debug_menu.xml


<!--Kürzung-->

                <!--Element Anzeige des übergeordneten Namens&Kopieren-->
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="@dimen/listview_height"
                android:background="@color/debug_item_parent_color"
                android:orientation="horizontal">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginLeft="@dimen/listview_margin_left"
                    android:gravity="left"
                    android:text="Anzeige&Kopieren"
                    android:textColor="@color/debug_text_color"
                    android:textSize="14sp"/>

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@android:color/white"
                android:orientation="vertical">

                <!-- Item Child Name Build Ver. -->
                <LinearLayout
                    android:id="@+id/build_info_area"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/listview_height"
                    android:layout_gravity="center"
                    android:background="@drawable/default_selector"
                    android:clickable="true"
                    android:orientation="horizontal"
                    android:paddingLeft="@dimen/listview_margin_left">

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent">

                        <ImageView
                            android:layout_width="@dimen/listview_icon_width"
                            android:layout_height="@dimen/listview_icon_height"
                            android:layout_gravity="center"
                            android:layout_marginRight="@dimen/listview_icon_margin_right"
                            android:background="@drawable/ic_build_36dp"/>

                    </LinearLayout>

                    <LinearLayout
                        android:layout_width="125dp"
                        android:layout_height="match_parent">

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="match_parent"
                            android:layout_gravity="center"
                            android:layout_marginRight="10dp"
                            android:gravity="center"
                            android:text="BUILD Ver."
                            android:textSize="@dimen/listview_item_text_size"/>

                    </LinearLayout>

                <!--Akquisition Ver-->
                    <TextView
                        android:id="@+id/build_info_txt"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:gravity="left|center"
                        android:text="Ver.X.XX.X"
                        android:textColor="@color/debug_text_color"
                        android:textSize="@dimen/listview_item_text_size"/>

                </LinearLayout>

                <!--Separator-->
                <include layout="@layout/component_divider_wrap"/>

<!--Kürzung-->

Es ist nur eine Trennlinie.

component_divider_wrap.xml


<merge xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/div"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="72dp"
        android:layout_weight="1">

        <View style="@style/divider_horizontal"/>

    </LinearLayout>
</merge>

Ein Beispiel wird in onCreate als Beispiel beschrieben, aber es wird schwierig zu lesen, wenn die Anzahl der Elemente zunimmt. Daher kann es sinnvoll sein, Elemente mit Butter Knife zu binden.

DebugMenuActivity.java


public class DebugMenuActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_debug_menu);
        
        // Build Ver. Text
        TextView buildInfoTxt = (TextView)findViewById(R.id.build_info_txt);
        
        buildInfoTxt.setText("Ver. " + BuildConfig.VERSION_NAME + " " + BuildConfig.BUILD_TIMESTAMP + " " + BuildConfig.BUILD_HASH + " (" + BuildConfig.BUILD_MACHINE + ")");
        // Build Ver. Area
    LinearLayout buildInfoArea =(LinearLayout)findViewById(R.id.build_info_area);
        
        buildInfoArea.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                copyClipBoard((String)buildInfoTxt.getText());
            }
        });
    }

   //In Clip kopieren
   private void copyClipBoard(String copySource) {
        if (copySource.equals("")) {
            return;
        }
 
        //Erstellen Sie ein Element, das in der Zwischenablage gespeichert werden soll
        ClipData.Item item = new ClipData.Item(copySource);

        //Erstellen eines MIME-TYPES
        String[] mimeType = new String[1];
        mimeType[0] = ClipDescription.MIMETYPE_TEXT_URILIST;

        //Erstellen eines ClipData-Objekts zum Speichern in der Zwischenablage
        ClipData cd = new ClipData(new ClipDescription("text_data", mimeType), item);

        //Speichern Sie Daten in der Zwischenablage
        ClipboardManager cm = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
        cm.setPrimaryClip(cd);
    }
}

Siehe unten

Wenn Sie eine Funktion hinzufügen, die einen Vorschlag gibt, wenn Sie auf das Symbol tippen, wenn Sie den Hostnamen mit Selbstzufriedenheit ändern, ist dies überraschend beliebt, oder wenn Sie es implementieren, weil es besser ist, den externen Zugriff zu authentifizieren, gibt Pl ** mir gegrilltes Fleisch War ** ** Athleteningenieure, die gegrilltes Fleisch mögen! Lass es uns machen: Sonnenbrille: **

Der 23. Dezember ist @ yuzu_afro an der Reihe!

Recommended Posts

[Android] Ich möchte die Qualitätssicherung vereinfachen ... Das stimmt! Lassen Sie uns ein Debug-Menü erstellen!
[Einführung in die Android App-Entwicklung] Machen wir einen Zähler
Ich möchte ein bestimmtes Modell von ActiveRecord ReadOnly erstellen
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich möchte mit link_to [Hinweis] eine Schaltfläche mit einem Zeilenumbruch erstellen.
Ich möchte eine Webanwendung entwickeln!
Ich habe versucht, eine einfache Gesichtserkennungs-Android-Anwendung mit OpenCV zu erstellen
Ich möchte einen Unit Test schreiben!
[Java] Ich möchte es einfacher machen, weil es schwierig ist, System.out.println einzugeben
Lassen Sie uns eine TODO-Anwendung mit Java 2 erstellen. Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hello-Welt erstellen
[Android] Ich möchte einen ViewPager erstellen, der für Tutorials verwendet werden kann
Rails6 Ich möchte ein Array von Werten mit einem Kontrollkästchen erstellen
[Android] Ich habe mit ListView + Bottom Sheet einen Materiallistenbildschirm erstellt
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
[Ruby] Ich möchte einen Methodensprung machen!
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich möchte eine Struktur für die Ausnahmebehandlung entwerfen
Ich habe versucht, ein einfaches Spiel mit Javafx zu machen ① "Lass uns Glücksspiel finden" (unvollendete Version ②)
Ich möchte ein kleines Symbol in Rails verwenden
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich möchte eine Funktion in der Rails Console definieren
[Android Studio] Ich möchte eine Maven-Bibliothek unter Android verwenden
Ich möchte die Protokollausgabe unter Android vereinfachen
Ich möchte eine generische Anmerkung für einen Typ erstellen
Ich möchte der Kommentarfunktion eine Löschfunktion hinzufügen
Ich habe versucht, TabLayout unter Android eine Trennlinie hinzuzufügen
[Java] Ich möchte ein Byte-Array in eine Hexadezimalzahl konvertieren
Ich möchte einen relativen Pfad in einer Situation finden, in der Pfad verwendet wird
Ich möchte eine Methode aufrufen und die Nummer zählen
Ich wollte nur eine reaktive Eigenschaft in Java erstellen
Ich möchte ein Formular erstellen, um die Kategorie [Schienen] auszuwählen
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Ich möchte dem select-Attribut einen Klassennamen geben
Ich möchte eine Parkettdatei auch in Ruby erstellen
Ich habe einen RESAS-API-Client in Java erstellt
Ich möchte FireBase verwenden, um eine Zeitleiste wie Twitter anzuzeigen