ViewPager

原创 2016年08月29日 11:40:56
一、ViewPager简介:
(一)、作用:

ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样。ViewPager用于实现多页面的切换效果。该类存在于Google的兼容包里面,android.support.v4.view.ViewPager。
(二)、ViewPager的常规使用步骤:
1、在布局文件中定义ViewPager组件(android.support.v4.view.ViewPager节点);
2、在Activity中设置ViewPager中放置的view内容;
3、给ViewPager对象设置适配器(PagerAdapter)。
ViewPager的适配器是PagerAdapter,它是基类。提供适配器来填充ViewPager的内部。一般做法都是继承PagerAdapter,自定义一个MyAdapter。
也可以使用一个更具体的实现,如FragmentPagerAdapter或FragmentStatePagerAdapter。谷歌官方推荐ViewPager和Fragment一起使用。当然在3.0以下版本中,没有必要这么做。
(三)、实现PagerAdapter必须重写的方法:
1、getCount()
2、isViewFromObject(View, Object)
3、instantiateItem(ViewGroup, int)
4、destroyItem(ViewGroup, int, Object)
【备注:】最少要实现上面四个方法,当然如果想让程序更健壮或是功能更全面,你可以重写其他的方法。

二、ViewPager实现基本导航效果一(TAB标题会滚动):

(一)、布局核心代码:


<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">


<android.support.v4.view.PagerTabStrip
android:id="@+id/pagerTabStrip_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top">
</android.support.v4.view.PagerTabStrip>
</android.support.v4.view.ViewPager>
</LinearLayout>
【备注:】
1、这里ViewPager和 PagerTabStrip都要把包名写全了,不然会ClassNotFount;
2、API中说:在布局xml把PagerTabStrip当做ViewPager的一个子标签来用,不能拿出来,不然还是会报错;
3、在PagerTabStrip标签中可以用属性android:layout_gravity=TOP|BOTTOM来指定title的位置;

4、如果要显示出PagerTabStrip中的title,必须在BaseAdapter中重写getPageTitle(int)。


(三)、Activity中使用ViewPager的核心代码:

publicclass MainActivity extends Activity {


private List<View> list_views;
private List<String> list_titles;
private ViewPager viewPager_main;
private PagerTabStrip pagerTabStrip_main;


@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


viewPager_main = (ViewPager) findViewById(R.id.viewpager_main);
pagerTabStrip_main = (PagerTabStrip) findViewById(R.id.pagerTabStrip_main);


pagerTabStrip_main.setTabIndicatorColor(Color.YELLOW);
pagerTabStrip_main.setDrawFullUnderline(true);
pagerTabStrip_main.setBackgroundColor(Color.GRAY);
pagerTabStrip_main.setTextSpacing(50);


list_views = new ArrayList<View>();
list_titles = new ArrayList<String>();
LayoutInflater inflater = LayoutInflater.from(this);
View view1 = inflater.inflate(R.layout.view1_viewpager, null);
View view2 = inflater.inflate(R.layout.view2_viewpager, null);
View view3 = inflater.inflate(R.layout.view3_viewpager, null);
View view4 = inflater.inflate(R.layout.view4_viewpager, null);


list_views.add(view1);
list_views.add(view2);
list_views.add(view3);
list_views.add(view4);


list_titles.add("View1");
list_titles.add("View2");
list_titles.add("View3");
list_titles.add("View4");


viewPager_main.setAdapter(new MyAdapter(list_views, list_titles));
}
class MyAdapter extends PagerAdapter {
private List<View> list = null;
private List<String> list_titles = null;


public MyAdapter(List<View> list, List<String> list_titles) {
this.list = list;
this.list_titles = list_titles;
}


@Override
publicint getCount() {
if (list != null) {
returnlist.size();
}
return 0;
}


@Override
publicboolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}


@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(list.get(position));
returnlist.get(position);
}


@Override
publicvoiddestroyItem(ViewGroup container, int position, Object object) {
container.removeView(list.get(position));
}


@Override
public CharSequence getPageTitle(int position) {
returnlist_titles.get(position);
}
}
}

三、ViewPager实现基本导航效果二(TAB标题固定,不随ViewPager而滚动):

(一)、布局核心代码:


<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">




<LinearLayout

android:id="@+id/layout_main_tabtitle"

android:layout_width="match_parent"

android:layout_height="wrap_content">




<TextView

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textSize="24sp"

android:background="#999"

android:text="Tab1"/>




<TextView

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textSize="24sp"

