2015-04-03 54 views
0

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

我不确定它们是否可能的事情:是否有可能只玩一次gif?是否有可能将视图动态添加到当前片段?是否有可能在当前片断结束时删除视图?

我会很高兴,如果你能告诉我,如果我的策略是正确的,如果每一步都是可能的,之前我去破解我在谷歌头上如何真正实现它:)

需要看起来是这样的:箭头从顶部滑动(一半时): 箭头从顶部滑动(按下一半): enter image description here

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

+0

您应该尝试ux.stackexchange.com – 2015-04-03 14:37:55

+0

谢谢!我会尽力 – kundasaba 2015-04-03 14:49:11

回答

0

确定后我有很多的阅读盟友实施这样的: 1.我创建了一个按钮,并将其附加动态。 2.我为按钮设置了一个动画,以便它从顶部向下滑动。 3.我设置点击侦听器来删除按钮。 4.我在viewPager上设置了一个setOnPageChangeListener,它可以删除页面变化时的按钮。

  1. 我添加了一个调用的方法“attachbutton()”到该片段类: (从某种原因,我不能把第一部分为“代码” ...)

    LayoutInflater充气= ()。getActivity()。getApplicationContext()。getApplicationContext()。LAYOUT_INFLATER_SERVICE); this.button =(Button)rootView.findViewById(R.id.new_message_button); 如果(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); 
        } 
    
    } 
    

,这是动画的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); 
      } 

     });