您的位置:首页 > 移动开发 > Android开发

Hack5-用TextSwitcher和ImageSwitcher打造漂亮的动画效果

2013-10-30 19:05 232 查看
想象一下你需要一个循环展示图片信息或者文字信息的功能,比如下面的一些例子:

用左右键按钮来切换不同的日期列表
在日期选择器(Date picker)中改变数字
倒计时时钟
最新头条

改变视图中的内容是大部分应用的一项最基本的功能,但是它可以被做的很有意思。如果我们用最基本的TextView,你就会发现在变换内容的时候一点都不赏心悦目。想象一下如果在变换内容的时候加上一点效果该有多好。所以为了让切换效果更吸引人,Android提供了TextSwitcher和ImageSwitcher这两个类。TextSwitcher可以替代TextView,ImageSwitcher可以替代ImageView。

TextView和TextSwitcher差不多。用我们之前的例子,假设我们在一些日期里面进行切换。每当用户点击Button的时候,我们需要将TextView的内容进行改变。如果我们用TextView,那么我们需要的方法是:mTextView.setText("something")。我们的代码差不多是下面这个样子的:

private TextView mTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextView = (TextView) findViewById(R.id.your_textview);
...
mTextView.setText("something");
}


用过之后你可能就会注意到了,每当我们切换TextView的内容的时候,它立即就会改变。为了给这个过渡添加动画而显得不那么生硬,TextSwitcher正是我们所需要的。对于变换屏幕上的标签或文字,TextSwitcher非常的有用。每当变换被调用的时候,TextSwitcher使当前的文字按照某一动画退出,使要显示的文字按照某一个动画进入。按照下面的步骤,我们可以得到一个更加吸引人的变换效果:

使用findViewById()方法获取View,或者是像普通的View一样在代码中创建它。
使用switcher.setFactory()方法来设置一个factory。
使用switcher.setInAnimation()来设置进入动画。
使用switcher.setOutAnimation()来设置退出动画。

TextSwitcher的工作原理如下,它使用工厂(factory)来创建新的View,每当我们调用setText()的时候,它将旧的View用setOutAnimation()中设置的动画将它移除退出,然后使用setInAnimaiton()中设置的动画,将新视图移入。让我们来看看如何使用它:

public class MainActivity extends Activity {

private static final String[] TEXTS = { "First", "Second", "Third" };
private int mTextsPosition = 0;
private TextSwitcher mTextSwitcher;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mTextSwitcher = (TextSwitcher) findViewById(R.id.your_textview);

mTextSwitcher.setFactory(new ViewFactory() {
//重写makeView函数
@Override
public View makeView() {
TextView t = new TextView(MainActivity.this);
t.setGravity(Gravity.CENTER);
return t;
}
});
//设置进入退出动画
mTextSwitcher.setInAnimation(this, android.R.anim.fade_in);
mTextSwitcher.setOutAnimation(this, android.R.anim.fade_out);

onSwitchText(null);
}

public void onSwitchText(View v) {
mTextSwitcher.setText(TEXTS[mTextsPosition]);
setNextPosition();
}

private void setNextPosition() {
mTextsPosition = (mTextsPosition + 1) % TEXTS.length;
}
}


就像上面这样,当用户设置新的文本的时候,我们就会看到赏心悦目的动画效果了。旧文字淡出,新文字淡入。这个技巧同样也适用于其他的动画效果,你可以设定自定义的动画。ImageSwitcher的使用方法与TextSwitcher是一样的。

5.1 总结

TextSwitcher和ImageSwitcher方法提供了一个非常简单的添加动画的方法。他们的工作就是使呆板的切换变得更加引人注目。但是要注意,可不要乱用,你不会希望你的程序看起来像是一个圣诞树一样的。

5.2 相关链接

http://developer.android.com/reference/android/widget/TextSwitcher.html
http://developer.android.com/guide/topics/graphics/view-animation.html
转载请注明原地址,谢谢!

http://blog.csdn.net/kost_/article/details/13632037

代码下载地址:

http://download.csdn.net/detail/u011418185/6477855
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息