[RESOLVIDO] Adicionar um VIEW PERSONALIZADA ao XML [C/ ANIMAÇÃO]

Oi pessoal,

Alguém pode me dar uma luz? Então, eu fiz um código de uma VIEW aonde ela da uma impressão de ANIMAÇÃO.
Só que ela foi feita totalmente em base de JAVA API e preciso que seja carregada no XML, mas tem um porém:
- Um valor é sempre atualizado na qual modifica a VIEW, no caso o anglo final da função drawArc(…).
- A animação é simplemente como se fosse um tempo rolando aonde um circulo seria preenchido de 0º até 360º.

Alguma solução? :B

Código:

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;

public class ActivityTeste extends Activity implements Runnable {
	
	int angle = 1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Handler handler = new Handler();
		for(int i = 0;i < 360;i++) {
			handler.postDelayed(this, 100 * i/10);
		}
	}
	
	private class Teste extends View {
		int angle;
		
		public Teste(Context context, int angle) {
			super(context);
			this.angle = angle;
		}
		
		@Override
		protected void onDraw(Canvas canvas) {
			super.onDraw(canvas);
			
			Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
			paint.setColor(Color.GREEN);
			paint.setAlpha(50);
			RectF rect = new RectF(new Rect(0, 0, 300, 300));
			canvas.drawArc(rect, 270, angle, true, paint);
			invalidate();
		}
	}

	@Override
	public void run() {
                //Atualizando a VIEW.
		setContentView(new Teste(this, this.angle++));
	}
}

Abraço,

  1. Precisei apenas adicionar ao xml do layout o padrão de <package.Teste> WIDTH e o HEIGHT.
  2. Adicionei o a classe da VIEW que criei, e a cada incremento no ânglo, eu chamo o invalidate da minha VIEW.

RESPOSTA -.-

package com.br.fugb.i2mobile.ui;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;

public class ActivityTeste extends Activity implements Runnable {
	
        Teste teste;
	int angle = 1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                teste = new Teste(this);
		Handler handler = new Handler();
		for(int i = 0;i < 360;i++) {
			handler.postDelayed(this, 100 * i/10);
		}
	}
	
	private class Teste extends View {
		int angle;
		
		public Teste(Context context, int angle) {
			super(context);
			this.angle = angle;
		}
		
		@Override
		protected void onDraw(Canvas canvas) {
			super.onDraw(canvas);
			
			Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
			paint.setColor(Color.GREEN);
			paint.setAlpha(50);
			RectF rect = new RectF(new Rect(0, 0, 300, 300));
			canvas.drawArc(rect, 270, angle, true, paint);
			invalidate();
		}
	}

	@Override
	public void run() {
		angle++;
                teste.invalidate();
	}
}

:slight_smile: :slight_smile: :slight_smile:
Resposta mais rápida que tive. kkkkkkkkkkk
Abraço,