Anpassung der Schrifthöhe mit Android [] (Anpassung der Schrifthöhe mit Android), Lektion, Seite 722725
https://www.purl.org/stefan_ram/pub/schrifthoehe_android (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Android-Entwicklung

Konsolidierung des Zählerprogramms unter Android 

Das Zählerprogramm aus der vorigen Lektion enthält einige überflüssige Teile und Wiederholungen, die vor dem Hinzufügen von Erweiterungen durch eine Überarbeitung des Quelltextes  entfernt werden sollten.

MainActivity.java
package com.example;

/** Verschiedene statische Hilfsmethoden für Android-Programme. */ final class Android
{ /** Laufender Zähler für das Logbuch. Dieser Wert wird wird bei jeder Ausgabe angezeigt und erhöht. */ private static long logcount = 0; /** Pausieren. Ein Aufruf dieser Methode dauert zirka die angegebene Zahl
von Millisekunden.
@param duration Wie viele Millisekunden der Aufruf dauern soll.
(Dieser Wert wird nicht immer zuverlässig eingehalten.) */
private static final void sleep( final int duration )
{ try{ java.lang.Thread.sleep( duration ); }
catch( final java.lang.Exception exception ) {} } /** Ausgabe einer Information in das Logbuch. @param object eine java.lang.Object-Referenz, die wie durch einen Aufruf
der Methode {@link java.lang.String#valueOf(java.lang.Object)} ein
{@link java.lang.String}-Objekt erzeugt, welches dann mit einer
laufenden Numerierung, dem Etikett "com.example" und der Einstufung
als Information in das Logbuch geschrieben wird */
final static void println( final java.lang.Object object )
{ sleep( 50 ); android.util.Log.i
( "com.example", "[" + logcount++ + "] " + java.lang.String.valueOf( object )); } /** Erzeugen eines Parameterbündels zu einer Sichtfläche. Diese Methode liefert ein Parameterbündel zu der als Argument {@code view}
angegebenen Sichtfläche. Falls die Sichtfläche bereits ein
Parameterbündel enthält, so wird dieses zurückgeliefert; ansonsten
wird ein neues Parameterbündel erzeugt und zurückgeliefert,
dessen Breite, Höhe und Gewicht auf Null gesetzt wurden.
@param view eine {@link android.view.View}-Referenz, die nicht gleich null
sein darf
@return ein Parameterobjekt zu der als Argumentwert angegebenen Sichtfläche */ final static android.widget.LinearLayout.LayoutParams getParams( final android.view.View view )
{ final android.view.ViewGroup.LayoutParams old = view.getLayoutParams();
final android.widget.LinearLayout.LayoutParams params = old != null ?
( android.widget.LinearLayout.LayoutParams )old:
new android.widget.LinearLayout.LayoutParams( 0, 0, 0f );
return params; } /** Festlegen der Breite einer Sichtfläche. Diese Methode stellt den Wert für die Breite in den Anordnungsparameter
der Sichtfläche {@code view} auf den Wert {@code width}.
@param view eine {@link android.view.View}-Referenz, die nicht gleich null
sein darf
@param width ein {@code int}-Wert, der für die Breite in den Anordnungsparametern
der angegebenen Sichtfläche zulässig sein muß */
final static void setWidth( final android.view.View view, final int width )
{ final android.widget.LinearLayout.LayoutParams params = getParams( view );
params.width = width; view.setLayoutParams( params ); } /** Festlegen der Höhe einer Sichtfläche. Diese Methode stellt den Wert für die Höhe in den Anordnungsparameter
der Sichtfläche {@code view} auf den Wert {@code height}.
@param view eine {@link android.view.View}-Referenz, die nicht gleich null
sein darf
@param height ein {@code int}-Wert, der für die Höhe in den Anordnungsparametern
der angegebenen Sichtfläche zulässig sein muß */
final static void setHeight( final android.view.View view, final int height )
{ final android.widget.LinearLayout.LayoutParams params = getParams( view );
params.height = height; view.setLayoutParams( params ); } /** Festlegen des Gewichtes einer Sichtfläche. Diese Methode stellt den Wert für die Höhe in den Anordnungsparameter
der Sichtfläche {@code view} auf den Wert {@code height}.
@param view eine {@link android.view.View}-Referenz, die nicht gleich null
sein darf
@param height ein {@code int}-Wert, der für die Höhe in den Anordnungsparametern
der angegebenen Sichtfläche zulässig sein muß */
final static void setWeight( final android.view.View view, final float weight )
{ final android.widget.LinearLayout.LayoutParams params = getParams( view );
params.weight = weight; view.setLayoutParams( params ); }}

/** Ein Objekt der Klasse {@code CounterView} repräsentiert eine
speziell für dieses Programm gestaltete Anzeige für einen Zähler. */
final class CounterView extends android.widget.TextView
{ private int i = -1; /** Zurücksetzen des Zählers. Diese Methode stellt den Wert des Zählers auf {@code 0} zurück. */ private void reset() { CounterView.this.i = -1; CounterView.this.increment(); } /** Inkrementieren des Zählers. Diese Methode erhöht den Wert des Zählers um {@code 1}. */ private void increment() { CounterView.this.setText( ++CounterView.this.i + "" ); } /** Ergibt einen Klickempfänger, der diesen Zähler bei einem Klick zurücksetzt. @return ein Klickempfänger, der diesen Zähler bei einem Klick zurücksetzt */ android.view.View.OnClickListener resetListener()
{ return new android.view.View.OnClickListener()
{ @java.lang.Override public void onClick( final android.view.View view )
{ CounterView.this.reset(); }}; } /** Ergibt einen Klickempfänger, der diesen Zähler bei einem Klick inkrementiert. @return ein Klickempfänger, der diesen Zähler bei einem Klick inkrementiert */ android.view.View.OnClickListener incrementListener()
{ return new android.view.View.OnClickListener()
{ @java.lang.Override public void onClick( final android.view.View view )
{ CounterView.this.increment(); }}; } /** Konstruiert ein {@code CounterView}-Objekt. @param context Der für das neue Objekt zu verwendende Kontext.
Die Bedeutung des Parameters {@code context} für dieses Objekt ist wie unter
{@link android.view.View#View(android.content.Context)} für {@code View} angegeben. */
CounterView( final android.content.Context context )
{ super( context );
CounterView.this.setGravity( android.view.Gravity.RIGHT | android.view.Gravity.BOTTOM );
Android.setWidth( CounterView.this, android.view.ViewGroup.LayoutParams.MATCH_PARENT );
Android.setHeight( CounterView.this, 0 );
Android.setWeight( CounterView.this, 1f );
CounterView.this.increment(); }}