android:background="#999"

android:layout_marginLeft="1dp"

android:text="Tab2"/>




<TextView

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textSize="24sp"

android:background="#999"

android:layout_marginLeft="1dp"

android:text="Tab3"/>




</LinearLayout>




<TextView

android:layout_width="match_parent"

android:layout_height=“1px"

android:background="#00f"

android:text=""/>



<android.support.v4.view.ViewPager

android:id="@+id/viewPager_main"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>


</LinearLayout>

(二)、Activity中使用ViewPager的核心代码:

private ViewPager viewPager_main;

private List<View> list = null;

private TextView[] arr_titles = null;




@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);




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




list = new ArrayList<View>();

LayoutInflater inflater = LayoutInflater.from(this);

View view1 = inflater.inflate(R.layout.view1_viewpager, null);

View view2 = inflater.inflate(R.layout.view2_viewpager, null);

View view3 = inflater.inflate(R.layout.view3_viewpager, null);

list.add(view1);

list.add(view2);

list.add(view3);




viewPager_main.setAdapter(new MyAdapter(list));




viewPager_main.setOnPageChangeListener(new OnPageChangeListener() {




@Override

publicvoid onPageSelected(int position) {

// 当页面切换改变时,让所有的“点”都变成可操作。

for (int j = 0; j < arr_titles.length; j++) {

arr_titles[j].setEnabled(true);

arr_titles[j].setBackgroundColor(Color.GRAY);

}

// 让当前点击的“点”变成不可以操作。

arr_titles[position].setEnabled(false);

arr_titles[position].setBackgroundColor(Color.BLUE);

}




@Override

publicvoid onPageScrolled(int arg0, float arg1, int arg2) {

}




@Override

publicvoid onPageScrollStateChanged(int arg0) {

}

});




initTitle();

}




privatevoid initTitle() {

LinearLayout layout = (LinearLayout) findViewById(R.id.layout_main_tabtitle);

arr_titles = new TextView[3];




for (int i = 0; i < 3; i++) {

TextView textView = (TextView) layout.getChildAt(i);

arr_titles[i] = textView;

arr_titles[i].setEnabled(true);

arr_titles[i].setBackgroundColor(Color.GRAY);

arr_titles[i].setTag(i);

arr_titles[i].setOnClickListener(new OnClickListener() {




@Override

publicvoid onClick(View v) {

// 根据当前点击的position,设置ViewPager的当前item

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

}

});

}

arr_titles[0].setEnabled(false);

arr_titles[0].setBackgroundColor(Color.BLUE);

}




class MyAdapter extends PagerAdapter {

private List<View> list = null;




public MyAdapter(List<View> list) {

this.list = list;

}




@Override

publicint getCount() {

returnlist.size();

}




@Override

publicboolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}




@Override

public Object instantiateItem(ViewGroup container, int position) {

container.addView(list.get(position));

returnlist.get(position);

}




@Override

publicvoid destroyItem(ViewGroup container, int position, Object object) {

container.removeView(list.get(position));

}



}

四、ViewPager实现程序欢迎界面(介绍性图片可以滚动,下方有几个点,可以提示当前item的位置):

(一)、效果图:


(二)、布局核心代码:

<RelativeLayoutxmlns: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.support.v4.view.ViewPager

android:id="@+id/viewPager_main"

android:layout_width="wrap_content"

android:layout_height="match_parent"/>




<LinearLayout

android:id="@+id/layout_main"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="80dp"

android:orientation="horizontal">



<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/dot"

android:adjustViewBounds="true"

android:maxWidth="10dp"

android:layout_marginRight="10dp"/>



<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/dot"

android:adjustViewBounds="true"

android:maxWidth="10dp"

android:layout_marginRight="10dp"/>



<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/dot"

android:adjustViewBounds="true"

android:maxWidth="10dp"

android:layout_marginRight="10dp"/>



<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/dot"

android:adjustViewBounds="true"

android:maxWidth="10dp"/>

</LinearLayout>


</RelativeLayout>

(三)、dot.xml中的核心代码:

<?xmlversion="1.0"encoding="UTF-8"?>

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<itemandroid:state_enabled="true"android:drawable="@drawable/icon02"/>
<itemandroid:state_enabled="false"android:drawable="@drawable/icon01"/>
</selector>

<!--
android:state_selected选中
android:state_focused获得焦点
android:state_pressed点击
android:state_enabled设置是否响应事件,指所有事件 -->


(四)、Activity中使用ViewPager的核心代码:

