Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoc oko animacije kruga

[es] :: Java :: Pomoc oko animacije kruga

[ Pregleda: 975 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dekiit
Nezaposlen
Nezaposlen

Član broj: 340802
Poruke: 24
*.dynamic.isp.telekom.rs.



Profil

icon Pomoc oko animacije kruga25.08.2019. u 13:30 - pre 34 meseci
Pozdrav drugari,treba mi jedna mala pomoc,treba da animiram jedan nacrtani krug pomocu canvas i paint klasa,i taj krug da se vrti non stop u krug,tacnime treba da izgleda kao kad se zemlja okrece oko sunca,napravim timer klasu,nacrtam krug i sve,i napravim animaciju ali krug nece da se krece putanjom kruga nego sve bezi po telefonu gde mu je volja,probao sam putanju ovako da napravim
X = cx + r * cos(ugla) tako i za Y osu ali dzaba,inace u pitanju je android studio i programiranje,ako neko nesto zna neka pomaze,hvala u napred.pozdrav
 
Odgovor na temu

Dekiit
Nezaposlen
Nezaposlen

Član broj: 340802
Poruke: 24
*.dynamic.isp.telekom.rs.



Profil

icon Re: Pomoc oko animacije kruga25.08.2019. u 17:31 - pre 34 meseci
Bilo ko? Bilo sta? bas mi treba ovo.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1063 Profil

icon Re: Pomoc oko animacije kruga25.08.2019. u 17:42 - pre 34 meseci
Treba da crtas kruznicu oko tacke koja kruzi oko sunca.
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 8810
*.dynamic.isp.telekom.rs.



+10005 Profil

icon Re: Pomoc oko animacije kruga25.08.2019. u 17:44 - pre 34 meseci
Animacija pomoću Canvas-a paint metode je veoma prosta. Nacrta se nešto, onda se sačeka, Thread.sleep(milisekinde) i opet se nacrta. Eventualno, ako treba, onda se između dva crtanja ceo Canvas "obriše".
Nema tu filozofije.
Tebi ostaje da razlučiš kako treba da izgleda prva slika, pa druga, pa treća i tako dalje i tako dalje.

Rado bih ti više pomogao, ali pitanje ti je ekstra konfuzno. Ne znam kakav odgovor očekuješ.
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

Dekiit
Nezaposlen
Nezaposlen

Član broj: 340802
Poruke: 24
*.dynamic.isp.telekom.rs.



Profil

icon Re: Pomoc oko animacije kruga25.08.2019. u 17:52 - pre 34 meseci
timer = new Timer();
timer.schedule(
new TimerTask() {
@Override
public void run() {
runOnUiThread(
new Runnable() {
@Override
public void run() {
renderFrame();
}
}
);
}
}, 200, 40);
}


private void renderFrame() {

//clear whole Canvas; prepare for nex frame
canvas.drawColor(Color.parseColor("#EBEBEB"));

//draw circle
paint.setColor(Color.parseColor("#A2DCEE"));
canvas.drawCircle(circleX, cirlceY, circleRadius, paint);


float x = (float) (cx + r * cos(angle));

float y = (float) (cy + r * sin(angle));
//advance coordinates for next frame
circleX = circleX + x;
cirlceY = cirlceY + y;




imageView.invalidate();
}


Evo ga kod,znaci krug se krece po ekranu normalno ali nece da ide u krug,treba tacno da uradim kao planeta da kruzi oko sunca....ne znam da li mi je dobra ova formula sa cos i sin?
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3187

Jabber: djoka_l


+1369 Profil

icon Re: Pomoc oko animacije kruga25.08.2019. u 18:12 - pre 34 meseci
Šta ti je "angle"? Ne vidim gde se menja, on treba da bude u radijanima. Možda stavljaš stepene, pa ti skače krug po ekranu. Ako stavljaš stepene, onda angle množiš sa pi i deliš sa 180.

Koje su koordinate centra kružnice?

Aku so one cx, i cy onda kružnicu crtaš na (cx+r*cos(angle*pi/180), cy + r*sin(angle*pi/180)), a ne treba to da dodaješ na prethodnu poziciju...

 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1063 Profil

icon Re: Pomoc oko animacije kruga25.08.2019. u 18:23 - pre 34 meseci
Ovo je neki pseudo kod, ne vidi se odakle ni cx ni cy a ni angle.

edit:
u svakom slucaju treba petlja gde ce angle da varira, ako je tako.
 
Odgovor na temu

Dekiit
Nezaposlen
Nezaposlen

Član broj: 340802
Poruke: 24
*.dynamic.isp.telekom.rs.



Profil

