Как обеспечить альфа-анимацию для каждого символа вместо всего представления в Android - PullRequest
0 голосов
/ 11 июля 2011

Я создаю приложение Typing Tutor, в котором есть опции для ввода цифр, алфавитов и символов.При выборе конкретной опции массив загружается с любым из символов.Следующая проблема - моя проблема:

Деятельность, которая загружает массив, отображает символы и отображает их в случайном месте действия.Для этого я предоставил альфа-анимацию для каждого символа, который появляется на определенный период времени и исчезает, а другой символ появляется после него.Но я не получаю желаемого результата.Альфа-анимация применяется ко всему виду холста, а не к каждому символу.Я хочу альфа-анимацию для каждого символа, а не весь вид холста.Вот код:

/*
 * Create a view that displays the animation.
 * This view will display the alpha animation 
 * The array is loaded and the elements are 
 * displayed in the random manner 
 */

class AnimationView extends View
{
    Animation animation;
    String str;
    Random randomLocationXY, randomValues;
    public AnimationView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub

    }

    private void createAnimation(Canvas canvas)
    {
        animation = new AlphaAnimation(0.0f, 1.0f);
        animation.setRepeatCount(50);
        animation.setRepeatMode(Animation.REVERSE);
        animation.setInterpolator(new AccelerateDecelerateInterpolator());
        animation.setDuration(10000l);
        startAnimation(animation);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);


        randomLocationXY = new Random();
        //randomValues = new Random();

        if(animation == null)
        {
            createAnimation(canvas);
        }

        Paint p = new Paint();
        p.setColor(Color.RED);
        p.setTextSize(40);
        p.setTypeface(Typeface.SANS_SERIF);

        for(int i=0; i< sel_array.length;i++)
        {
            int x = randomLocationXY.nextInt(canvas.getWidth());
            int y = randomLocationXY.nextInt(canvas.getHeight());
            str = sel_array[i];



            //draws the text at random location
            canvas.drawText(str, x, y, p);

        }

    }
}

1 Ответ

0 голосов
/ 11 июля 2011

хмм .. Насколько я знаю, в этом случае вы должны создать свою анимацию (возможно, перемещая положение текстовой строки в соответствии с вашими потребностями, чтобы она выглядела как анимация. Другое, но интенсивное использование процессора - это предоставить анимация с использованием разных растровых изображений (с использованием canvas.drawBitMap).

...