publicclass MainActivity extends Activity {

private ViewPager viewPager_main;

private List<View> list = null;

privateint[] imgIds = newint[] { R.drawable.img012, R.drawable.img017,

R.drawable.img021, R.drawable.img030 };

private ImageView[] dots = null;

private SoundPool pool = null;

private HashMap<Integer, Integer> poolMap = null;




@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);


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


list = new ArrayList<View>();

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

ImageView imgView = new ImageView(this);

imgView.setImageResource(imgIds[i]);

list.add(imgView);

}

viewPager_main.setAdapter(new MyAdapter(list));


viewPager_main.setOnPageChangeListener(new OnPageChangeListener() {

@Override

publicvoid onPageSelected(int position) {

for (int j = 0; j < dots.length; j++) {

dots[j].setEnabled(true);

}

dots[position].setEnabled(false);

playSound(1);

}




@Override

publicvoid onPageScrolled(int arg0, float arg1, int arg2) {

}



@Override

publicvoid onPageScrollStateChanged(int arg0) {

}

});

initDots();

initSoundPool();//初始化声音池

}




privatevoid initDots() {

LinearLayout layout = (LinearLayout) findViewById(R.id.layout_main);

dots = new ImageView[imgIds.length];

// 循环取得小点图片

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

// 得到一个LinearLayout下面的每一个子元素

dots[i] = (ImageView) layout.getChildAt(i);

dots[i].setEnabled(true);

dots[i].setTag(i);

dots[i].setOnClickListener(new OnClickListener() {

@Override

publicvoid onClick(View v) {

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

}

});

}

dots[0].setEnabled(false);

}




class MyAdapter extends PagerAdapter {

private List<View> list = null;




public MyAdapter(List<View> list) {

this.list = list;

}




@Override

publicint getCount() {

if (list != null) {

returnlist.size();

}

return 0;

}




@Override

publicboolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}




@Override

public Object instantiateItem(ViewGroup container, int position) {

container.addView(list.get(position));

returnlist.get(position);

}




@Override

publicvoid destroyItem(ViewGroup container, int position, Object object) {

container.removeView(list.get(position));

}

}



publicvoid initSoundPool() {

pool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);

poolMap = new HashMap<Integer, Integer>();

poolMap.put(1, pool.load(this, R.raw.ding, 1));

poolMap.put(2, pool.load(this, R.raw.ringin, 1));

}



publicvoid playSound(int sound) {

pool.play(poolMap.get(sound), // 播放的音乐id

1, // 左声道音量

1, // 右声道音量

1, // 优先级,0为最低

0, // 循环次数,0:不循环,-1:永远循环

1 // 回放速度 ,该值在0.5-2.0之间,1为正常速度

);

}

}


(五)、完善程序欢迎程序:

一般来说,引导界面是出现第一次运行时出现的,之后不会再出现。所以需要记录是否是第一次使用程序,办法有很多,最容易想到的就是使用SharedPreferences来保存。
1、完善思路如下:
程序进入欢迎引导界面,在onCreate()方法中读取SharedPreferences里面的变量,如果SharedPreferences文件不存在,则返回true,继续执行欢迎引导界面的内容。否则,则将SharedPreferences里面的变量设置为false。此后每次进入欢迎界面读取SharedPreferences里面的变量,因为值是false,所以直接进入默认主界面,而不再执行引导界面了。


2、核心示例代码:(只需要在onCreate()方法中增加一部分代码即可)


private ViewPager viewPager_main;

private List<View> list = null;

privateint[] imgIds = newint[] { R.drawable.img012, R.drawable.img017,

R.drawable.img021, R.drawable.img030 };

private ImageView[] dots = null;

private SoundPool pool = null;

private HashMap<Integer, Integer> poolMap = null;

privatestaticfinal String SHAREDPREFERENCES_NAME = "prefs_log";

private SharedPreferences prefs = null;

booleanisFirstIn = false;




@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);




prefs = getSharedPreferences(SHAREDPREFERENCES_NAME, MODE_PRIVATE);

// 取得相应的值,如果没有该值,说明还未写入,用true作为默认值

isFirstIn = prefs.getBoolean("isFirstIn", true);

// 判断程序与第几次运行,如果是第一次运行则跳转到引导界面,否则跳转到主界面

if (!isFirstIn) {

Intent intent = new Intent(this, NextActivity.class);

startActivity(intent);

finish();

} else {

Editor editor = prefs.edit();

// 存入数据

editor.putBoolean("isFirstIn", false);

// 提交修改

editor.commit();

}




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




