如何为每个符号提供alpha动画,而不是android中的整个视图

时间:2011-07-11 06:06:41

标签: android animation view canvas alpha

我正在创建一个Typing Tutor应用程序,它具有键入数字,字母和字符的选项。在选择特定选项时,数组将加载任一符号。以下是我的问题:

加载数组的活动显示符号并在活动的随机位置显示这些符号。为此我为每个符号提供了alpha动画,这些符号出现一段时间并消失,另一个符号出现在它之后。但我没有得到理想的结果。 alpha动画应用于整个画布视图而不是每个符号。我想要每个符号的alpha动画而不是整个画布视图。这是代码:

/*
 * 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 :(得分:0)

嗯..据我所知,在这种情况下你必须创建你的动画(可能根据你的需要移动文本字符串的位置,使它看起来像一个动画。另一个但处理器密集的解决方案是提供使用不同位图的动画(使用canvas.drawBitMap)。