/** Ein Objekt der Klasse {@code Button} repräsentiert eine
speziell für dieses Programm gestaltete Tastfläche. */
final class Button extends android.widget.Button
{ /** Konstruiert ein {@code Button}-Objekt. @param context Der für das neue Objekt zu verwendende Kontext.
Die Bedeutung des Parameters {@code context} für dieses Objekt ist wie unter
{@link android.view.View#View(android.content.Context)} für {@code View} angegeben.
@param label die Beschriftung dieses Objektes @param listener der bei einem Klick auf diese Tastfläche zu benachrichtigende Klickempfänger */ Button
( final android.content.Context context,
final java.lang.CharSequence label,
final android.view.View.OnClickListener listener )
{ super( context );
Button.this.setGravity( android.view.Gravity.LEFT | android.view.Gravity.TOP );
Android.setWidth( Button.this, 0 );
Android.setHeight( Button.this, android.view.ViewGroup.LayoutParams.MATCH_PARENT );
Android.setWeight( Button.this, 1f );
Button.this.setText( label );
Button.this.setOnClickListener( listener ); }}

/** Ein Objekt der Klasse {@code HorizontalLayout} repräsentiert eine
speziell für dieses Programm gestaltete horizontale Anordnung. */
final class HorizontalLayout extends android.widget.LinearLayout
{ /** Konstruiert ein {@code HorizontalLayout}-Objekt. @param context Der für das neue Objekt zu verwendende Kontext.
Die Bedeutung des Parameters {@code context} für dieses Objekt ist wie unter
{@link android.view.View#View(android.content.Context)} für {@code View} angegeben. */
HorizontalLayout
( final android.content.Context context )
{ super( context );
Android.setWidth( HorizontalLayout.this, android.view.ViewGroup.LayoutParams.MATCH_PARENT );
Android.setHeight( HorizontalLayout.this, 0 );
Android.setWeight( HorizontalLayout.this, 1f ); }}

/** Ein Objekt der Klasse {@code VerticalLayout} repräsentiert eine
speziell für dieses Programm gestaltete vertikale Anordnung. */
final class VerticalLayout extends android.widget.LinearLayout
{ /** Konstruiert ein {@code VerticalLayoutLayout}-Objekt. @param context Der für das neue Objekt zu verwendende Kontext.
Die Bedeutung des Parameters {@code context} für dieses Objekt ist wie unter
{@link android.view.View#View(android.content.Context)} für {@code View} angegeben. */
VerticalLayout
( final android.content.Context context )
{ super( context );
VerticalLayout.this.setOrientation( android.widget.LinearLayout.VERTICAL );
Android.setWidth( VerticalLayout.this, android.view.ViewGroup.LayoutParams.MATCH_PARENT );
Android.setHeight( VerticalLayout.this, android.view.ViewGroup.LayoutParams.MATCH_PARENT );
Android.setWeight( VerticalLayout.this, 0f ); }}

/** Eine Aktivität, die einen bedienbaren Zähler implementiert. */ public final class MainActivity extends android.app.Activity
{ /** Diese Methode erstellt den Objektgraphen der Aktivität. @param bundel ein Bündel, dessen Bedeutung durch Android festgelegt ist */ @java.lang.Override public void onCreate
( final android.os.Bundle bundle )
{ super.onCreate( bundle );
Android.println( "running" ); final android.app.Activity activity = this;
final android.content.Context context = this;
final CounterView counterView = new CounterView( context );
final Button incrementButton = new Button( context, "increment", counterView.incrementListener() );
final Button resetButton = new Button( context, "reset", counterView.resetListener() );
final HorizontalLayout horizontalLayout = new HorizontalLayout( context );
final android.widget.LinearLayout verticalLayout = new VerticalLayout( context ); horizontalLayout.addView( incrementButton );
horizontalLayout.addView( resetButton ); verticalLayout.addView( counterView );
verticalLayout.addView( horizontalLayout ); activity.setContentView( verticalLayout ); }}
Wer kennt wen?
    .------------------.
| activity |
'------------------'
# # = Aggregat
| v = Navigierbarkeit
|
.------------------.
| verticalLayout |
'------------------'
# #
| |
| '------------------------.
| |
| |
| |
| .------------------.
| | horizontalLayout |
| '------------------'
| #
| |
| .----------'---------.
| | |
| | |
| | |
| .------------------. .------------------.
| | incrementButton | | resetButton |
| '------------------' '------------------'
| | |
| .-----------------' |
| | |
| | .--------------------------------'
| | |
| v v
.------------------.
| CounterView |
'------------------'

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722725 stefan_ram:722725 Anpassung der Schrifthöhe mit Android Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722725, slrprddef722725, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/schrifthoehe_android