variable public machen...

tomovic

Bekanntes Mitglied
hallo,
ich möchte gerne meine Variable public machen, bin zu bölde dazu...
Sie heist xpos.
Mein Ziel:
ich mache einen Touch auf mein Dispaly und der Startpunkt von meiner Linie verändert sich.

Java:
package de.carpelibrum.grafik;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.ViewGroup.LayoutParams;
import android.widget.RelativeLayout;

public class GrafikActivity extends Activity{

	public float xpos = 1; // <-----------------------------------hier
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_grafik);  

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.grafik, menu);
		return true;
	}
	public boolean onTouchEvent(MotionEvent event) {
	    int eventaction = event.getAction();

	    switch (eventaction) {
	        case MotionEvent.ACTION_DOWN: 
	        
	            break;

	        case MotionEvent.ACTION_MOVE:
	        	xpos = (int)event.getX();   <<--------------------hier	        	
        	       	
	            break;

	        case MotionEvent.ACTION_UP:   
	            // finger leaves the screen
	            break;
	    }

	    // tell the system that we handled the event and no further processing is required
	    return true; 
	}

}

mein view:

Java:
package de.carpelibrum.grafik;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.ImageView;

public class ZeichnenView extends ImageView {


	public ZeichnenView(Context context, AttributeSet attrs) {
		super(context, attrs);		
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		
		// 1. Paint-Objekt für Blauton und 
		// Linienbreite von 5 Pixeln erzeugen
		Paint pinsel = new Paint();
		pinsel.setColor(Color.rgb(64, 64, 255));
		pinsel.setStrokeWidth(5);
		
		
		// Diagonale durch Leinwand zeichnen
		canvas.drawLine(xpos , 0, getWidth(), getHeight(), pinsel); <------------hier
	}
}
 

tomovic

Bekanntes Mitglied
Java:
canvas.drawLine(xpos , 0, getWidth(), getHeight(), pinsel);
Eclipse bietet mir an "create an new Variable". ----> xpos
 

JavaMeister

Gesperrter Benutzer
Ja, weil das so in java nicht funktioniert.

Bitte lese Dir die Grundlagen nochmal an.

Du benötigst eine Referenz auf das Objekt der Klasse, die diese public Variable enthält.
 
Zuletzt bearbeitet:

tomovic

Bekanntes Mitglied
sorry aber ich seig da nicht ganz durch, bin nicht lesefaul, vielleicht denke ich zuviel in c++ :)

was ich verstanden habe ist, dass ich in der Klasse GrafikActivity ein Objekt anlegen soll mit:
de.carpelibrum.grafik.GrafikActivity = new posx(); // so ungefär ?!?! Aber in Rot.
Dann erhalte ich eine Referanzvariable, sagt mein Bauchgefühl. Dann verliere ich den Faden.
 
Zuletzt bearbeitet:

dzim

Top Contributor
Also wenn du nicht Lesefaul bist, dann lies dir wirklich noch mal die Grundlagen durch. Auch in C++ legt man nicht ein Objekt eines Primitiven Datentypen an.
Und
Code:
GrafikActivity = new posx();
... WTF!?
Wenn, dann
Code:
GrafikActivity = new GrafikActivity(); xpos = 0.0;
, was aber auch aus Android-Sicht völliger Quark wäre, denn man instanziert keine Activities, das macht die Platform (Activities werden i.d.R. über einen Intent gestartet).
 

Ähnliche Java Themen

Neue Themen


Oben