标签:
这几天学习了一下ViewPager+Fragement的基本使用方法并写了个Demo。现将代码和效果图放上。
首先是布局文件
<RelativeLayout 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" tools:context=".MainActivity" > <!-- ViewPager组件 --> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- PagerTabStrip是标签页的切换效果 --> <android.support.v4.view.PagerTabStrip android:id="@+id/pagertab" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </android.support.v4.view.ViewPager> </RelativeLayout> <!--注意事项: 1.这里ViewPager和 PagerTabStrip都要把包名写全了,不然会ClassNotFount 2.API中说:在布局xml把PagerTabStrip当做ViewPager的一个子标签来用,不能拿出来,不然还是会报错 -->
2.MainActivity.java
MainActivity主要就做了一些加载控件和实例化Fragment的事情,重点要注意的是MyViewPagerAdapter这个适配器的内部类。
package com.xlp.myviewpagerfragment;
import java.util.ArrayList;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends FragmentActivity {
private ViewPager m_vp;
// 通过pagerTabStrip可以设置标题的属性
private PagerTabStrip pagerTabStrip;
private Fragment1 mfragment1;
private Fragment2 mfragment2;
private Fragment3 mfragment3;
// 页面列表
private ArrayList<Fragment> fragmentList;
// 标题列表
private ArrayList<String> titleList = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
public void initView() {
m_vp = (ViewPager) findViewById(R.id.viewpager);
pagerTabStrip = (PagerTabStrip) findViewById(R.id.pagertab);
// 设置下划线颜色
pagerTabStrip.setTabIndicatorColor(getResources().getColor(
android.R.color.holo_green_dark));
pagerTabStrip.setBackgroundColor(getResources().getColor(
android.R.color.holo_red_dark));
mfragment1 = new Fragment1();
mfragment2 = new Fragment2();
mfragment3 = new Fragment3();
fragmentList = new ArrayList<Fragment>();
fragmentList.add(mfragment1);
fragmentList.add(mfragment2);
fragmentList.add(mfragment3);
titleList.add("第一页");
titleList.add("第二页");
titleList.add("第三页");
m_vp.setAdapter(new MyViewPagerAdapter(getSupportFragmentManager()));
}
public class MyViewPagerAdapter extends FragmentPagerAdapter {
public MyViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
return fragmentList.get(arg0);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titleList.get(position);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
3.Fragment1.java
其中的一个Fragment页面,这里只展示一个,其他写法相同
package com.xlp.myviewpagerfragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment1 extends Fragment {
private View mMainView;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.i("xlp", "fragment1-->oncreate()");
//动态加载布局文件
LayoutInflater inflater = getActivity().getLayoutInflater();
mMainView = inflater.inflate(R.layout.fragment1,
(ViewGroup) getActivity().findViewById(R.id.viewpager), false);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.i("xlp", "fragment1-->onCreateView()");
ViewGroup viewGroup = (ViewGroup) mMainView.getParent();
return mMainView;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.v("xlp", "fragment1-->onDestroy()");
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.v("xlp", "fragment1-->onPause()");
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.v("xlp", "fragment1-->onResume()");
}
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.v("xlp", "fragment1-->onStart()");
}
@Override
public void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.v("xlp", "fragment1-->onStop()");
}
}
4.最后放上效果图

Android中ViewPager+Fragment的基本使用
标签:
原文地址:http://my.oschina.net/u/2283209/blog/363739