2010-11-02 77 views
4

您好 我有一个包含两个子活动的TabHost活动。为儿童活动添加“左 - 右”动画最好的解决方案是什么?更改标签时添加动画

此致敬礼!

回答

10


对于这一点,最好的解决办法是动画添加到布局
假设你有两个标签

tabs = (TabHost) this.findViewById(R.id.tabhost_id); 
     tabs.setup();  
     tspec1 = tabs.newTabSpec(name_of_1st_tab) 
     tspec1.setIndicator(....); 
     tspec1.setContent(R.id.tab_1_layout_id); 
    tab1Layout = (LinearLayout)findViewById(R.id.tab_1_layout_id); 

    tspec2 = tabs.newTabSpec(name_of_2nd_tab) 
     tspec2.setIndicator(....); 
     tspec2.setContent(R.id.tab_1_layout_id); 
    tab1Layout = (LinearLayout)findViewByIdR.id.tab_2_layout_id); 

然后在TabChangedListener

tabs.setOnTabChangedListener(new OnTabChangeListener() { 

     public void onTabChanged(String tabId) { 
    tab1Layout.setAnimation(outToLeftAnimation()); 
    tab2Layout.setAnimation(inFromRightAnimation()); 
      } 
     }); 

    public Animation inFromRightAnimation() { 

    Animation inFromRight = new TranslateAnimation(
      Animation.RELATIVE_TO_PARENT, +1.0f, 
      Animation.RELATIVE_TO_PARENT, 0.0f, 
      Animation.RELATIVE_TO_PARENT, 0.0f, 
      Animation.RELATIVE_TO_PARENT, 0.0f); 
    inFromRight.setDuration(ConstandsUsed.ANIMATIION_DURATION); 
    inFromRight.setInterpolator(new AccelerateInterpolator()); 
    return inFromRight; 
} 

public Animation outToLeftAnimation() { 
    Animation outtoLeft = new TranslateAnimation(
      Animation.RELATIVE_TO_PARENT, 0.0f, 
      Animation.RELATIVE_TO_PARENT, -1.0f, 
      Animation.RELATIVE_TO_PARENT, 0.0f, 
      Animation.RELATIVE_TO_PARENT, 0.0f); 
    outtoLeft.setDuration(ConstandsUsed.ANIMATIION_DURATION); 
    outtoLeft.setInterpolator(new AccelerateInterpolator()); 
    return outtoLeft; 
} 

希望这将有助于你得到一些想法

+0

感谢您的回复!问题是我有一个活动标签主机,而不是一个视图标签主机。 – Gratzi 2010-11-02 15:26:52

0

这可能会帮助你。主要想法是获取选项卡的当前视图并在onTabChanged事件中为其设置动画。

tabsHost.setOnTabChangedListener(new OnTabChangeListener() { 

    public void onTabChanged(String tabId) { 
     View currentView = tabsHost.getCurrentView(); 
     currentView.setAnimation(<Your animation object goes here>); 
    } 
});