需要一个设计建议在Android应用程序中实现动画

时间:2015-04-03 14:14:07

标签: android animation android-fragments gif

我有一个全屏幕的viewpager活动。现在,我想要的是,当需要看到更多页面时,动画箭头将从屏幕顶部向下滑动并保持在那里。只有当触摸或移动到其他页面时,箭头才会消失(如果您移动到其他页面然后返回当前,箭头将不会出现)。关于如何实施这个的任何建议? 我当前的策略:1。制作带有箭头滑动动画的gif。 2.收到消息后,将箭头动态附加到屏幕上显示的当前片段的顶部。使gif只重复一次。 3.当用户滑动到其他页面时动态删除箭头。

我不确定它们是否可能的事情:是否可以只播放一次gif?是否可以动态地将视图附加到当前片段?是否可以在当前片段出来时删除视图?

如果你能告诉我我的策略是否合适以及是否每一步都可行,我会很高兴,在我开始在谷歌中解决如何实际实施它之前:)

它需要看起来像这样:箭头从顶部滑动(中间向下): 箭头从顶部滑动(中间向下): enter image description here

箭头到达他的最终位置: enter image description here

1 个答案:

答案 0 :(得分:0)

好好看了很多阅读后我终于实现了这样: 我创建了一个按钮并动态附加它。 我为按钮设置动画,使其从顶部向下滑动。 3.我设置了点击监听器以删除按钮。 4.我在viewPager上设置了一个setOnPageChangeListener,用于删除页面更改时的按钮。

  1. 我添加了一个名为" attachbutton()"的方法。到片段类: (从某种原因,我不能将第一部分作为"代码" ...)

    LayoutInflater inflater =                 (LayoutInflater)getActivity()。getApplicationContext()。getSystemService(getActivity()。getApplicationContext()。LAYOUT_INFLATER_SERVICE);         this.button =(Button)rootView.findViewById(R.id.new_message_button);         if(this.button == null){

        inflater.inflate(R.layout.new_messages_button, rootView, true);
        this.button = (Button) rootView.findViewById(R.id.new_message_button);
        this.button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mPager.setCurrentItem(lastPage);
    
            }
        });
    
         this.button.startAnimation(AnimationUtils.loadAnimation(getActivity(),R.anim.slide_in_top));
    
             this.button.setVisibility(View.VISIBLE);
        }
    
    }
    
  2. 这是动画的xml:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate
            android:duration="5000"
            android:fromYDelta="-100%"
            android:toYDelta="0%"
            android:fromXDelta="0%"
            android:toXDelta="0%"
            />
    
    </set>
    

    这是viewPager的监听器:

     mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
                }
    
                @Override
                public void onPageSelected(int position) {
    
                }
    
                @Override
                public void onPageScrollStateChanged(int state) {
                    currentFragment.removeButton();
                    mPager.setOnPageChangeListener(null);
                }
    
            });