应用框架 ViewPager Tab Fragment SlidingMenu

介绍

常见的应用框架

框架一:多个tab+Fragment,点击不同的tab加载不同的Fragment,不能滑动切换只能点击切换;
框架二:多个tab+ViewPager+FragmentPagerAdapter,点击不同的tab加载ViewPager对应的item,可以滑动切换,经过改进,可以实现"强制刷新"!框架三:多个tab+ViewPager+FragmentPagerAdapter+SlidingMenu,左右滑菜单

其他:

上有标题栏,标题栏可以是在Fragment或ViewPager中的(如QQ,每个页面的标题栏都不一样)或者和tab同级(如微信,所有页面的标题栏都一样)。


框架一,MainActivity


public class MainActivity extends Activity implements OnClickListener {

    /**

     * 四个TextView控件

     */

    private TextView[] mTabTVs = new TextView[4];

    /**

     * 四个控件【未】按下时的图片id

     */

    private int[] mTabTVIdsNormal;

    /**

     * 四个控件按下时的图片id

     */

    private int[] mTabTVIdsPress;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        initViews();

        setTabSelection(mTabTVs[0]);

    }

    private void initViews() {

        mTabTVs[0] = (TextView) findViewById(R.id.tv_tab_bottom_weixin);

        mTabTVs[1] = (TextView) findViewById(R.id.tv_tab_bottom_friend);

        mTabTVs[2] = (TextView) findViewById(R.id.tv_tab_bottom_contact);

        mTabTVs[3] = (TextView) findViewById(R.id.tv_tab_bottom_setting);

        mTabTVIdsNormal = new int[] { R.drawable.tab_weixin_normal, R.drawable.tab_find_frd_normal, R.drawable.tab_address_normal,

                R.drawable.tab_settings_normal };

        mTabTVIdsPress = new int[] { R.drawable.tab_weixin_pressed, R.drawable.tab_find_frd_pressed, R.drawable.tab_address_pressed,

                R.drawable.tab_settings_pressed };

        //给四个控件设置一个Tag,当我们点击某个控件时可以根据这个Tag来识别此控件,当然我们也可以根据v.getid()来识别,但在这里setTag还有其他妙用

        for (int i = 0; i < mTabTVs.length; i++) {

            mTabTVs[i].setOnClickListener(this);

            mTabTVs[i].setTag(i);

        }

    }

    @Override

    public void onClick(View v) {

        switch (v.getId()) {

        case R.id.tv_tab_bottom_weixin:

        case R.id.tv_tab_bottom_friend:

        case R.id.tv_tab_bottom_contact:

        case R.id.tv_tab_bottom_setting:

            setTabSelection(v);

            break;

        default:

            break;

        }

    }

    private void setTabSelection(View v) {

        //清除掉所有的选中状态

        for (int i = 0; i < mTabTVs.length; i++) {

            mTabTVs[i].setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(mTabTVIdsNormal[i]), null, null);

            mTabTVs[i].setSelected(false);

        }

        // 改变控件的图片,这里的setSelected是为了演示通过selector来改变文字颜色

        int index = (Integer) v.getTag();

        ((TextView) v).setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(mTabTVIdsPress[index]), null, null);

        v.setSelected(true);

        FragmentTransaction transaction = getFragmentManager().beginTransaction();

        switch (index) {

        case 0:

            transaction.replace(R.id.id_content, new MainTabFragment());//每次都必须通过new的方式创建Fragment,不然可能出问题

            break;

        case 1:

            transaction.replace(R.id.id_content, new MainTabFragment());

            break;

        case 2:

            transaction.replace(R.id.id_content, new MainTabFragment());

            break;

        case 3:

            transaction.replace(R.id.id_content, new MainTabFragment());

            break;

        }

        transaction.commit();

    }

}

