L
LoLmAnxD1998
Ambitioniertes Mitglied
- 0
Hallo,
Ich bin noch nicht so lange am Programmieren. Ich habe mir ein Buch gekauft in dem unter Anderem ein Kompass programmiert wird. Das hab ich auch alles verstanden, nur möchte ich jetzt den Kompass in einer anderen App auch machen, aber nicht über den ganzen Bildschirm wie in der Kompass App.
Wie kann ich das auf ein Layout begrenzen ? Hier noch der Code:
MainActivity:
KompassNadelView:
Ich bin noch nicht so lange am Programmieren. Ich habe mir ein Buch gekauft in dem unter Anderem ein Kompass programmiert wird. Das hab ich auch alles verstanden, nur möchte ich jetzt den Kompass in einer anderen App auch machen, aber nicht über den ganzen Bildschirm wie in der Kompass App.
Wie kann ich das auf ein Layout begrenzen ? Hier noch der Code:
MainActivity:
Code:
public class MainActivity extends Activity implements SensorEventListener {
private SensorManager sensorManager;
private Sensor magnetfeldSensor;
private KompassnadelView view;
public void onSensorChanged(SensorEvent event) {
if (view != null) {
view.setWinkel(-event.values[0]);
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle b) {
super.onCreate(b);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
magnetfeldSensor = sensorManager
.getDefaultSensor(Sensor.TYPE_ORIENTATION);
view = new KompassnadelView(this);
setContentView(view);
}
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(this, magnetfeldSensor,
SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onPause() {
sensorManager.unregisterListener(this);
super.onPause();
}
}
KompassNadelView:
Code:
public class KompassnadelView extends View {
private Paint zeichenfarbe = new Paint();
private float winkel=0;
public KompassnadelView(Context context) {
super(context);
zeichenfarbe.setAntiAlias(true);
zeichenfarbe.setColor(Color.GREEN);
zeichenfarbe.setStyle(Paint.Style.FILL);
}
public void setWinkel(float winkel) {
this.winkel = winkel;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
int breite = canvas.getWidth();
int hoehe = canvas.getHeight();
int laenge = Math.min(breite, hoehe);
Path pfad = new Path();
pfad.moveTo(0, -laenge/2);
pfad.lineTo(laenge/20, laenge/2);
pfad.lineTo(-laenge/20, laenge/2);
pfad.close();
canvas.translate(breite/2, hoehe/2);
canvas.rotate(winkel);
canvas.drawPath(pfad, zeichenfarbe);
}