list = new ArrayList<View>();

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

ImageView imgView = new ImageView(this);

imgView.setImageResource(imgIds[i]);

list.add(imgView);

}

viewPager_main.setAdapter(new MyAdapter(list));




viewPager_main.setOnPageChangeListener(new OnPageChangeListener() {

@Override

publicvoid onPageSelected(int position) {

for (int j = 0; j < dots.length; j++) {

dots[j].setEnabled(true);

}

dots[position].setEnabled(false);

playSound(1);

}




@Override

publicvoid onPageScrolled(int arg0, float arg1, int arg2) {

}




@Override

publicvoid onPageScrollStateChanged(int arg0) {

}

});

initDots();

initSoundPool();

}



五、ViewPager+Fragment结合使用,实现仿QQ界面:

(一)、效果图:

(二)、布局文件核心代码:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">





<LinearLayout

android:layout_width="match_parent"

android:layout_height="98dp"

android:background="@drawable/top_theme_blue"

android:orientation="vertical">




<LinearLayout

android:layout_width="match_parent"

android:layout_height="48dp">




<ImageView

android:id="@+id/imageView1"

android:layout_width="36dp"

android:layout_height="36dp"

android:layout_gravity="center_vertical"

android:layout_marginLeft="10dp"

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




<TextView

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:layout_marginLeft="10dp"

android:text="Android开发团队"

/>




<ImageView

android:id="@+id/imageView2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:paddingLeft="10dp"

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

</LinearLayout>




<LinearLayout

android:id="@+id/layout_main_tabtitle"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:paddingBottom="5dp"

android:paddingTop="10dp">




<TextView

android:id="@+id/text_tab_activity"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_weight="1.0"

android:gravity="center"

android:text="动态"

android:textColor="#fff"

android:textSize="18sp"/>




<TextView

android:id="@+id/text_tab_groups"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_weight="1.0"

android:gravity="center"

android:text="群组"

android:textColor="#ddd"

android:textSize="18sp"/>




<TextView

android:id="@+id/text_tab_friends"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_weight="1.0"

android:gravity="center"

android:text="好友"

android:textColor="#ddd"

android:textSize="18sp"/>




<TextView

android:id="@+id/text_tab_chat"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_weight="1.0"

android:gravity="center"

android:text="会话"

android:textColor="#ddd"

android:textSize="18sp"/>

</LinearLayout>




<LinearLayout

android:id="@+id/layout_indicateline"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_gravity="bottom"

android:paddingBottom="2dp">




<TextView

android:layout_width="0dp"

android:layout_height="4dp"

android:layout_marginLeft="15dp"

android:layout_marginRight="15dp"

android:layout_weight="1"/>

<TextView

android:layout_width="0dp"

android:layout_height="4dp"

android:layout_marginLeft="15dp"

android:layout_marginRight="15dp"

android:layout_weight="1"/>

<TextView

android:layout_width="0dp"

android:layout_height="4dp"

android:layout_marginLeft="15dp"

android:layout_marginRight="15dp"

android:layout_weight="1"/>

<TextView

android:layout_width="0dp"

android:layout_height="4dp"

android:layout_marginLeft="15dp"

android:layout_marginRight="15dp"

android:layout_weight="1"/>

</LinearLayout>

</LinearLayout>




<android.support.v4.view.ViewPager

android:id="@+id/viewPager_main"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:background="#fff"/>




</LinearLayout>

(三)、Fragment文件核心代码:

publicclass MyFragment extends Fragment {

private String data = "";

private String defaultData = "default value";




static MyFragment newInstance(String info) {

MyFragment newFragment = new MyFragment();

Bundle bundle = new Bundle();

bundle.putString("data_msg", info);

newFragment.setArguments(bundle);

return newFragment;

}




@Override

publicvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Bundle bundle = getArguments();

if (bundle == null) {

data = defaultData;

} else {

data = bundle.getString("data_msg");

}

}




@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

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

TextView text_myfragment_info = (TextView) view

.findViewById(R.id.text_myfragment_info);

text_myfragment_info.setText(data);

return view;

}

}

(四)、Activity文件核心代码:

publicclass MainActivity extends FragmentActivity {

private ViewPager viewPager_main;

private List<Fragment> fragmentsList;

private TextView[] arr_titles;

private TextView[] arr_lines;




@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);




initIndicateLine();

initTextView();

initViewPager();

}




