Android自定义View--垂直ViewPager加跑马灯

背景
不多说,直接看此图。

image.png

关键技术
ViewPager有个setPageTransformer方法可以设置页面切换时的动画:

public void setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer)
/**
 * 自定义Pager切换模式
 */
class DefaultTransformer implements ViewPager.PageTransformer {

    @Override
    public void transformPage(View view, float position) {
        float alpha = 0;
        if (0 <= position && position <= 1) {
            alpha = 1 - position;
        } else if (-1 < position && position < 0) {
            alpha = position + 1;
        }
        view.setAlpha(alpha);
        view.setTranslationX(view.getWidth() * -position);
        float yPosition = position * view.getHeight();
        view.setTranslationY(yPosition);
    }
}

跑马灯TextView:

public class MarqueeText extends TextView {
    public MarqueeText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        super.onFocusChanged(focused, direction, previouslyFocusedRect);
    }

    @Override
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        if(hasWindowFocus) super.onWindowFocusChanged(hasWindowFocus);
    }

    @Override
    @ViewDebug.ExportedProperty(category = "focus")
    public boolean isFocused() {
        return true;
    }
}

代码地址在GitHub:地址

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,852评论 25 709
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,033评论 3 119
  • 李易峰生日祝福承包荧屏 “霸屏男神”势不可挡 李易峰霸屏 5月4是青年节,同时也是李易峰的生日,在生日当天,李易峰...
    jiazehong阅读 356评论 0 0
  • 一 漫山遍野的人,惨不忍睹的血。 “这是第几次进攻了?”曹操面不改色的问旁边的曹仁。 “主公,已是第五次。”曹...
    无聊三少阅读 610评论 0 0
  • 我们一谈到授权,往往从对方立场去考虑,把一部分权分给了对方。 但如果从自己角度去考虑时,就会发现,授权实际上是对自...
    w小郭阅读 212评论 0 0