icon Re: Pomoc oko animacije kruga25.08.2019. u 19:03 - pre 34 meseci
package com.example.suncevisistem;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.media.Image;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.ImageView;

import java.util.Timer;
import java.util.TimerTask;

import static java.lang.Math.cos;
import static java.lang.Math.sin;

public class MainActivity extends AppCompatActivity {
ImageView imageView;
Bitmap bitmap;
Canvas canvas;
Paint paint;
Timer timer;
int[] screenDimensions;

float circleX;
float circleY;
float circleRadius = 40;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

circleX = 500 ;
circleY = 500;

screenDimensions = getScreenDimensions();

bitmap = Bitmap.createBitmap(screenDimensions[0],screenDimensions[1], Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);

paint = new Paint();




imageView = (ImageView) findViewById(R.id.imageView);
imageView.setImageBitmap(bitmap);


timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
renderedFrame();
}
});
}
},200,40);


}
float angle = 6;
float r = 10;

float x = (float) (600 + cos(angle) * r);
float y = (float) (600 + sin(angle) * r);

public void renderedFrame(){

canvas.drawColor(Color.RED);
paint.setColor(Color.YELLOW);
canvas.drawCircle(circleX,circleY,circleRadius,paint);

circleX = circleX + x;
circleY = circleY + y;
imageView.invalidate();


}


private int[] getScreenDimensions(){

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;

return new int[]{width,height};

}

}

Pocetnik sam,pa malo mi teze ide,evo ga citav kod ne znam gde vise gresim,dali oko ugla sta vec .....
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3187

Jabber: djoka_l


+1369 Profil

icon Re: Pomoc oko animacije kruga26.08.2019. u 08:03 - pre 34 meseci
Unesi svoj kod između [ code ] i [ /code ] tagova (bez ovih blankova) da bismo mogli da ga čitamo.
Još bolje da počneš sa [ code:java ] pa da imamo i sintaksno bojenje...

Inače ništa ti ne valja kod, UGAO MORA DA BUDE U RADIJANIMA angle*Math.PI/180.
Drugo, MORAŠ DA VARIRAŠ UGAO, A NE DA POMERAŠ CENTAR U ODNOSU NA PRETHODNU POZICIJU.
Nije ti bitna prethodna pozicija. Nova pozicija je (ako je centar rotacije (cx,cy)) krug sa centrom u (cx+r*cos(angle*Math.PI/180), cy+r*sin(angle*Math.PI/180)) za vrednosti angle od 0 do 360

Code (java):

package com.example.suncevisistem;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.media.Image;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.ImageView;

import java.util.Timer;
import java.util.TimerTask;

import static java.lang.Math.cos;
import static java.lang.Math.sin;

public class MainActivity extends AppCompatActivity {
 ImageView imageView;
 Bitmap bitmap;
 Canvas canvas;
 Paint paint;
 Timer timer;
 int[] screenDimensions;

 float circleX;
 float circleY;
 float circleRadius = 40;


 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  circleX = 500;
  circleY = 500;

  screenDimensions = getScreenDimensions();

  bitmap = Bitmap.createBitmap(screenDimensions[0], screenDimensions[1], Bitmap.Config.ARGB_8888);
  canvas = new Canvas(bitmap);

  paint = new Paint();




  imageView = (ImageView) findViewById(R.id.imageView);
  imageView.setImageBitmap(bitmap);


  timer = new Timer();
  timer.schedule(new TimerTask() {
   @Override
   public void run() {
    runOnUiThread(new Runnable() {
     @Override
     public void run() {
      renderedFrame();
     }
    });
   }
  }, 200, 40);


 }
 float angle = 6;
 float r = 10;

 float x = (float)(600 + cos(angle) * r);
 float y = (float)(600 + sin(angle) * r);

 public void renderedFrame() {

  canvas.drawColor(Color.RED);
  paint.setColor(Color.YELLOW);
  canvas.drawCircle(circleX, circleY, circleRadius, paint);

  circleX = circleX + x;
  circleY = circleY + y;
  imageView.invalidate();


 }


 private int[] getScreenDimensions() {

  DisplayMetrics displayMetrics = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

  int width = displayMetrics.widthPixels;
  int height = displayMetrics.heightPixels;

  return new int[] {
   width,
   height
  };

 }

}
 
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3187

Jabber: djoka_l


+1369 Profil

icon Re: Pomoc oko animacije kruga26.08.2019. u 08:09 - pre 34 meseci
Inače super je što si kao početnik usvojio "divnu" naviku da ne komentarišeš svoj kod.
Pa onda niko ne zna šta hoćeš da postigneš...
 
Odgovor na temu

[es] :: Java :: Pomoc oko animacije kruga

[ Pregleda: 975 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.