框架一,布局



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="45dp"

        android:background="@drawable/title_bar"

        android:gravity="center"

        android:text="微信"

        android:textColor="#fff"

        android:textSize="20sp"

        android:textStyle="bold" />

    <FrameLayout

        android:id="@+id/id_content"

        android:layout_width="match_parent"

        android:layout_height="0dp"

        android:layout_weight="2016" />

    <LinearLayout

        android:id="@+id/ly_main_tab_bottom"

        android:layout_width="fill_parent"

        android:layout_height="55dp"

        android:background="@drawable/bottom_bar" >

        <TextView

            android:id="@+id/tv_tab_bottom_weixin"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_weixin_normal"

            android:gravity="center"

            android:text="微信"

            android:textColor="@drawable/text_color_sel" />

        <TextView

            android:id="@+id/tv_tab_bottom_friend"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_find_frd_normal"

            android:gravity="center"

            android:text="朋友"

            android:textColor="@drawable/text_color_sel" />

        <TextView

            android:id="@+id/tv_tab_bottom_contact"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_address_normal"

            android:gravity="center"

            android:text="通讯录"

            android:textColor="@drawable/text_color_sel" />

        <TextView

            android:id="@+id/tv_tab_bottom_setting"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_settings_normal"

            android:gravity="center"

            android:text="设置"

            android:textColor="@drawable/text_color_sel" />

    </LinearLayout>

</LinearLayout>

框架一,fragment


public class MainTabFragment extends Fragment {

    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.main_tab_01, container, false);

        TextView tv = (TextView) view.findViewById(R.id.tv);

        tv.setText(new SimpleDateFormat("yyyy-MM-dd\nHH:mm:ss").format(new Date()));

        return view;

    }

}


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:background="#fcfcfc"     android:orientation="vertical" >     <TextView         android:id="@+id/tv"         android:layout_width="fill_parent"         android:layout_height="fill_parent"         android:background="#88cc"         android:gravity="center"         android:text="第一个页面"         android:textColor="#000"         android:textSize="30sp" /> </LinearLayout>  

框架二,MainActivity


/**

 * 使用support.v4.app中的Fragment,继承自FragmentActivity

 * 没办法,使用FragmentPagerAdapter就不可以用app的Fragment,只能用v4的Fragment

 * 有个问题:viewpage响应的条目会因为自己的缓存机制导致不更新页面

 * @author 白乾涛

 */

public class MainActivity2 extends FragmentActivity implements OnClickListener {

    private ViewPager mViewPager;

    private FragmentPagerAdapter mPagerAdapter;

    private List<Fragment> mFragments = new ArrayList<Fragment>();

    /**

     * 四个TextView控件

     */

    private TextView[] mTabTVs = new TextView[4];

    /**

     * 四个控件【未】按下时的图片id

     */

    private int[] mTabTVIdsNormal;

    /**

     * 四个控件按下时的图片id

     */