privatevoid initTextView() {

LinearLayout layout = (LinearLayout) findViewById(R.id.layout_main_tabtitle);

arr_titles = new TextView[4];

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

TextView textView = (TextView) layout.getChildAt(i);

arr_titles[i] = textView;

arr_titles[i].setEnabled(true);

arr_titles[i].setTag(i);

arr_titles[i].setOnClickListener(new OnClickListener() {




@Override

publicvoid onClick(View v) {

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

}

});

arr_titles[0].setEnabled(false);

}

}




privatevoid initViewPager() {

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

fragmentsList = new ArrayList<Fragment>();




Fragment activityfragment = MyFragment

.newInstance(" Activity Fragment欢迎您!");

Fragment groupFragment = MyFragment.newInstance(" Group Fragment欢迎您!");

Fragment friendsFragment = MyFragment

.newInstance(" Friends Fragment欢迎您!");

Fragment chatFragment = MyFragment.newInstance(" Chat Fragment欢迎您!");



fragmentsList.add(activityfragment);

fragmentsList.add(groupFragment);

fragmentsList.add(friendsFragment);

fragmentsList.add(chatFragment);




viewPager_main.setAdapter(new MyAdapter(getSupportFragmentManager(),

fragmentsList));

viewPager_main.setOnPageChangeListener(new OnPageChangeListener() {




@Override

publicvoid onPageScrollStateChanged(int position) {

}




@Override

publicvoid onPageScrolled(int arg0, float arg1, int arg2) {

}




@Override

publicvoid onPageSelected(int position) {

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

arr_titles[i].setEnabled(true);

arr_lines[i].setBackgroundColor(Color.TRANSPARENT);

}

arr_titles[position].setEnabled(false);

arr_lines[position].setBackgroundColor(Color.WHITE);

}




});

viewPager_main.setCurrentItem(0);

}




privatevoid initIndicateLine() {

LinearLayout layout = (LinearLayout) findViewById(R.id.layout_indicateline);

arr_lines = new TextView[4];

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

TextView view = (TextView) layout.getChildAt(i);

arr_lines[i] = view;

arr_lines[i].setTag(i);

arr_lines[i].setBackgroundColor(Color.TRANSPARENT);

}

arr_lines[0].setBackgroundColor(Color.WHITE);

}




class MyAdapter extends FragmentPagerAdapter {

private List<Fragment> fragmentsList = null;




public MyAdapter(FragmentManager fm) {

super(fm);

}




public MyAdapter(FragmentManager fm, List<Fragment> fragmentsList) {

super(fm);

this.fragmentsList = fragmentsList;

}




@Override

public Fragment getItem(int arg0) {

returnfragmentsList.get(arg0);

}




@Override

publicint getCount() {

returnfragmentsList.size();

}

}

}

【备注:】
通过setOffscreenPageLimit(int pagenum)来设置,默认情况下参数是1
比如:
viewPager_main.setOffscreenPageLimit(2)是否会预加载2个页面
viewPager_main.setOffscreenPageLimit(0)是否会不预加载页面


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

viewpager嵌套viewpager

viewpager嵌套viewpager需要重写viewpager的onTouchEvent方法 package com.lamp.view; import android.content.Con...

viewpager嵌套viewpager

重写父viewpager 在父ViewPager覆盖canScroll: @Override protected boolean canScroll(View v, boolean checkV,...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

viewpager

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等。那如...

viewPager

ViewPager(视图分页) 1、在布局文件中添加android.support.v4.view.ViewPager/> <android.support.v4.view.ViewPager ...

ViewPager

ViewPager是support v4包中的页面切换视图,使用时需要导入support.v4的包xml:声明 <android.support.v4.view.ViewPager ...

ViewPager

Android自动滚动 轮播循环的ViewPager 主要介绍如何实现ViewPager自动播放,循环滚动的效果及使用。顺便解决ViewPager嵌套(ViewPager inside ...

ViewPager

需要注意的是1.在无限循环中要注意什么时候addView什么时候removeView 2.无限循环的原理主界面<RelativeLayout xmlns:android="http://schema...

ViewPager

1.第一个ViewPager <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns...

关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较

关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较 实现简介 ViewPager ViewPager类提供了多界面切换的新效果。...

关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较

实现简介 ViewPager ViewPager类提供了多界面切换的新效果。新效果有如下特征: [1] 当前显示一组界面中的其中一个界面。 [2] 当用户通过左右滑动界面时,当前的屏幕显示当前...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)