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.
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.
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);
}
}
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