要点:1.viewpager的配置(对我而言)
viewpager在XML文件中的书写:
<android.support.v4.view.ViewPager
android:id="@+id/vPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_gravity="center"
android:layout_weight="1.0"
android:background="#ffffff"
android:flipInterval="30"
android:persistentDrawingCache="animation" />
2.fragment的配置,需要一个activity,其他为fragment。需要有fragmentmanage。FragmentPagerAdapter
vPager=(ViewPager) findViewById(R.id.vPager);
manage=getSupportFragmentManager();
list=new ArrayList<Fragment>();
fg1=new FG1();
fg2=new FG2();
fg3=new FG3();
fg4=new FG4();
list.add(fg1);
list.add(fg2);
list.add(fg3);
list.add(fg4);
adapter=new adapter(manage, list);
vPager.setAdapter(adapter);---------------------------------activity中的配置
滑动事件监听:
mViewPage.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
if (state==2){
code=mViewPage.getCurrentItem();
Log.e("COde",code+"");
update(code);
}
}
});
根据滑动的位置更新下面选项的显示
public void update(int code){
switch (code)
{
case 0:
mViewPage.setCurrentItem(0);
clearView();
tex_find.setTextColor(Color.parseColor("#ffffff"));
img_find.setBackground(getResources().getDrawable(R.drawable.faxian));
break;
case 1:
mViewPage.setCurrentItem(1);
clearView();
tex_zhishui.setTextColor(Color.parseColor("#ffffff"));
img_zhishui.setBackground(getResources().getDrawable (R.drawable.zhishui));
break;
// case 2:
// mViewPage.setCurrentItem(2);
// clearView();
// tex_me.setTextColor(Color.parseColor("#ffffff"));
// img_me.setBackground(getResources().getDrawable(R.drawable.wode));
// break;
case 2:
mViewPage.setCurrentItem(2);
clearView();
tex_user.setTextColor(Color.parseColor("#ffffff"));
img_user.setBackground(getResources().getDrawable(R.drawable.wode));
break;
}
}
清空上次滑动造成的选项改变
public void clearView(){
img_find.setBackground(getResources().getDrawable(R.drawable.faxian2));
img_zhishui.setBackground(getResources().getDrawable(R.drawable.zhishui2));
//img_me.setBackground(getResources().getDrawable(R.drawable.wode2));
tex_find.setTextColor(Color.parseColor("#5d636c"));
tex_zhishui.setTextColor(Color.parseColor("#5d636c"));
//tex_me.setTextColor(Color.parseColor("#5d636c"));
tex_user.setTextColor(Color.parseColor("#5d636c"));
img_user.setBackground(getResources().getDrawable(R.drawable.wode2));
}
3.adapter
public class ViewPageAdapter extends FragmentPagerAdapter{
int beijing= R.drawable.background;
List<Fragment> mList;
FragmentManager manager;
public ViewPageAdapter(FragmentManager fm, List<Fragment> mList, FragmentManager manager) {
super(fm);
this.mList = mList;
this.manager = manager;
}
@Override
public void destroyItem(View container, int position, Object object) {
super.destroyItem(container, position, object);
}
@Override
public Fragment getItem(int position) {
return mList.get(position);
}
@Override
public int getCount() {
return mList.size();
}
}
广告轮播demo:
MainActivity:
package com.example.administrator.testviewpage;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends FragmentActivity {
int currentIndext;//现在在哪个下表下
Handler mHandle;
ViewPager viewpage;
Fragment1 fragment1;
Fragment2 fragment2;
Fragment3 fragment3;
Thread thread;
List mList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
currentIndext = 0;
mHandle = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
currentIndext++;
setFragmentWithIndex(currentIndext);
break;
}
super.handleMessage(msg);
}
};
viewpage = (ViewPager) findViewById(R.id.viewpage);
mList = new ArrayList();
fragment1 = new Fragment1();
fragment2 = new Fragment2();
fragment3 = new Fragment3();
mList.add(fragment1);
mList.add(fragment2);
mList.add(fragment3);
MyViewPageAdapter myViewPageAdapter = new MyViewPageAdapter(getSupportFragmentManager(), mList, getSupportFragmentManager());
viewpage.setAdapter(myViewPageAdapter);
viewpage.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//让线程中断
thread.interrupt();
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == 2) {
//设置当前下标
int currentIndex = viewpage.getCurrentItem();
currentIndext = currentIndex;
setFragmentWithIndex(currentIndex);
try {
thread.start();
} catch (Exception e) {
}
}
}
});
thread = new Thread() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(2000);
mHandle.sendEmptyMessage(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
thread.start();
}
public void setFragmentWithIndex(int index) {
viewpage.setCurrentItem(index);
}
}
ViewPageAdapter:
package com.example.administrator.testviewpage;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import java.util.List;
/**
* Created by Administrator on 2017/5/2.
*/
public class MyViewPageAdapter extends FragmentPagerAdapter{
List<Fragment> mList;
FragmentManager mFragmentmanager;
public MyViewPageAdapter(FragmentManager fm, List<Fragment> mList, FragmentManager mFragmentmanager) {
super(fm);
this.mList = mList;
this.mFragmentmanager = mFragmentmanager;
}
@Override
public Fragment getItem(int position) {
if(mList.size()-1>=position){
return mList.get(position);
}else {
if(position%mList.size()==0){
return new Fragment1();
}else if(position%mList.size()==1){
return new Fragment2();
}else {
return new Fragment3();
}
}
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
}