天天看點

ViewPager + FragmentPagerAdapter[可左右滑動-便于維護的Tab布局]

1.建立4個Fragment

2.建立對應的4個xml

3.建立top.xml / bottom.xml,用于插入activity_main.xml

4.activity_main.xml

5.Java代碼

------------------------------------------------------------------------------------------------------------------------

public class TabOne extends Fragment{

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

// TODO Auto-generated method stub

return  inflater.inflate(R.layout.tab01, container ,false);

}

}

------------------------------------------------------------------------------------------------------------------------

    <TextView

        android:id="@+id/tab_tv_01"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

        android:gravity="center"

        android:text="最新"

        android:textSize="30sp"

        android:textStyle="bold" />

------------------------------------------------------------------------------------------------------------------------

------------->top.xml

    <TextView

        android:id="@+id/textView1"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:gravity="center"

        android:padding="7dp"

        android:text="音樂播放器" />

------------->bottom.xml

<LinearLayout

        android:id="@+id/ll_new"

        android:layout_width="0dp"

        android:layout_height="fill_parent"

        android:layout_weight="1"

        android:gravity="center"

        android:orientation="vertical" >

        <ImageButton

            android:id="@+id/ll_new_btn"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:background="@android:color/transparent"

            android:clickable="false"

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

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="最新" />

    </LinearLayout>

    <LinearLayout

        android:id="@+id/ll_many"

        android:layout_width="0dp"

        android:layout_height="fill_parent"

        android:layout_weight="1"

        android:gravity="center"

        android:orientation="vertical" >

        <ImageButton

            android:id="@+id/ll_many_btn"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:background="@android:color/transparent"

            android:clickable="false"

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

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="曲庫" />

    </LinearLayout>

    <LinearLayout

        android:id="@+id/ll_serch"

        android:layout_width="0dp"

        android:layout_height="fill_parent"

        android:layout_weight="1"

        android:gravity="center"

        android:orientation="vertical" >

        <ImageButton

            android:id="@+id/ll_serch_btn"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:background="@android:color/transparent"

            android:clickable="false"

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

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="搜尋" />

    </LinearLayout>

    <LinearLayout

        android:id="@+id/ll_mine"

        android:layout_width="0dp"

        android:layout_height="fill_parent"

        android:layout_weight="1"

        android:gravity="center"

        android:orientation="vertical" >

        <ImageButton

            android:id="@+id/ll_mine_btn"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:background="@android:color/transparent"

            android:clickable="false"

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

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="我的" />

    </LinearLayout>

------------------------------------------------------------------------------------------------------------------------

----------------------->activity_main.xml

 <!-- 引入頂部 -->

    <include layout="@layout/top" />

    <android.support.v4.view.ViewPager

        android:id="@+id/viewPager"

        android:layout_width="fill_parent"

        android:layout_height="0dp"

        android:layout_weight="1" >

    </android.support.v4.view.ViewPager>

    <!-- 引入底部 -->

    <include layout="@layout/bottom" />

------------------------------------------------------------------------------------------------------------------------

Java代碼

public class MainActivity extends FragmentActivity implements OnClickListener {

private ViewPager viewPager;

private FragmentPagerAdapter adapter;

private List<Fragment> mFragment;

private LinearLayout ll_new, ll_many, ll_serch, ll_mine;

private ImageButton ll_new_btn, ll_many_btn, ll_serch_btn, ll_mine_btn;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);

initView();

initEvent();

setSelect(3);

}

private void initEvent() {

ll_new.setOnClickListener(this);

ll_many.setOnClickListener(this);

ll_serch.setOnClickListener(this);

ll_mine.setOnClickListener(this);

}

private void initView() {

viewPager = (ViewPager) findViewById(R.id.viewPager);

ll_new = (LinearLayout) findViewById(R.id.ll_new);

ll_many = (LinearLayout) findViewById(R.id.ll_many);

ll_serch = (LinearLayout) findViewById(R.id.ll_serch);

ll_mine = (LinearLayout) findViewById(R.id.ll_mine);

ll_new_btn = (ImageButton) findViewById(R.id.ll_new_btn);

ll_many_btn = (ImageButton) findViewById(R.id.ll_many_btn);

ll_serch_btn = (ImageButton) findViewById(R.id.ll_serch_btn);

ll_mine_btn = (ImageButton) findViewById(R.id.ll_mine_btn);

mFragment = new ArrayList<Fragment>();

Fragment mTab01 = new TabOne();

Fragment mTab02 = new TabTwo();

Fragment mTab03 = new TabThree();

Fragment mTab04 = new TabFour();

mFragment.add(mTab01);

mFragment.add(mTab02);

mFragment.add(mTab03);

mFragment.add(mTab04);

adapter = new FragmentPagerAdapter(getSupportFragmentManager()) {

@Override

public int getCount() {

// TODO Auto-generated method stub

return mFragment.size();

}

@Override

public Fragment getItem(int arg0) {

// TODO Auto-generated method stub

return mFragment.get(arg0);

}

};

viewPager.setAdapter(adapter);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.ll_new:

setSelect(0);

break;

case R.id.ll_many:

setSelect(1);

break;

case R.id.ll_serch:

setSelect(2);

break;

case R.id.ll_mine:

setSelect(3);

break;

}

}

private void setSelect(int i) {

setTab(i);

switch (i) {

case 0:

ll_new_btn.setImageResource(R.drawable.ic_launcher_n);

break;

case 1:

ll_many_btn.setImageResource(R.drawable.ic_launcher_n);

break;

case 2:

ll_serch_btn.setImageResource(R.drawable.ic_launcher_n);

break;

case 3:

ll_mine_btn.setImageResource(R.drawable.ic_launcher_n);

break;

}

viewPager.setCurrentItem(i);

viewPager.setOnPageChangeListener(new OnPageChangeListener() {

@Override

public void onPageSelected(int arg0) {

int currentItem = viewPager.getCurrentItem();

setTab(currentItem);

}

@Override

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

// TODO Auto-generated method stub

}

@Override

public void onPageScrollStateChanged(int arg0) {

// TODO Auto-generated method stub

}

});

}

private void restPng() {

ll_new_btn.setImageResource(R.drawable.ic_launcher);

ll_many_btn.setImageResource(R.drawable.ic_launcher);

ll_serch_btn.setImageResource(R.drawable.ic_launcher);

ll_mine_btn.setImageResource(R.drawable.ic_launcher);

}

private void setTab(int i){

restPng();

switch (i) {

case 0:

ll_new_btn.setImageResource(R.drawable.ic_launcher_n);

break;

case 1:

ll_many_btn.setImageResource(R.drawable.ic_launcher_n);

break;

case 2:

ll_serch_btn.setImageResource(R.drawable.ic_launcher_n);

break;

case 3:

ll_mine_btn.setImageResource(R.drawable.ic_launcher_n);

break;

}

}

}

------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------

ViewPager + FragmentPagerAdapter[可左右滑動-便于維護的Tab布局]

繼續閱讀