我正在尝试按如下方式创建一个屏幕:
Some very long text, saying something
现在,我想要的是启动画面只加载图像,然后我希望它下面的文本逐个字符地淡入:
第一帧:S
第 2 帧:所以
第 3 帧:Som 等...
我的布局看起来像这样(我还没有显示图像):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fader">
</LinearLayout>
</RelativeLayout>
我的 Java 看起来像这样:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
View faderLayout = findViewById(R.id.fader);
TextView[] faderTextViews = getFaderTextViews();
for(int i=0; i<faderTextViews.length; i++)
{
((LinearLayout) faderLayout).addView(faderTextViews[i]);
faderLayout.invalidate();
}
}
private TextView[] getFaderTextViews()
{
final Animation in = new AlphaAnimation(0.0f, 1.0f);
in.setDuration(3000);
final Animation out = new AlphaAnimation(1.0f, 0.0f);
out.setDuration(3000);
char[] veryLongString = "This is a very long string".toCharArray();
TextView[] faderTextViews = new TextView[veryLongString.length];
for(int i = 0; i<faderTextViews.length; i++)
{
TextView temp = new TextView(this);
temp.setText(veryLongString, i, 1);
temp.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
temp.startAnimation(in);
faderTextViews[i] = temp;
}
return faderTextViews;
}
最终发生的是整个字符串立即淡入。
有没有办法做到这一点?