    private int[] mTabTVIdsPress;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main2);

        initViews();

        initViewPage();

        setTabSelection(mTabTVs[0]);

    }

    private void initViews() {

        mTabTVs[0] = (TextView) findViewById(R.id.tv_tab_bottom_weixin);

        mTabTVs[1] = (TextView) findViewById(R.id.tv_tab_bottom_friend);

        mTabTVs[2] = (TextView) findViewById(R.id.tv_tab_bottom_contact);

        mTabTVs[3] = (TextView) findViewById(R.id.tv_tab_bottom_setting);

        mTabTVIdsNormal = new int[] { R.drawable.tab_weixin_normal, R.drawable.tab_find_frd_normal, R.drawable.tab_address_normal,

                R.drawable.tab_settings_normal };

        mTabTVIdsPress = new int[] { R.drawable.tab_weixin_pressed, R.drawable.tab_find_frd_pressed, R.drawable.tab_address_pressed,

                R.drawable.tab_settings_pressed };

        //给四个控件设置一个Tag,当我们点击某个控件时可以根据这个Tag来识别此控件,当然我们也可以根据v.getid()来识别,但在这里setTag还有其他妙用

        for (int i = 0; i < mTabTVs.length; i++) {

            mTabTVs[i].setOnClickListener(this);

            mTabTVs[i].setTag(i);

        }

    }

    private void initViewPage() {

        mFragments.add(new MainTabFragment2());

        mFragments.add(new MainTabFragment2());

        mFragments.add(new MainTabFragment2());

        mFragments.add(new MainTabFragment2());

        mPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {

            @Override

            public int getCount() {

                return mFragments.size();

            }

            @Override

            public Fragment getItem(int arg0) {

                return mFragments.get(arg0);

            }

        };

        mViewPager = (ViewPager) findViewById(R.id.id_viewpager);

        mViewPager.setAdapter(mPagerAdapter);

        mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override

            public void onPageSelected(int position) {

                setTabSelection(mTabTVs[position]);

            }

            @Override

            public void onPageScrollStateChanged(int arg0) {

            }

            @Override

            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

        });

    }

    @Override

    /**

     *当下面tab的状态改变时,更改ViewPager选中项

     */

    public void onClick(View v) {

        switch (v.getId()) {

        case R.id.tv_tab_bottom_weixin:

        case R.id.tv_tab_bottom_friend:

        case R.id.tv_tab_bottom_contact:

        case R.id.tv_tab_bottom_setting:

            setTabSelection(v);

            mViewPager.setCurrentItem((Integer) v.getTag());

            break;

        default:

            break;

        }

    }

    /**

     *当ViewPager选中项改变时,更改下面tab的状态

     */

    private void setTabSelection(View v) {

        //清除掉所有的选中状态

        for (int i = 0; i < mTabTVs.length; i++) {

            mTabTVs[i].setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(mTabTVIdsNormal[i]), null, null);

            mTabTVs[i].setSelected(false);

        }

        // 改变控件的图片,这里的setSelected是为了演示通过selector来改变文字颜色

        int index = (Integer) v.getTag();

        ((TextView) v).setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(mTabTVIdsPress[index]), null, null);

        v.setSelected(true);

    }

}

框架二,布局



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="45dp"

        android:background="@drawable/title_bar"

        android:gravity="center"

        android:text="微信"

        android:textColor="#fff"

        android:textSize="20sp"

        android:textStyle="bold" />

    <android.support.v4.view.ViewPager

        android:id="@+id/id_viewpager"

        android:layout_width="fill_parent"

        android:layout_height="0dp"

        android:layout_weight="2016" />

    <LinearLayout

        android:id="@+id/ly_main_tab_bottom"

        android:layout_width="fill_parent"

        android:layout_height="55dp"

        android:background="@drawable/bottom_bar" >

        <TextView

            android:id="@+id/tv_tab_bottom_weixin"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_weixin_normal"

            android:gravity="center"

            android:text="微信"

            android:textColor="@drawable/text_color_sel" />

        <TextView

            android:id="@+id/tv_tab_bottom_friend"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_find_frd_normal"

            android:gravity="center"

            android:text="朋友"

            android:textColor="@drawable/text_color_sel" />

        <TextView

            android:id="@+id/tv_tab_bottom_contact"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_address_normal"

            android:gravity="center"

            android:text="通讯录"

            android:textColor="@drawable/text_color_sel" />

        <TextView

            android:id="@+id/tv_tab_bottom_setting"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_settings_normal"

            android:gravity="center"

            android:text="设置"

            android:textColor="@drawable/text_color_sel" />

    </LinearLayout>

</LinearLayout>

框架二,fragment


/**

 * 使用support.v4.app中的Fragment

 * @author 白乾涛

 */

public class MainTabFragment2 extends Fragment {

    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.main_tab_01, container, false);

        TextView tv = (TextView) view.findViewById(R.id.tv);

        tv.setText(new SimpleDateFormat("yyyy-MM-dd\nHH:mm:ss").format(new Date()));

        return view;

    }

}

框架3,MainActivity


/**

 * 只能用v4的Fragment

 * @author 白乾涛

 */

public class MainActivity3 extends SlidingFragmentActivity implements OnClickListener {

