Je voulais faire pivoter Rectangle de 360 degrés en 10 secondes. Et aussi je veux lui appliquer une fréquence d'image différente, par exemple 5 fps, 10 fps etc. Mais peu importe ce que la fréquence d'image est, rectangle devrait tourner dans 10 secondes.Comment faire une animation basée sur le temps dans Android?
Alors s'il vous plaît dites-moi comment puis-je contrôler les fps de l'animation? Quelle méthode d'animation dois-je utiliser?
J'utilise la méthode suivante. Suggérez toute autre bonne méthode pour le faire. Merci d'avance.
public class Square extends View {
private Rect rect;
private Paint paint;
float height1;
float width1;
public Square(Context context)
{
super(context);
DisplayMetrics displaymetrics = new DisplayMetrics();
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
height1=height;
width1=width;
Point cos = new Point(width/2,height/2);
int left = cos.x-(200);
int top = cos.y - 200;
int right =cos.x+200;
int bottom = cos.y+200;
rect = new Rect(left,top,right,bottom);
// create a rectangle that we'll draw late rect = new Rect(x, y, sideLength, sideLength);
// create the Paint and set its color
paint = new Paint();
}
protected void onDraw(final Canvas canvas) {
super.onDraw(canvas);
/* canvas.drawColor(Color.BLACK);
canvas.drawRect(rect, paint);*/
//canvas.drawColor(Color.BLACK);
long time1 = System.nanoTime();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
canvas.drawRect(rect, paint);
// border
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.GREEN);
canvas.drawRect(rect, paint);
long ti = animate().getDuration();
String x = "hello";
//Log.e("Tag",x+ti);
long lsttime = System.nanoTime();
double fps = 100000000.0/(lsttime - time1);
animate().rotation(360).setDuration(10000).start();
String fpss = "" + fps;
Log.e("Tag", fpss);
}
}
Montrez-nous ce que vous avez essayé jusqu'ici ?? –