ich habe mich, nach der vergangenen Zeit in welche ich viel für die Schule machen musste, mal wieder an Java gesetzt und wollte ein bisschen mit der Android SDK rumspielen.
Nun habe ich allerdings ein Problem, bei dem "refreshen" meines Canvas.
Wo liegt denn dein Problem? Siehst du nichts? Auf den ersten Blick, kann ich dir auch nicht sagen, wo dein Fehler liegt, da ich mit SurfaceView's arbeite, die schneller als normale Views sind. Ich schau' heute nachmittag nochmal drüber.
Vorab:
Deine Fullscreen Methode gehört in onCreate() und Berechnungen, sowie Paints erstellen/stylen, packt man wegen der Performance in eine eigene Methode, die man vorher aufruft.
Ich habe vor die Blöcke testweise bewegen zu lassen, jedoch tun sie dies nicht, sie bleiben in der Mitte stehen, weswegen ich denke, dass es sich nicht redrawed.
Habe noch nie mit surfaceview gearbeitet. ^^
Dein Problem ist, dass du eine for-schleife benutzt. Die Idee ist nicht schlecht, für solch ein View aber nicht. Der for-loop wird ganz(!) ausgeführt, sobald er einmal(!) aufgerufen. Deine Idee war wahrscheinlich, dass es nach jedem refresh den for-loop weiterführt.
Hier ist eine Lösung, wie es funktioniert:
Danke sehr dies hat nun gut funktioniert(es bewegt sich sozusagen ein Circle von oben nach unten und verschwindet.)
Nun habe ich versucht, einen Circle in einem Kreis bewegen zu lassen(sin/cos),
das will nun aber nicht funktioniere.
Wodran liegt es nun?
Schau dir nochmal die Unterschiede der verschiedenen Datentypen in Java an. Mit einem Integer sin/cos kommst du wegen der Nachkommastellen nicht weit. Benutz stattdessen bspw. float.
package com.guy.high.first;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
public class MainActivity extends Activity {
private int x,y,radius;
private double t;
private float sin, cos;
private Paint paintC;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// requesting to turn the title OFF
requestWindowFeature(Window.FEATURE_NO_TITLE);
// full screen
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
// set layout
setContentView(new MyView(this));
}
public class MyView extends View {
public MyView(Context context) {
super(context);
init();
}
private void init() {
radius = 10;
paintC = new Paint();
paintC.setStyle(Paint.Style.FILL);
paintC.setColor(Color.BLUE);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// draw background
canvas.drawColor(Color.WHITE);
// set width and height
x = getWidth();
y = getHeight();
// draw circle
canvas.drawCircle(x/2+sin, y/2+cos, radius, paintC);
// math
t+=0.1;
sin = (float)Math.sin(t)*50;
cos = (float)Math.cos(t)*50;
// check values for sin/cos in logcat
Log.d("MainActivity", sin + " " + cos);
// refresh view
invalidate();
}
}
}
Ich habe den Datentyp für t zu double geändert, damit man in kleineren Schritten den Circle drehen kann. t kannst du natürlich beliebig verändern. Damit du selbst schneller deine Fehler erkennst, habe ich dir mal ein Beispiel gezeigt, wie du mit LogCat die Werte der Variablen checken kannst, während die App läuft.
Clash of Clans Android zu Android 02/04/2015 - Smartphones - 4 Replies Moin zusammen,
wollte gerade meinen CoC Account verkaufen. Leider habe ich den Hinweis erhalten, dass ich den Acc nur auf ein Googleplay konto übertragen kann wenn ich mich mit meinem Konto auf dessen Handy anmelde.
Kennt jemand einen Trick wie man dies umgehen kann?
Regards,
Android - Datenverbrauch von "Android OS" 01/23/2014 - Technical Support - 2 Replies Servus,
hat jemand ne Ahnung was genau an Daten verbraucht werden bei "Android OS"?
Habe IMMER Hintergrunddaten beschränkt und automatische Synchronisation ausgeschaltet und trotzdem liegt der Verbrauch bei verschissenen 200 MB ..
http://puu.sh/6vkNN.png
Gruß
[S] Android Smartphone großes Display/ Super Amoled (Plus)/ Android 4.0/4.1 04/27/2013 - Smartphones - 6 Replies Habe mir schon folgende angeschaut :
Samsung I9105P Galaxy S II Plus DualCore Smartphone 4,3: Amazon.de: Elektronik
und
Huawei Ascend P1 Smartphone 4,3 Zoll schwarz: Amazon.de: Elektronik
Preisklasse sollte 250€ ca. sein.
Macht mir mal Vorschläge :)