    private ViewPager mViewPager;

    private FragmentPagerAdapter mPagerAdapter;

    private List<Fragment> mFragments = new ArrayList<Fragment>();

    private ImageView iv_menu_left;

    private ImageView iv_menu_right;

    /**

     * 四个TextView控件

     */

    private TextView[] mTabTVs = new TextView[4];

    /**

     * 四个控件【未】按下时的图片id

     */

    private int[] mTabTVIdsNormal;

    /**

     * 四个控件按下时的图片id

     */

    private int[] mTabTVIdsPress;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.main3);

        initViews();

        initMenu();

        initViewPage();

        setTabSelection(mTabTVs[0]);

    }

    private void initViews() {

        mTabTVs[0] = (TextView) findViewById(R.id.tv_tab_bottom_weixin);

        mTabTVs[1] = (TextView) findViewById(R.id.tv_tab_bottom_friend);

        mTabTVs[2] = (TextView) findViewById(R.id.tv_tab_bottom_contact);

        mTabTVs[3] = (TextView) findViewById(R.id.tv_tab_bottom_setting);

        mTabTVIdsNormal = new int[] { R.drawable.tab_weixin_normal, R.drawable.tab_find_frd_normal, R.drawable.tab_address_normal,

                R.drawable.tab_settings_normal };

        mTabTVIdsPress = new int[] { R.drawable.tab_weixin_pressed, R.drawable.tab_find_frd_pressed, R.drawable.tab_address_pressed,

                R.drawable.tab_settings_pressed };

        //给四个控件设置一个Tag,当我们点击某个控件时可以根据这个Tag来识别此控件,当然我们也可以根据v.getid()来识别,但在这里setTag还有其他妙用

        for (int i = 0; i < mTabTVs.length; i++) {

            mTabTVs[i].setOnClickListener(this);

            mTabTVs[i].setTag(i);

        }

        //点击弹出左右侧滑菜单

        iv_menu_left = (ImageView) findViewById(R.id.iv_menu_left);

        iv_menu_right = (ImageView) findViewById(R.id.iv_menu_right);

        iv_menu_left.setOnClickListener(this);

        iv_menu_right.setOnClickListener(this);

    }

    private void initMenu() {

        SlidingMenu menu = getSlidingMenu();

        //两侧通用设置

        menu.setMode(SlidingMenu.LEFT_RIGHT);

        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);

        menu.setShadowWidthRes(R.dimen.shadow_width);

        menu.setShadowDrawable(R.drawable.shadow);

        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);

        menu.setFadeDegree(0.35f);

        //左侧的菜单

        setBehindContentView(R.layout.menu_left);//左右侧不能使用同一个布局,并且replace掉的控件的ID不能相同!不知道为什么会有这种情况!

        Fragment leftMenuFragment = new MainTabFragment2("左侧的");

        getSupportFragmentManager().beginTransaction().replace(R.id.menu_left, leftMenuFragment).commit();

        //右侧菜单设置

        menu.setSecondaryShadowDrawable(R.drawable.shadow);//根据资源文件ID来设置右边(二级)滑动菜单的阴影效果

        menu.setSecondaryMenu(R.layout.menu_right);//设置右边侧滑菜单

        Fragment rightMenuFragment = new MainTabFragment2("右侧的");

        getSupportFragmentManager().beginTransaction().replace(R.id.menu_right, rightMenuFragment).commit();

    }

    private void initViewPage() {

        mFragments.add(new MainTabFragment2("第1个"));

        mFragments.add(new MainTabFragment2("第2个"));

        mFragments.add(new MainTabFragment2("第3个"));

        mFragments.add(new MainTabFragment2("第4个"));

        mPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {

            @Override

            public int getCount() {

                return mFragments.size();

            }

            @Override

            public Fragment getItem(int arg0) {

                return mFragments.get(arg0);

            }

        };

        mViewPager = (ViewPager) findViewById(R.id.id_viewpager);

        mViewPager.setAdapter(mPagerAdapter);

        mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override

            public void onPageSelected(int position) {

                setTabSelection(mTabTVs[position]);

            }

            @Override

            public void onPageScrollStateChanged(int arg0) {

            }

            @Override

            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

        });

    }

    @Override

    /**

     *当下面tab的状态改变时,更改ViewPager选中项

     */

    public void onClick(View v) {

        switch (v.getId()) {

        case R.id.tv_tab_bottom_weixin:

        case R.id.tv_tab_bottom_friend:

        case R.id.tv_tab_bottom_contact:

        case R.id.tv_tab_bottom_setting:

            setTabSelection(v);

            mViewPager.setCurrentItem((Integer) v.getTag());

            break;

        case R.id.iv_menu_left:

            getSlidingMenu().showMenu();

            break;

        case R.id.iv_menu_right:

            getSlidingMenu().showSecondaryMenu();

            break;

        default:

            break;

        }

    }

    /**

     *当ViewPager选中项改变时,更改下面tab的状态

     */

    private void setTabSelection(View v) {

        //清除掉所有的选中状态

        for (int i = 0; i < mTabTVs.length; i++) {

            mTabTVs[i].setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(mTabTVIdsNormal[i]), null, null);

            mTabTVs[i].setSelected(false);

        }

        // 改变控件的图片,这里的setSelected是为了演示通过selector来改变文字颜色

        int index = (Integer) v.getTag();

        ((TextView) v).setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(mTabTVIdsPress[index]), null, null);

        v.setSelected(true);

    }

}

