Animierte Zeichenflächen mit "invalidate" [] (Animierte Zeichenflächen mit "invalidate"), Notizen, Seite 723559
https://www.purl.org/stefan_ram/pub/invalidate_android (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Android-Entwicklung

Animierte Zeichenflächen mit "invalidate"

Main.java
package com.example;

/** Verschiedene statische Hilfsmethoden für Android-Programmierung. */
final class Android
{
/** Laufender Zähler für Ausgaben einer Aufzeichnung. */
static long logcount = 0;
/** 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 dem Etikett
"com.example" und der Einstufung als Information in das Logbuch
geschrieben wird. */
final static void println( final java.lang.Object object )
{ try{ java.lang.Thread.sleep( 50 ); } /* otherwise slow logcat might miss some logs */
catch( final java.lang.InterruptedException exception ){ } /* modified */
android.util.Log.i
( "com.example", "[" + logcount++ + "] " + java.lang.String.valueOf( object )); }}


public class Main extends android.app.Activity
{

public class Canvas extends android.view.View
{ private final java.util.Random generator = new java.util.Random();
public Canvas( final android.content.Context context ){ super( context ); }
boolean first = true;
boolean veryFirst = true;
int oldX = -1;
int oldY = -1;
double xc = 0;
double yc = 0;
int x = -1;
int y = -1;
double vx = 0;
double vy = 0;
double j = 1;

android.graphics.Canvas screen = new android.graphics.Canvas();
android.graphics.Bitmap bitmap;
android.graphics.Paint paint;
android.graphics.Paint bgPaint;


protected void onDraw( final android.graphics.Canvas canvas )
{ boolean border = false;
boolean sticked = false;

for( int i = 0; i < j; ++i )
{ //Android.println( "i = " + i + ", j = " + j );
if( first )
{ // canvas.drawRGB( 0, 0, 0 );
switch( 1 )
{ case 0:
xc = canvas.getWidth() / 2;
yc = canvas.getHeight() / 2;
break;
case 1:
xc = generator.nextInt( canvas.getWidth() );
yc = generator.nextInt( canvas.getHeight() );
break; }
vx = 0;
vy = 0;
oldX = -1;
oldY = -1;
border = false;
sticked = false;
if( veryFirst )
{ paint = new android.graphics.Paint();
paint.setStyle( android.graphics.Paint.Style.FILL );
paint.setColor( android.graphics.Color.WHITE );
bgPaint = new android.graphics.Paint();
bgPaint.setStyle( android.graphics.Paint.Style.FILL );
bgPaint.setColor( android.graphics.Color.BLACK );
bitmap = android.graphics.Bitmap.createBitmap( canvas.getWidth(), canvas.getHeight(), android.graphics.Bitmap.Config.ARGB_8888 );
screen.setBitmap( bitmap );
screen.drawRGB( 0, 0, 0 );
veryFirst = false; }
first = false; }
else
{ vx = vx +( 1 - generator.nextInt( 3 ))/10.0; if( vx > 0.8 )vx = 0.8; if( vx < -0.8 )vx = -0.8;
vy = vy +( 1 - generator.nextInt( 3 ))/10.0; if( vy > 0.8 )vy = 0.8; if( vy < -0.8 )vy = -0.8;
xc = xc + vx;
yc = yc + vy;
x =( int )xc;
y =( int )yc;
border = false; if( false
|| x >= canvas.getWidth()
|| y >= canvas.getHeight()
|| x < 0
|| y < 0 )border = true;
sticked = false;
if( oldX >= 0 && oldY >= 0 )
{ if( !border )screen.drawPoint( oldX, oldY, bgPaint ); }
if( !border &&( x != oldX || y != oldY )&&
( y > 0 &&
( false
||( x > 0 && bitmap.getPixel( x - 1, y - 1 )== android.graphics.Color.WHITE )
||( bitmap.getPixel( x, y - 1 )== android.graphics.Color.WHITE )
||( x < canvas.getWidth() - 1 && bitmap.getPixel( x + 1, y - 1 )== android.graphics.Color.WHITE ))

||( x > 0 && bitmap.getPixel( x - 1, y )== android.graphics.Color.WHITE )
||( x < canvas.getWidth() - 1 && bitmap.getPixel( x + 1, y )== android.graphics.Color.WHITE )

|| y < canvas.getHeight() - 1 &&
( false
||( x > 0 && bitmap.getPixel( x - 1, y + 1 )== android.graphics.Color.WHITE )
||( bitmap.getPixel( x, y + 1 )== android.graphics.Color.WHITE )
||( x < canvas.getWidth() - 1 && bitmap.getPixel( x + 1, y + 1 )== android.graphics.Color.WHITE ))

|| false ))sticked = true;
if( !border )if( x != oldX || y != oldY )
{ // myBitmap.setPixel(x, y, Color.rgb(45, 127, 0));
screen.drawPoint( x, y, paint ); oldX = x; oldY = y; }}
if( border || sticked )first = true; }
j = j < 100000 ? j * 1.001 : j;
canvas.drawBitmap( bitmap, 0, 0, bgPaint );
if( j < 1000 )canvas.drawCircle( x, y,( float )( 1000 / j > 10 ? 10 : 1000 / j ), paint );
super.invalidate(); }}

/*canvas.drawPoint(X, Y, paint);
Here is how you initalize Object of class android.graphics.Paint i.e paint
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);*/

@java.lang.Override public void onCreate( final android.os.Bundle bundle )
{ super.onCreate( bundle );
Main.this.requestWindowFeature( android.view.Window.FEATURE_NO_TITLE );
Main.this.getWindow().getDecorView().setSystemUiVisibility
( 0
| android.view.View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| android.view.View.SYSTEM_UI_FLAG_FULLSCREEN /* hides status bar */
| android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY );
setContentView( new Canvas( this ) ); }}

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 stefanram723559 stefan_ram:723559 Animierte Zeichenflächen mit "invalidate" Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723559, slrprddef723559, 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/invalidate_android