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