框架3,布局



main3.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="45dp"

        android:background="@drawable/title_bar"

        android:orientation="horizontal" >

        <ImageView

            android:id="@+id/iv_menu_left"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_gravity="center_vertical"

            android:layout_marginLeft="3dp"

            android:src="@drawable/showleft_normal" />

        <TextView

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:layout_gravity="center_vertical"

            android:layout_weight="2016"

            android:gravity="center"

            android:text="微信"

            android:textColor="#fff"

            android:textSize="20sp"

            android:textStyle="bold" />

        <ImageView

            android:id="@+id/iv_menu_right"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_gravity="center_vertical"

            android:layout_marginRight="3dp"

            android:src="@drawable/showright_normal" />

    </LinearLayout>

    <android.support.v4.view.ViewPager

        android:id="@+id/id_viewpager"

        android:layout_width="fill_parent"

        android:layout_height="0dp"

        android:layout_weight="1" />

    <LinearLayout

        android:id="@+id/ly_main_tab_bottom"

        android:layout_width="fill_parent"

        android:layout_height="55dp"

        android:background="@drawable/bottom_bar" >

        <TextView

            android:id="@+id/tv_tab_bottom_weixin"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_weixin_normal"

            android:gravity="center"

            android:text="微信"

            android:textColor="@drawable/text_color_sel" />

        <TextView

            android:id="@+id/tv_tab_bottom_friend"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_find_frd_normal"

            android:gravity="center"

            android:text="朋友"

            android:textColor="@drawable/text_color_sel" />

        <TextView

            android:id="@+id/tv_tab_bottom_contact"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_address_normal"

            android:gravity="center"

            android:text="通讯录"

            android:textColor="@drawable/text_color_sel" />

        <TextView

            android:id="@+id/tv_tab_bottom_setting"

            android:layout_width="0dp"

            android:layout_height="fill_parent"

            android:layout_weight="1"

            android:drawableTop="@drawable/tab_settings_normal"

            android:gravity="center"

            android:text="设置"

            android:textColor="@drawable/text_color_sel" />

    </LinearLayout>

</LinearLayout>

menu_left.xml <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@+id/menu_left"     android:layout_width="match_parent"     android:background="#ccf"     android:layout_height="match_parent" />
menu_right.xml <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@+id/menu_right"     android:layout_width="match_parent"     android:background="#ccf"     android:layout_height="match_parent" />

来自为知笔记(Wiz)

附件列表

时间: 2024-10-18 05:57:53

