android 中用于显示教程的查看寻呼机速度非常慢

View pager used to show tutorial is very slow in android

我想借助查看寻呼机在我的应用程序中制作一个小教程。用户从左向右滚动,视图按预期滑入和滑出。我唯一的问题是它非常慢。这就是我所做的:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.tutorial);

        findViews();

        init();

        setUserInteraction(); // this works as expected
}

private void init() {
    initViewAnimator();

    slideInLeft = AnimationUtils.loadAnimation(this, R.anim.slide_in_left);
    slideInLeft.setDuration(ANIMATION_DURATION);

    slideOutLeft = AnimationUtils.loadAnimation(this, R.anim.slide_out_left);
    slideOutLeft.setDuration(ANIMATION_DURATION);

    slideInRight = AnimationUtils.loadAnimation(this, R.anim.slide_in_right);
    slideInRight.setDuration(ANIMATION_DURATION);

    slideOutRight = AnimationUtils.loadAnimation(this, R.anim.slide_out_right);
    slideOutRight.setDuration(ANIMATION_DURATION);
}

private void initViewAnimator() {
    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);

    View view = inflater.inflate(R.layout.tutorial_page_1, viewAnimator, false);
    viewAnimator.addView(view);

    view = inflater.inflate(R.layout.tutorial_page_2, viewAnimator, false);
    viewAnimator.addView(view);

    view = inflater.inflate(R.layout.tutorial_page_3, viewAnimator, false);
    viewAnimator.addView(view);

    view = inflater.inflate(R.layout.tutorial_page_4, viewAnimator, false);
    viewAnimator.addView(view);
}

private void showNext(){
    int displayedChild = viewAnimator.getDisplayedChild();

    if(displayedChild == NUMBER_OF_FRAMES - 1){
        return;
    }
    viewAnimator.setInAnimation(slideInRight);
    viewAnimator.setOutAnimation(slideOutLeft);
    viewAnimator.showNext();
    onAnimationStarted(displayedChild, ++displayedChild);        
}

private void showPrevious(){
    int displayedChild = viewAnimator.getDisplayedChild();
    if(displayedChild == 0){
        return;
    }
    viewAnimator.setInAnimation(slideInLeft);
    viewAnimator.setOutAnimation(slideOutRight);
    viewAnimator.showPrevious();
    onAnimationStarted(displayedChild, --displayedChild);
}

不知道我做错了什么。每个屏幕都有一个小文本、一个小图标和一个背景。每个背景大约 1MB,分辨率为 749*1311。不确定图像的大小是否是问题所在。如果是这样,我怎样才能使图像仍然具有质量? 该应用程序已在 Nexus 5、Samsung S4、S3 和 S2 上进行测试,每次结果都相同。

我也试过用水平滚动视图来做这个,但还是太慢了。

这不是 ViewPager,这是试图使用自定义动画重新发明轮子。我不确定为什么该应用程序会延迟,但我强烈建议您使用 Android 本机组件 ViewPager。您可以查找信息 here,如果您 运行 遇到麻烦,请联系我寻求帮助。

祝你有愉快的一天!

您无需参与此类编码即可获得 "ViewPager" 的功能。所有的艰苦工作都已经为你完成了。 :)

您只需实施 ViewPager,它会为您处理一切。

谢谢。快乐编码!