在视图分页器中显示视图后做动画(android)

Posted

技术标签:

【中文标题】在视图分页器中显示视图后做动画(android)【英文标题】:Do animation after view get displayed in view pager (android) 【发布时间】:2013-01-26 09:15:23 【问题描述】:

您好,我是 android 新手,我正在做一个简单的应用程序。我的应用程序包含一个简单的活动,它包含视图寻呼机。我的视图寻呼机没有屏幕 3。所以我的视图寻呼机工作正常。我的第一个和第二个屏幕包含一个按钮,当我单击该按钮时,它将转到第三个屏幕setCurrentItem(2);

现在我想要的是,当我进入第三个屏幕时,它会渲染一个视图,并且只有在完全渲染该视图后几秒钟才会执行一些动画,例如翻转动画。

当我点击按钮时实际发生了什么,它直接转到该屏幕但不呈现该默认视图。它直接启动动画...

我的代码看起来像

public class HelpActivity extends Activity 

    private final int NUM_SCREENS = 3;

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.help);
        mInflater = LayoutInflater.from(this);

        vp = (ViewPager) findViewById(R.id.pager);
        PagerAdapter pagerAdapter = new MyPagerAdapter();
        vp.setAdapter(pagerAdapter);

        

    private OnClickListener signin = new OnClickListener() 

        @Override
        public void onClick(View arg0) 

                vp.setCurrentItem(2);
                // ******* do some animation on view 3 in pager views ....          
        

    ;

    private class MyPagerAdapter extends PagerAdapter 

        @Override
        public int getCount() 
            return NUM_SCREENS;
        

        @Override
        public Object instantiateItem(View collection, int position) 

            View view = null;
            Typeface tf = Typeface.createFromAsset(getAssets(),
                    "fonts/sf_cartoonist_hand_bold.ttf");
            if (position == 0) 
                // display view1
                // on button click call sign in

             else if (position == 1) 
                //display view 2
                //on button click call sign in
             else if (position == 2) 

                //display view 3

            

            ((ViewPager) collection).addView(view, 0);

            return view;
        
    



点击按钮后我需要什么,它会跳到 view3 显示几秒钟,然后做动画……怎么做? 需要帮忙..... 谢谢.....

【问题讨论】:

【参考方案1】:

使用Runnable,您可以保持动画,直到您的视图无法正确加载它,您必须测量视图加载的秒数,因此您可以根据视图加载时间传递延迟,例如下面:

Runnable runnableimage = new Runnable() 
            public void run() 
            //HERE YOUR ANIMATION
                image.startAnimation(animFast);

            
        ;

它在2000 MilliSec之后开始你的动画

handler.postDelayed(runnableimage, 2000);

【讨论】:

hye robin 谢谢你的回复......它对我有用。实际上我尝试了翻转类型的东西,现在它工作了谢谢你的帮助......【参考方案2】:

使用带有启动延迟的animate()

mView.animate().rotationBy(360).setDuration(3000).setStartDelay(2000).start();

【讨论】:

Hye Singularity (:P) 谢谢您的回复..您的解决方案也有效,但我想要翻转类型的动画,这就是我使用自定义动画的原因..但是您的解决方案也可以正常工作...谢谢你寻求帮助... @nilkash 为此使用 rotationXBy()rotationYBy 或 combo 来绕轴翻转。

以上是关于在视图分页器中显示视图后做动画(android)的主要内容,如果未能解决你的问题,请参考以下文章

视图分页器中的视图在上一个视图和下一个视图之间重叠

FragmentStatePagerAdapter 视图分页器片段在活动重新创建后不显示

FragmentStatePagerAdapter视图分页器片段在重新创建活动后未显示

将 Django 分页器与具有不同显示数量的嵌套模板一起使用

片段被视图分页器布局切割

排序在 Knp 分页器中不起作用