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

如何在android中为每个符号而不是整个视图提供alpha动画,android,animation,view,canvas,alpha,Android,Animation,View,Canvas,Alpha,我正在创建一个打字辅导应用程序,它可以选择键入数字、字母和字符。选择特定选项时,数组将加载任意一个符号。以下是我的问题: 加载数组的活动将显示符号,并在活动的随机位置显示这些符号。为此,我为每个出现一段时间并消失的符号提供了alpha动画,另一个符号随后出现。但是我没有得到想要的结果。alpha动画应用于整个画布视图,而不是每个符号。我想要每个符号的alpha动画,而不是整个画布视图。代码如下: /* * Create a view that displays the animation.

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

加载数组的活动将显示符号,并在活动的随机位置显示这些符号。为此,我为每个出现一段时间并消失的符号提供了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);

        }

    }
}
/*
*创建显示动画的视图。
*此视图将显示alpha动画
*数组被加载,元素被删除
*以随机的方式显示
*/
类AnimationView扩展了视图
{
动画;
字符串str;
随机位置xy,随机值;
公共动画视图(上下文){
超级(上下文);
//TODO自动生成的构造函数存根
}
私有void createAnimation(画布)
{
动画=新的AlphaAnimation(0.0f,1.0f);
动画。setRepeatCount(50);
设置重复模式(animation.REVERSE);
setInterpolator(新的AccelerateDelateInterpolator());
动画。设置持续时间(10000l);
startAnimation(动画);
}
@凌驾
受保护的void onDraw(画布){
//TODO自动生成的方法存根
super.onDraw(帆布);
randomLocationXY=新随机();
//randomValues=新的Random();
如果(动画==null)
{
创作动画(画布);
}
油漆p=新油漆();
p、 setColor(Color.RED);
p、 setTextSize(40);
p、 setTypeface(字体:无衬线);
for(int i=0;i
hmm。。据我所知,在这种情况下,您必须创建动画(可能根据需要移动文本字符串的位置,使其看起来像动画。另一个处理器密集型解决方案是使用不同的位图(使用canvas.drawBitMap)提供动画