Hello
The best solution for this is to add animation to the layouts.
suppose you have two tabs
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);
then tab on 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; }
Hope this helps you understand the idea
source share