应用框架 ViewPager Tab Fragment SlidingMenu的相关文章

ViewPager+tab+Fragment的滑动

package teamhgl.xinwensudu; import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.view.

Android tab导航的几种方法:ActionBar tab +fragment,Viewpager+pagerTitleStrip,开源框架ViewPageIndicator 和 ViewPager

action来实现tab标签 并跟fragment结合 因为要写新闻客户端这个tab导航是必须的 这里我写几个小练习,希望大家融会贯通. 1actionbar设置tab +fragment 布局是个layout 什么layout都可以 加个Id 叫container package com.example.demoforactionbar; import android.app.ActionBar; import android.app.Activity; import android.app.

低版本系统兼容的ActionBar(六)用Fragment+ViewPager+Tab实现快速导航

Tab经常和Fragment结合使用,这一讲我们用3种方式来实现这种快捷导航. 0.重要的两个监听器 MyTabListener,这个我们之前已经接触过了 package com.kale.actionbar05; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import a

ViewPager之Fragment页面切换

一.概述 ViewPager是android-support-v4中提供的类,它是一个容器类,常用于页面之间的切换. 继上篇文章<ViewPager之引导页>之后,本文主要介绍ViewPager更为通用的实践:ViewPager搭配Fragment实现页面切换. 这种实现方式相对于上篇文章而言,可以更好的支持不同页面各自的复杂逻辑,与此同时,也能够保障页面之间的耦合度尽可能的低. 按照惯例,先晒出效果图:        二.实现思路 首先分析一下不同区域的交互需求: 中间灰色区域除了要支持三套

android开发之viewpager and Fragment

Android ViewPager和Fragment实现顶部导航界面滑动效果 Layout 管理器允许用户可以在页面上,左右滑动来翻动页面.你可以考虑实现PagerAdapter接口来显示 该效果.ViewPager很多时候会结合Fragment一块使用,这种方法使得管理每个页面的生命周期变得很方便. 些adapter的具体实现,可以适合于这种ViewPager结合Fragment使用的情况.这些adapter包括: 其中,有一FragmentPagerAdapter,和 FragmentSta

Android ViewPager和Fragment实现顶部导航界面滑动效果

在项目中,我们常常需要实现界面滑动切换的效果.例如,微信界面的左右滑动切换效果.那这种效果是怎么实现的?今天我就带大家简单了解ViewPager,并通过实例来实现该效果. 一. ViewPager 官方API 首先我们来看一下ViewPager官方给出的解释,如图: 具体意思如下: Layout 管理器允许用户可以在页面上,左右滑动来翻动页面.你可以考虑实现PagerAdapter接口来显示该效果. ViewPager很多时候会结合Fragment一块使用,这种方法使得管理每个页面的生命周期变得

ViewPager和Fragment结合使用,可以做出顶部导航界面滑动效果

在项目中,我们常常需要实现界面滑动切换的效果.例如,微信界面的左右滑动切换效果.那这种效果是怎么实现的?今天我就带大家简单了解ViewPager,并通过实例来实现该效果. 一. ViewPager 官方API 首先我们来看一下ViewPager官方给出的解释,如图: 具体意思如下: Layout 管理器允许用户可以在页面上,左右滑动来翻动页面.你可以考虑实现PagerAdapter接口来显示该效果. ViewPager很多时候会结合Fragment一块使用,这种方法使得管理每个页面的生命周期变得

如何使用viewpager与fragment写一个app导航activity

今天我们来看一下如何使用viewpager和fragment组合来写一个app导航activity,这里使用到了android开源控件viewpagerindicator,有兴趣的同学可以去它网站上看看它的介绍. 附上效果截图一张: demo中只有一个activity,是用activity_main.xml来布局,其内容如下: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:and

ViewPager结合Fragment进行无限滑动

实现ViewPager结合Fragment实现无限循环切换,这里也是在适配器里面进行的,当然使用滑动监听也能够实现 import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.view.ViewGroup; import java.util.Array