20岁的金钱观,决定你30岁的生活品质!
往往在实际开发当中,需要开发者实现水平滚动或垂直滚动,水平滚动其实很简单,只需要使用跑马灯效果即可【Android】不一样的TextView(一)水平滚动-跑马灯,但是如果是要实现垂直滚动该如何实现呢?
分析:对于一个垂直滚动效果,综合分析一下,无外乎以下几个问题需要处理?
1、文本使用什么控件显示?
2、如果实现上下滚动效果?
3、如何处理文本变化?
4、如何处理无限滚动的效果?
一、文本使用什么控件显示?
文本的显示当然是使用TextView进行显示,但是因为控件上的文本是不断变化的,而且是要实现上下滚动的效果,所以这里的处理是使用一组TextView显示不同文本,上下滚动的动画效果就有这一组TextView实现。
二、如果实现上下滚动效果?
上下滚动效果,使用Animation动画实现,这里要实现特定的效果,所以需要自定义Animation动画,进行translate变换,采用这个变换实现进入和退出的效果。
private class Rotate3dAnimation extends Animation {
private float mCenterX;
private float mCenterY;
private final boolean mTurnIn;
private final boolean mTurnUp;
private Camera mCamera;// 用来保存初始Camera
Rotate3dAnimation(booleanturnIn, booleanturnUp) {
mTurnIn= turnIn;
mTurnUp= turnUp;
}
@Override
public void initialize(intwidth, intheight, intparentWidth, intparentHeight) {
super.initialize(width,height,parentWidth,parentHeight);
// 用来记录,初始Camera高度 宽度
mCamera=newCamera();
mCenterY= getHeight();
mCenterX= getWidth();
}
/**
* interpolatedTime 0~1
* t转换
*/
@Override
protected void applyTransformation(float interpolatedTime,Transformation t) {
final floatce